javascript - Laravel Mix:自定义少加载器处理两次
问题描述
我正在尝试添加less-loader
到我的 Laravel Mix 配置中,因为我的一些导入模块需要它。
我尝试了以下方式,但是在启动开发环境时,看起来我的less文件被处理了两次:
./node_modules/antd/es/style/index.less 中的错误 (./node_modules/css-loader!./node_modules/postcss-loader/src??ref--12-2!./node_modules/less-loader/ dist/cjs.js!./node_modules/style-loader!./node_modules/css-loader!./node_modules/less-loader/dist/cjs.js??ref--15-2!./node_modules/antd/ es/style/index.less) 模块构建失败(来自 ./node_modules/less-loader/dist/cjs.js):
var content = require("!!../../../css-loader/index.js!../../../less-loader/dist/cjs.js??ref--15- 2!./index.less");
无法识别的输入
有谁知道问题出在哪里或我做错了什么?
mix.reactTypeScript('resources/js/app.tsx', 'public/js')
.less('resources/css/app.css', 'public/css')
.copyDirectory('resources/img', 'public/img')
.webpackConfig({
module: {
rules: [
{
test: /\.less$/,
loader: [
'style-loader',
'css-loader',
{
loader: 'less-loader',
options: {
javascriptEnabled: true
}
}
]
}
]}
})
.version();
解决方案
这对我有用
假设该javascriptEnabled
选项是必需的,您可以将其放入 mix less 函数中
.less('resources/css/app.css', 'public/css', {
lessOptions: { javascriptEnabled: true }
})
对于其他的less文件,看来我们需要修改现有的less规则
Mix.listen("configReadyForUser", function (config) {
var ruleIndex = config.module.rules.findIndex(function (rule) {
return rule.test.toString() === /\.less$/.toString();
});
var loaderIndex = config.module.rules[ruleIndex].loaders.findIndex(function (loader) {
return loader === 'less-loader';
});
config.module.rules[ruleIndex].loaders[loaderIndex] = {
loader: 'less-loader',
options: {
lessOptions: {
javascriptEnabled: true
}
}
}
});
推荐阅读
- sql - 审计表和外键
- ios - 当我在 Xcode 中“运行”项目时,有没有办法运行“swiftlint autocorrect”?
- java - 请求java位置权限
- django - 类型错误模块对象在 django 中不是可迭代的错误
- javascript - 单击时如何更改按钮的背景颜色
- r - 如何在一个带有多张工作表的 xlsx 文件中下载 R Shiny 中的多个可编辑数据表输出
- c# - 如何在按钮单击时将网格复选框值存储在数组中
- spring - Authentication Manager 在方法安全操作时为 NoOpAuthenticationManager。为什么?
- javascript - 对于使用 nodejs 和 express 的后端代码,为了运行它,“node server.js”工作但“永远启动 server.js”不工作
- visual-studio-code - Visual Studio Code 中选项卡中的文本颜色