[英]Webpack css loader issues "!!../../node_modules/css-loader/index.js!./main.css"
[英]Enabling CSS Modules from css-loader disallows importing node_modules CSS
我在webpack上有一个CSS模块规则
{
test: /\.css$/,
loader: 'style-loader!css-loader?modules=true&localIdentName=[name]__[local]___[hash:base64:5]'
}
启用modules modules=true
会给我以下错误:
ERROR in ./node_modules/css-loader?modules=true&localIdentName=[name]__[local]___[hash:base64:5]!./src/global.css
Module not found: Error: Can't resolve '~/antd/dist/antd.css' in '[REDACTED]'
@ ./node_modules/css-loader?modules=true&localIdentName=[name]__[local]___[hash:base64:5]!./src/global.css 3:10-141
@ ./src/global.css
@ ./src/entry.jsx
这发生在CSS线上
@import '~/antd/dist/antd.css';
antd
是antd
中的依赖node_modules
。
但是,从加载器中删除modules=true
似乎不会从此导入行生成错误。
我需要CSS模块,我需要导入这个CSS。 我怎样才能解决这个问题?
您可以通过设置配置来停止css-loader来解释@import语句,如下所示
{
test: /\.css$/,
use: [
{
loader:'style-loader'
},
{
loader: 'css-loader',
options: {
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]',
import: false
}
}
]
}
不幸的是,这是CSS-loader的一个已知问题 。 启用模块时,@ @import
s无法正常工作。
对此有一个丑陋的解决方案,但仍然是一个解决方案。
我做的是用这个替换了规则:
{
test: /^((?!\.module).)*css$/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader',
}
]
},
{
test: /\.module.css$/,
loader: 'style-loader!css-loader?modules=true&localIdentName=[name]__[local]___[hash:base64:5]'
},
在上面的例子中需要@import
CSS文件现在可以使用,但是这些文件不能作为CSS模块在javascript中导入。
应该是模块化的CSS文件必须以文件扩展名.module.css
结尾.module.css
使CSS模块正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.