我正在使用Grunt构建我的Web项目。我安装了grunt-contrib-less
个包,并在我的grunt.initConfig({..});
less : {
options: {
paths: ['js/base']
},
files: {
'js/base/*.css' : 'js/base/*.less'
}
}
当我通过grunt less
运行目标 less 时,它运行时没有错误,但没有将较少的文件编译为css文件。
Running "less:files" (less) task
Done, without errors.
我也通过节点安装了 lessc 包。做lessc <source> <dest>
可以正常工作。
目前我已将文件选项直接指向一个目录,其中包含少量文件供测试。即使我将整个文件名写入 files选项,它也不会发生......
稍后我想扫描整个js目录并编译所有新修改的* .less文件。
我安装了以下版本:
grunt-cli v0.1.6
grunt v0.4.0
node v0.8.7
npm 1.1.49
BR, mybecks
答案 0 :(得分:45)
glob模式js/base/*.css
与任何文件都不匹配,因此没有目标。通常,像这样的任务期望多个输入组合成单个输出。另外,请注意less
是多任务,将files
作为less
的孩子并不是您所期望的。 (它将其视为目标,而不是src / dest地图)
如果您希望将.less转换为.css,则可以使用dynamic expansion。 (或者您可以手动定义每个src / dest对,但是谁想要这样做?)
在你的情况下:
less: {
options: {
paths: ['js/base']
},
// target name
src: {
// no need for files, the config below should work
expand: true,
cwd: "js/base",
src: "*.less",
ext: ".css"
}
}
答案 1 :(得分:9)
我使用了Anthonies解决方案,但stil有错误
Warning: Object true has no method indexOf
如果我更改了expand true
作为秒的订单,则会给我错误
Unable to read "less" file
其中“less”是我列表中第一项的值。
我通过将文件更改为如下数组来解决它:
less: {
options: {
paths: ["js/base"]
},
files: [{
expand: true,
cwd: "js/base",
src: ["**/*.less"],
dest: "js/base",
ext: ".css"
}]
},
我使用了"grunt-contrib-less" : "^0.11.0"
答案 2 :(得分:6)
这对我有用,但经过修改以反映这种情况:
less: {
options: {
paths: ["js/base"]
},
files: {
expand: true,
cwd: "js/base",
src: ["**/*.less"],
dest: "js/base",
ext: ".css"
}
},