局部組件引入局部css樣式,實現css模塊化開發; 減免全局污染css
啓用css modulesnode
{
loader: 'css-loader',
options: {
modules: true,
localIdentName: '[local]___[hash:base64:5]'
}
}
複製代碼
modules: true,啓用模塊化webpack
localIdentName: '[local]___[hash:base64:5]',按照給定算法所生成的樣式類名.有效避免類名重複web
使用css modules算法
/* index.less */
.divContainer { :local(.divContainer) {
background: #fff; 等價於 background: #fff;
} }
/* xx.jsx*/
import styles from './index.less'; // 引入局部less文件
<div className={styles.divContainer}>...</div> // 將類名綁定在元素上
/*最後生成文件中對應的樣式類名*/
<div class="divContainer___34Uoz">... </div>
複製代碼
:global {
.divContainer { :global(.divContainer) {
background: #fff; 等價於 background: #fff;
} }
}
複製代碼
避免轉換引入插件中的css樣式bash
{
/*webpack.config.js*/
// 對於node_modules文件夾之外的less文件, 開啓css module模式
test: /\.less?$/,
exclude: /node_modules/,
use: [MiniCssExtractPlugin.loader, {
loader: 'css-loader',
options: {
modules: true,
localIdentName: '[local]___[hash:base64:5]'
}
}, 'postcss-loader', {
loader: 'less-loader',
options: {
modifyVars: theme
}
}]
},
// 對於node_modules中的less文件,不開啓css module模式
{
test: /\.less?$/,
include: /node_modules/,
use: [MiniCssExtractPlugin.loader, css-loader, 'postcss-loader', less-loader'] } 複製代碼