使用grunt-contrib-less编译较less的文件将不起作用

我正在使用Grunt来构build我的Web项目。 我安装了grunt-contrib-less软件包,并将一个任务添加到我的grunt.initConfig({..});

 less : { options: { paths: ['js/base'] }, files: { 'js/base/*.css' : 'js/base/*.less' } } 

当我通过grunt less运行目标less ,它运行没有错误,但不编译less文件到一个CSS文件。

 Running "less:files" (less) task Done, without errors. 

我也通过节点安装了lessc软件包。 做lessc <source> <dest>工作正常。

目前我已经将文件选项直接指向一个包含less一个testing文件的目录。 即使我将整个文件名写入文件选项 ,它也没有发生什么…

后来我想扫描整个js目录并编译所有新的修改的* .less文件。

我已经安装了以下版本:

 grunt-cli v0.1.6 grunt v0.4.0 node v0.8.7 npm 1.1.49 

BR,mybecks

glob模式js/base/*.css不匹配任何文件,因此没有目的地。 通常,像这样的任务需要将多个input合并为一个输出。 另外,请记住, less一点是一项多任务 ,把files作为一个小孩子是不是你所期望的。 (它将其视为目标,而不是src / dest映射)

如果你想将.less的1-1变换成.css,你可以使用dynamic扩展 。 (或者你可以手动定义每个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" } } 

我用Anthonies解决scheme,但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"

这适用于我,但修改以反映这种情况:

 less: { options: { paths: ["js/base"] }, files: { expand: true, cwd: "js/base", src: ["**/*.less"], dest: "js/base", ext: ".css" } },