предисловие
В этой статье описываетсяcss-loader
включиcss模块
После функции, как не конфликтовать с файлами стилей в упомянутом пакете npm.
Напримерantd-mobile
Внедрение пакетов npm. Без специальной обработки файл стилей будет переведен вcss module
.
1. Причина проблемы
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules: true,
localIdentName: '[hash:base64:6]'
}
},
'postcss-loader'
]
}
Приведенный выше фрагмент кода, взятый изwebpack
настроенmodule.rule
.
Как можно заметитьwepack
При компиляции столкнулся.css
Файлы в конце будут переданыpostcss-loader
,css-loader
а такжеstyle-loader
Процесс по очереди.
потому чтоcss-loader
включенныйcss模块
функцию, чтобы все обрабатывалосьcss
файл, имя класса будет изменено.
2. Первоначальное улучшение
использовать
exclude
а такжеinclude
различать
1.node_module
файлы в папке, чтобы не быть в данный моментrule
иметь дело с
{
test: /\.css$/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader',
options: {
modules: true,
localIdentName: '[hash:base64:6]'
}
},
{
loader: 'postcss-loader'
}
],
exclude:[path.resolve(__dirname, '..', 'node_modules')]
}
Как показано выше,node_module
файлы в папке, используйтеexclude
исключен из текущегоrule
для обработки.
2. Отдельная обработкаnode_module
css файл внутри
{
test: /\.css$/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader'
},
{
loader: 'postcss-loader'
}
],
include:[path.resolve(__dirname, '..', 'node_modules')]
}
Три, обновленная версия, поддержкаcss module
Режим смешивания и нормальный режим
1. Различать два режима с именем файла
- *.global.css
普通模式
- *.css
css module模式
единый здесьglobal
ключевые слова для идентификации.
2. Сопоставьте файлы с регулярными выражениями
// css module
{
test: new RegExp(`^(?!.*\\.global).*\\.css`),
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader',
options: {
modules: true,
localIdentName: '[hash:base64:6]'
}
},
{
loader: 'postcss-loader'
}
],
exclude:[path.resolve(__dirname, '..', 'node_modules')]
}
// 普通模式
{
test: new RegExp(`^(.*\\.global).*\\.css`),
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader',
},
{
loader: 'postcss-loader'
}
],
exclude:[path.resolve(__dirname, '..', 'node_modules')]
}
4. Другие вопросы
less
В использованииcss module
когда, даurl
Возник конфликт при разборе , можно использоватьresolve-url-loader
Чтобы решить ее, перейдите непосредственно к коду:
test: /\.less/,
use: [
{
loader: "style-loader"
},
{
loader: "css-loader",
options: {
sourceMap: true,
importLoaders: 2
}
},
{
loader: "postcss-loader",
options: {
sourceMap: true
}
},
{
loader: "resolve-url-loader",
options: {
sourceMap: true
}
},
{
loader: "less-loader",
options: {
sourceMap: true
}
}
]