저는 webpack에 새해졌습니다. 도와주세요. 내가 뭘 잘못했는지 모르겠다. 어떤 오류도 보여주지 않습니다 !!! 이것은 나의 webpack.config.js 파일입니다. bundle.js를 생성하지만 styles.scss에서 styles.css를 만들지 않습니다. 웹팩이 필요한 경우 static/css/에 style.css가 생성됩니다. 폴더 구조는 -Webpack은 styles.scss에서 styles.css를 만들지 않습니다.
-package.json
-webpack.config.js
-static/
css/
js/
src/main.js
sass/style.scss
module.exports = {
entry: {
app: path.resolve(__dirname, './static/js/src/main.js'),
},
output: {
path: path.resolve(__dirname, './static/js/'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env', 'es2015', 'react'],
plugins: [require('babel-plugin-transform-object-rest-spread')]
}
}
},
{
test: /\.scss$/,
exclude: /node_modules/,
use: ExtractTextPlugin.extract({
use: ["css-loader", "sass-loader"],
fallback: "style-loader",
publicPath: path.resolve(__dirname, '/static/css')
})
}
]
},
plugins: [
new ExtractTextPlugin({
filename: 'styles.css',
disable: false,
allChunks: true
}),
//reduce react size
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
screw_ie8: false,
warnings: false
}
}),
new webpack.optimize.AggressiveMergingPlugin()
]
};
이 내 노드 미리 종속성 -
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-preset-env": "^1.6.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"css-loader": "^0.28.7",
"cssnano": "^3.10.0",
"extract-text-webpack-plugin": "^3.0.2",
"html-webpack-plugin": "^2.30.1",
"node-sass": "^4.7.2",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"react": "^16.2.0",
"react-dom": "^16.2.0",
"sass-loader": "^6.0.6",
"style-loader": "^0.19.1",
"webpack": "^3.10.0",
"webpack-dev-server": "^2.9.7"
},
감사합니다.
예! 그것은 효과가 있었다. 고마워. 하지만 static/js/폴더에 "styles.css"를 저장합니다. bundle.js와 styles.css는 동일한 static/js/폴더에 있습니다. 하지만 정적/CSS/폴더에 저장하고 싶습니다. 어떻게 말해 줄 수 있니? – Shahjalal
Webpack의'output' 폴더는 루트 폴더 여야합니다. 그러면 개별 로더가 특정 폴더 경로를 사용할 수 있습니다. 귀하의 경우 : 1.'output.path'를 수정하여'path.resolve (__ dirname, './static /')'를 반영하십시오. 2. 개별 로더는 예를 들어'output.path'의 상대 경로를 사용할 수 있습니다. 'ExtractTextPlugin'은'filename'을'css/styles.css' 경로로 사용할 수 있습니다. 3. 사용하는 동안 'ExtractTextPlugin'에 대한'publicPath'를 제거하십시오. 4.'output.filename'을 수정하여'js/bundle.js'를 사용합니다. –