webpack => 5.97.1 "webpack-cli": "5.1.4" "style-loader": "^4.0.0"
"css-loader": "^7.1.2" "sass": "^1.83.0" "sass-loader": "^16.0.4"
// 开发模式配置
{
test: /\.(sc|sa)ss$/i,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader',
options: {
importLoaders: 2,
modules: {
localIdentName: '[name]__[local]--[hash:base64:5]',
namedExport: false,
exportLocalsConvention: 'camelCase'
},
esModule: false
}
},
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: [
'postcss-preset-env',
'postcss-import',
'autoprefixer'
]
}
}
},
{
loader: 'sass-loader',
options: {
additionalData: `@use "@/css/variables.scss"; @use "@/css/mixins.scss";`
}
}
]
}
模块规则配置
这是一个Webpack的module.rule
配置,用于定义如何处理特定文件类型的模块。
匹配规则(test)
- 匹配模式:
/\.(sc|sa)ss$/i
- 这个正则表达式用于匹配所有以
.scss
或.sass
结尾的文件,忽略大小写。
- 这个正则表达式用于匹配所有以
使用的加载器(use)
1. style-loader
- 作用:将CSS代码注入到JavaScript中,使其能够被浏览器识别并应用到页面上。
- 配置:无额外配置。
2. css-loader
- 作用:将CSS文件转换成CommonJS模块。
- 配置:
importLoaders
:2,表示在处理CSS时,会应用后面两个loader(即postcss-loader
和sass-loader
)。modules
:localIdentName
:[name]__[local]--[hash:base64:5]
,用于生成CSS类名,包含文件名、本地名称和哈希值。namedExport
:false
,表示不使用命名导出。exportLocalsConvention
:camelCase
,将CSS中的类名转换为驼峰命名法。
esModule
:false
,表示不使用ES模块。
3. postcss-loader
- 作用:使用PostCSS处理CSS文件。
- 配置:
postcssOptions
:plugins
:包含了三个PostCSS插件:postcss-preset-env
:提供未来CSS规范的polyfill。postcss-import
:允许使用@import
语法导入CSS文件。autoprefixer
:自动添加浏览器前缀。
4. sass-loader
- 作用:将SASS或SCSS文件编译成CSS。
- 配置:
additionalData
:在编译SASS/SCSS之前,引入两个SCSS文件,分别包含全局变量和混入(mixins)。@use "@/css/variables.scss";
:引入全局变量。@use "@/css/mixins.scss";
:引入全局混入。