【发布时间】:2019-03-05 05:22:30
【问题描述】:
我有一些 JS 和 SCSS 文件。我需要 Webpack 4 将每个 JS 条目捆绑到一个 JS 文件,并将每个 SCSS 条目捆绑到一个 CSS 文件。 JS 文件不导入 SCSS 文件。我尝试使用以下webpack.config.js:
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
entry: {
scriptFoo: './src/js/scriptFoo.js',
scriptBar: './src/js/scriptBar.js',
// ...
styleBaz: './src/css/styleBaz.scss',
styleBaq: './src/css/styleBaq.scss'
// ...
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: 'babel-loader'
},
{
test: /\.(scss|sass)$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader',
'sass-loader'
]
}
]
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'dist')
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css'
})
]
};
工作正常,Webpack 将编译好的文件放到dist 目录下。但它也会为dist 目录中的每个 SCSS 文件创建一个多余的虚拟 JS 文件:
webpack.config.js
src/
js/
scriptFoo.js
scriptBar.js
...
css/
styleBaz.scss
styleBaq.scss
...
dist/
scriptFoo.js
scriptBar.js
...
styleBaz.css
styleBaz.js // Excess
styleBaq.css
styleBaq.js // Excess
...
如何让Webpack不创建多余的JS文件?
【问题讨论】:
-
理论上每个 css 都应该包含在它被使用的地方,或者如果它在你的入口点中是全局的。当 css 是入口点时 Webpack 创建虚拟 js 是一个已知错误,尚未修复。这取决于他们。
标签: javascript webpack webpack-4