我正在尝试将现有项目的构建系统从gulp
迁移到webpack
。
它目前有一个入口点.less文件,它导入各种其他文件,如下所示:
@import 'bower_components/bootstrap/less/bootstrap.less';
@import 'components/**/*.less';
这会写出一个css文件,其中包含找到的所有.less文件。它使用https://github.com/just-boris/less-plugin-glob来允许全局。
在Webpack中,我尝试使用less-loader
,css-loader
和style-loader
的组合来实现同样的目标。我的webpack配置的modules
部分如下所示:
var lessPluginGlob = require('less-plugin-glob');
...
{
test: /\.less$/,
use: [
'style-loader',
{ loader: 'css-loader', options: { importLoaders: 1 } },
{ loader: 'less-loader', options: { lessPlugins: [lessPluginGlob] }}
]
},
我试图要求我的"条目"像这样的文件少:
require('./app.less');
但无论我做什么,我都会得到这个:
ERROR in ./~/css-loader?{"importLoaders":1}!./~/less-loader?{"lessPlugins":[{}]}!./app/app.less
Module build failed: Can't resolve './components/**/*.less' in '/Users/matt/web-app/app'
任何人都可以指出我正确的方向吗?
答案 0 :(得分:3)
我已经让它像这样工作:
...
{
loader: 'less-loader',
options: {
paths: [
path.resolve(path.join(__dirname, 'app'))
],
plugins: [
require('less-plugin-glob')
]
}
}
查看源代码:https://github.com/webpack-contrib/less-loader/blob/master/src/getOptions.js#L22
我不知道这是否是一种内心行为,但如果paths
未指定createWebpackLessPlugin
,则先{I}}插件执行less-plugin-glob
。它会引发错误,因为createWebpackLessPlugin
对下一个插件一无所知。
所以我的解决方案只是指定paths
使less-plugin-glob
先执行。
工作示例:https://github.com/notagency/webpack2-with-less-plugin-glob