предисловие
В этой статье описывается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_modulecss файл внутри
{
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
}
}
]