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

时间:2013-02-26 16:47:11

标签: node.js less gruntjs

我正在使用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

3 个答案:

答案 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"
    }
},