मैं उपयोग कर रहा हूँ webpack एक का प्रबंधन करने के reactjs परियोजना। मैं वेबपैक द्वारा जावास्क्रिप्ट में छवियों को लोड करना चाहता हूं file-loader
। नीचे webpack.config.js है :
const webpack = require('webpack');
const path = require('path');
const NpmInstallPlugin = require('npm-install-webpack-plugin');
const PATHS = {
react: path.join(__dirname, 'node_modules/react/dist/react.min.js'),
app: path.join(__dirname, 'src'),
build: path.join(__dirname, './dist')
};
module.exports = {
entry: {
jsx: './app/index.jsx',
},
output: {
path: PATHS.build,
filename: 'app.bundle.js',
},
watch: true,
devtool: 'eval-source-map',
relativeUrls: true,
resolve: {
extensions: ['', '.js', '.jsx', '.css', '.less'],
modulesDirectories: ['node_modules'],
alias: {
normalize_css: __dirname + '/node_modules/normalize.css/normalize.css',
}
},
module: {
preLoaders: [
{
test: /\.js$/,
loader: "source-map-loader"
},
],
loaders: [
{
test: /\.html$/,
loader: 'file?name=[name].[ext]',
},
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader?presets=es2015',
},
{test: /\.css$/, loader: 'style-loader!css-loader'},
{test: /\.(jpe?g|png|gif|svg)$/i, loader: "file-loader?name=/public/icons/[name].[ext]"},
{
test: /\.js$/,
exclude: /node_modules/,
loaders: ['babel-loader?presets=es2015']
}
]
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
},
output: {
comments: false,
},
}),
new NpmInstallPlugin({
save: true // --save
}),
new webpack.DefinePlugin({
"process.env": {
NODE_ENV: JSON.stringify("production")
}
}),
],
devServer: {
colors: true,
contentBase: __dirname,
historyApiFallback: true,
hot: true,
inline: true,
port: 9091,
progress: true,
stats: {
cached: false
}
}
}
मैंने इस लाइन का उपयोग छवि फ़ाइलों को लोड करने के लिए और उन्हें डिस्टर्ब / पब्लिक / आइकन डायरेक्टरी में कॉपी करने और उसी फ़ाइल नाम को रखने के लिए किया।
{test: /\.(jpe?g|png|gif|svg)$/i, loader: "file-loader?name=/public/icons/[name].[ext]"}
लेकिन इसका उपयोग करते समय मुझे दो समस्याएं हैं। जब मैं webpack
कमांड चलाता हूं , तो छवि फ़ाइल को डिस्टर्ब / पब्लिक / आइकन / डायरेक्टरी में अपेक्षित रूप से कॉपी किया गया था । हालाँकि इसे इस फ़ाइल नाम "df55075baa16f3827a57549950901e90.png" के साथ डिस्टर्ब डायरेक्टरी में भी कॉपी किया गया था।
एक और समस्या यह है कि मैंने इस छवि फ़ाइल को आयात करने के लिए नीचे दिए गए कोड का उपयोग किया था लेकिन यह ब्राउज़र पर नहीं दिख रहा है। अगर मैं img टैग पर url 'public / icons / imageview_item_normal.png' का उपयोग कर रहा हूं, तो यह ठीक काम करता है। छवि फ़ाइल से आयातित ऑब्जेक्ट का उपयोग कैसे करें?
import React, {Component} from 'react';
import {render} from 'react-dom';
import img from 'file!../../public/icons/imageview_item_normal.png'
export default class MainComponent extends Component {
render() {
return (
<div style={styles.container}>
download
<img src={img}/>
</div>
)
}
}
const styles = {
container: {
width: '100%',
height: '100%',
}
}