我正在尝试将现有项目的构建系统从迁移gulp到webpack。
当前,它只有一个入口点.less文件,该文件将导入其他各种文件,如下所示:
@import 'bower_components/bootstrap/less/bootstrap.less';
@import 'components/**/*.less';
Run Code Online (Sandbox Code Playgroud)
这将写出一个包含所有找到的.less文件的css文件。它使用https://github.com/just-boris/less-plugin-glob允许glob。
在中的WebPack我已经得到尽可能尝试使用的组合less-loader,css-loader并style-loader实现同样的事情。在modules我的WebPack的配置看起来像这样的部分:
var lessPluginGlob = require('less-plugin-glob');
...
{
test: /\.less$/,
use: [
'style-loader',
{ loader: 'css-loader', options: { importLoaders: 1 } },
{ loader: 'less-loader', options: { lessPlugins: [lessPluginGlob] }}
]
},
Run Code Online (Sandbox Code Playgroud)
并且我正在尝试减少我的“ entry”文件,如下所示:
require('./app.less');
Run Code Online (Sandbox Code Playgroud)
但是无论我做什么我都会得到这个:
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'
Run Code Online (Sandbox Code Playgroud)
谁能指出我正确的方向?
我让它像这样工作:
...
{
loader: 'less-loader',
options: {
paths: [
path.resolve(path.join(__dirname, 'app'))
],
plugins: [
require('less-plugin-glob')
]
}
}
Run Code Online (Sandbox Code Playgroud)
查看源代码:https://github.com/webpack-contrib/less-loader/blob/master/src/getOptions.js#L22
我不知道这是否是预期行为,但如果paths未指定 createWebpackLessPlugin,则在插件之前首先执行less-plugin-glob。它会抛出一个错误,因为createWebpackLessPlugin对下一个插件一无所知。
所以我的解决方案就是简单地指定pathsmakeless-plugin-glob首先执行。
工作示例:https ://github.com/notagency/webpack2-with-less-plugin-glob
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |