我有一个项目,我必须将所有模块构建到一个文件中,并将其拆分为模块。但我不需要css文件的模块,除了一个共同的。
我的文件:
文件'a.js'
import 'a.css';
import b from 'b.js';
import c from 'c.js';
// some code
字符串
文件'b.js'
import 'b.css';
import d from 'd.js';
// some code
型
文件'c.js'
import 'c.css';
import e from 'e.js';
// some code
型
文件'd.js'
import 'd.css';
// some code
型
文件'e.js'
import 'e.css';
// some code
型
我的webpack.config.js
module.exports = {
entry: {
main: './src/a.js',
c: {
import: './src/c.js',
},
b: {
import: './src/b.js',
},
a: {
import: './src/a.js',
dependOn: ['b', 'c']
}
},
output: {
filename: (pathData) => {
if (pathData.chunk.name === 'main') {
return '[name].js';
}
return 'modules/[name].js';
},
path: path.resolve(__dirname, 'dist')
},
optimization: {
splitChunks: {
chunks: chunk => chunk.name !== 'main'
}
},
devtool: 'inline-source-map',
module: {
rules: [
{
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader'
}
},
{
test: /\.scss$/i,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: ['autoprefixer']
},
},
},
{
loader: 'sass-loader',
options: {
sassOptions: {
outputStyle: 'expanded'
}
}
}
],
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: (pathData) => {
return pathData.chunk.name === 'main' ? 'main.css' : 'modules/[name].css';
},
})
]
};
型
我的'dist'目录
dist:
main.js
main.css
modules:
a.js
a.css
b.js
b.css
c.js
c.css
型
我想MiniCssExtractPlugin不创建'modules/a.css',' modules/b.css','modules/c.css'文件
dist:
main.js
main.css
modules:
a.js
b.js
c.js
型
1条答案
按热度按时间gojuced71#
请参见提取单个文件中的所有CSS
可以使用
optimization.splitChunks.cacheGroups
在一个CSS文件中提取CSS。“例如:
项目结构:
字符串
注意:模块路径应以
./
开头,例如./a.css
与./b.js
.如果您汇入的模块是这样的import b from 'b'
,'b'
会被视为模块请求,并在模块目录(node_modules
)中解析第1条.选举主席
应在当前目录中解析的请求必须以.“/”开头
第2条.选举主席团成员
以名称开头的请求将被视为模块请求,并在模块目录(
node_modules
)中解析src/a.js
:型
src/b.js
:型
src/c.js
:型
src/d.js
:型
src/e.js
:型
src/a.css
:型
src/b.css
:型
src/c.css
:型
src/d.css
:型
src/e.css
:型
webpack.config.js
:型
建置记录档:
型
产出
dist/main.css
:型
package.json
:型