Grunt中watch和less配合控制*.less文件的自动编译,怎么配置文件名/路径?(通配符的使用问题)


我想在 Gruntfile.js 中设置watch监听目录下的所有.less文件的更改(第一步),同时触发相应less文件编译为.css文件(第二步)。
我目前的设置是这样的:


 module.exports = function(grunt){
grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    watch: {
        less: {
            files: ['public/**/*.less'],
            tasks:['less:task1'],
            options: {livereload:false}
        },
        css: {
            files: ['public/**/*.css'],
            options: {livereload:true}
        }
    },
    less: {
        task1:{
            options: {
                compress: false,
                yuicompress: false
            },
            files: {
              "public/css/style1.css": "public/css/style1.less",
              "public/css/style2.css": "public/css/style2.less"
              //...
            }
        }
    },
});

grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-less');

grunt.registerTask('default',['watch']);
grunt.registerTask('lessc',['less:task1']);

};

以上配置目前只实现了第一步watch的监听,在less任务中,我现在只能列举出每一个存在的less文件。
但是我想用通配符来做。如果用通配符这样写的话:


 files: {
              "public/**/*.css": "public/**/*.less"
          }

结果是编译的时候真的生成了 ** 文件名的文件夹和文件(如下)。现在我不知道这里应该怎么写呢?求教。


 >> File "public/css/style1.less" changed.
Running "less:task1" (less) task
File tpl/**/*.css created

grunt web前端开发 JavaScript

max3000 12 years, 2 months ago

直接用构建工具啊。。。grunt配置太麻烦了。
例如 我们团队开发的 silky, 还有我的个人版 slow-cli 或者用京东的 jdf 都可以。 没必要这么麻烦...
npm 上都有。
开发直接使用, 打包直接构建,肯定满足你一般的开发需求的。

工口D大魔王 answered 12 years, 2 months ago

less :{ main: { expand: true, cwd: './less/', src: ['**/*.less'], dest: './css/', ext: '.css' } },

死神的乌鸦 answered 12 years, 2 months ago

Your Answer