我正在使用Webpack 3和CSS模块。我为“.local.css”和“local.scss”文件(本地文件)设置了不同的加载器,为我的全局“.css或.less”文件设置了另一组加载器。
现在我还有一个文件类型,一个gloabl“.scss”文件。我不想为.scss文件创建另一组加载器,因为加载器与用于全局“.css和.less”文件的加载器相同。
只有一个区别,如果文件是“.less”,我将使用less loader
,如果是“.scss”,那么我将使用sass loader
。
{
test: /\.local\.(css|scss)$/,
use: ExtractLocal.extract({
fallback: 'style-loader?sourceMap',
use: [
{
loader: 'css-loader',
options: {
sourceMap: true,
minimize: true,
modules: true,
importLoaders: 1,
localIdentName: '[local]___[name]__[hash:base64:5]',
},
},
{
loader: 'postcss-loader',
options: {
sourceMap: true,
},
},
{
loader: 'sass-loader',
options: {
sourceMap: true,
},
},
{
loader: 'sass-resources-loader',
options: {
resources: [ path.resolve(__dirname, './src/client/styling/styles/variables.scss'), ],
},
},
],
}),
},
{
test: /^((?!\.local).)+\.(css|less)$/,
use: ExtractGlobal.extract({
fallback: 'style-loader?sourceMap',
use: [
{
loader: 'css-loader',
options: {
sourceMap: true,
minimize: true,
},
},
{
loader: 'postcss-loader',
options: {
sourceMap: true,
},
},
{
loader: 'less-loader',
options: {
sourceMap: true,
},
},
],
}),
},
我该怎么做?我可以以某种方式检查文件类型并使用适当的加载器,例如?
{
test: /^((?!\.local).)+\.(css|less|scss)$/,
use: ExtractGlobal.extract({
fallback: 'style-loader?sourceMap',
use: [
{
loader: 'css-loader',
options: {
sourceMap: true,
minimize: true,
},
},
{
loader: 'postcss-loader',
options: {
sourceMap: true,
},
},
if(test === '.less') {
loader: 'less-loader',
options: {
sourceMap: true,
},
} else {
loader: 'sass-loader',
options: {
sourceMap: true,
},
}
],
}),
},
我知道我的例子没有意义,只是想展示我的目标。