webpack - 对 .scss 和 .less 文件使用不同的加载器
问题描述
我正在使用 Webpack 3 和 CSS 模块。我有一个用于“.local.css”和“local.scss”文件(本地文件)的不同加载程序,以及用于我的全局“.css 或 .less”文件的另一组加载程序。
现在我多了一个文件类型,一个全局的“.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,
},
}
],
}),
},
我知道我的例子没有意义,只是想证明我的目标。
解决方案
推荐阅读
- python - 输入所有必要的值后,python 拒绝执行 while 循环
- html - 如何缩小导航栏列表中对象之间的间隙?
- html - 如何创建一个只有图像而没有其他内容的网页
- sql - Oracle ORA-00905:缺少关键字 - 选择自
- mongodb - 如果我可以使用 AWS 安全组来保护我的 MongoDB EC2 实例,我真的需要 VPC 吗?
- verilog - 为什么不遵守icarus verilog指定的时间?
- c# - 在 gRPC 服务实现中获取 DbContext 的正确方法
- json - 未捕获(承诺中)TypeError:将循环结构转换为 JSON
- ios - 在 SwiftUI iOS 应用程序中订阅 MQTT 主题
- java - Android 应用的 onclick 弹出窗口的名称