css - Webpack 正在导入其他包的 CSS
问题描述
我有一个 Webpack 设置来构建不同的包,并将包使用的所有 CSS 放在一个 CSS 文件中。
问题是 Webpack 将所有包的所有 CSS 放在一起。
小米项目配置如下。
webpack.config.js
module.exports = {
entry: {
'bundle-a': './src/bundle-a.ts',
'bundle-b': './src/bundle-b.ts'
},
...
plugins: [
new MiniCssExtractPlugin(),
],
module: {
rules: [
{
test: /\.ts(x?)$/,
include: path.resolve(__dirname, 'src'),
use: ['ts-loader']
},
{
test: /\.css$/,
include: path.resolve(__dirname, 'src'),
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
modules: 'local'
}
}
]
}
]
}
};
src/bundle-a.ts
import style from './bundle-a.css';
...
src/bundle-a.css
.class-bundle-a {
...
}
src/bundle-b.js
import style from './bundle-b.css';
...
src/bundle-b.css
.class-bundle-b {
...
}
当我构建项目时,我得到以下 CSS 文件。
dist/bundle-a.css
.class-bundle-a {
...
}
.class-bundle-b {
...
}
dist/bundle-b.css
.class-bundle-a {
...
}
.class-bundle-b {
...
}
我希望dist/bundle-a.css
只有在 .cs 中导入了 CSS src/bundle-a.ts
,但我也得到了src/bundle-b.ts
由src/bundle-b.css
. 如果我使用style-loader也会发生同样的情况。
我想知道这是预期的行为还是我的代码中有一些错误。
解决方案
您可以添加附加规则。这有点多余,但对我有用:
module.exports = {
entry: {
'bundle-a': './src/bundle-a.ts',
'bundle-b': './src/bundle-b.ts'
},
// ...
module: {
rules: [
// ...
{
test: /bundle-a\.(sa|sc|c)ss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
'css-loader',
'postcss-loader',
'sass-loader',
],
},
{
test: /bundle-b\.(sa|sc|c)ss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
'css-loader',
'postcss-loader',
'sass-loader',
],
},
// ..
]
},
optimization: {
// ...
},
plugins: [
// ...
]
};
推荐阅读
- php - 如何以表格格式设置我的 php 电子邮件回复样式?
- python - ModuleNotFoundError:没有名为“瓶子”的模块
- angular - Angular ReactiveForm 显示值 OnPush
- android - Android:构建时指向 DI:dagger 的“构建失败”错误
- java - Html 输入数字仅接受自然数或带有 ,25 或 ,5
- angular - 我应该如何使用 transloco i18n(internationalization) 库更改 Material Table 标题以进行分页和页面范围、下一个、上一个按钮?
- r - 从 VBA 运行 R 脚本
- angular-material - 使用 ng generate 生成材质组件时,找不到 NgModule 错误
- python - 如何合并 matplotlib.table 中的单元格
- oracle - 我们可以从 oracle 中的匿名块调用过程或函数吗?