grunt创建并运行较少的编译任务

时间:2017-04-06 08:06:33

标签: javascript node.js gruntjs

我对咕噜很新,我想实现以下目标

  • 迭代指向位置的每个目录
  • 将较少的文件编译为css

源:

  • 主题1
    • file.less
  • 主题2
    • file.less
  • 主题3
    • file.less

处理后:

  • 主题1
    • file.less
    • out.css
  • 主题2
    • file.less
    • out.css
  • 主题3
    • file.less
    • out.css

我读到某个地方,grunt这样做,这是我的整个run.js文件:

var grunt = require('grunt'),
    less = require('less');

  grunt.initConfig({
    less: {
      compileCore: {
        options: {
          strictMath: true
        },
        files: [{
          expand: true,
          src: ['themes/**/file.less'], 
          ext: '.css',
          extDot: 'first'
        }]
      }
  }
  });

  grunt.registerTask('default', ['less']);

  grunt.task.run('default');

它没有给出任何错误,但它也不起作用,我怎么能让它工作? (再一次,我没有任何关于grunt的经验,但是)

如果它也可以通过命令行执行(不运行node.js文件)来实现这个目标,那也很好;)

1 个答案:

答案 0 :(得分:1)

你可以使用grunt.file.expandMapping(https://gruntjs.com/api/grunt.file#grunt.file.expandmapping)  迭代目录中的所有文件,并根据要求提供选项。

以下代码将根据您的要求运行。

module.exports = function (grunt) {
    grunt.initConfig({
        less: {
            development: {
                files: grunt.file.expandMapping(['themes/**/*.less'], '', {
                    rename: function (destBase, destPath) {
                        return destBase + destPath.replace('.less', '.css');
                    }
                })
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-less');
    grunt.registerTask('default', ['less']);
}