14

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

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

当我通过lessgrunt less运行目标时,它运行时没有错误,但不会将 less 文件编译为 css 文件。

Running "less:files" (less) task

Done, without errors.

我也通过节点安装了lessc包。做lessc <source> <dest>的很好。

目前我已经将files 选项直接指向一个包含一个用于测试的文件的目录。即使我将整个文件名写入files 选项,它也不会发生任何事情......

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

我已经安装了以下版本:

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

BR,迈贝克

4

3 回答 3

45

glob 模式js/base/*.css不匹配任何文件,因此没有目标。通常,像这样的任务期望多个输入组合成一个输出。另外,请记住这less是一项多任务files,并且作为一个孩子的投入less并不是你所期望的。(它把它当作一个目标,而不是一个 src/dest 地图)

如果您想要 .less 到 .css 的 1-1 转换,您可以使用动态扩展。(或者您可以手动定义每个 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"
    }
}
于 2013-02-26T16:58:11.540 回答
9

我使用了 Anthonies 解决方案,但仍然有错误

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"

于 2014-07-08T09:55:43.413 回答
6

这对我有用,但经过修改以反映这种情况:

less: {
    options: {
        paths: ["js/base"]
    },
    files: {
        expand: true,
        cwd: "js/base",
        src: ["**/*.less"],
        dest: "js/base",
        ext: ".css"
    }
},
于 2014-05-15T01:50:16.253 回答