10

人们如何在 Grunt 中为多个项目处理常见的配置选项。这些项目将共享一些常见的配置选项,例如 for min,但也有每个项目的私有自定义配置设置,例如只有三分之一的项目需要less或具有不同的选项。

有没有办法在项目之间共享这种通用配置,使用继承或导入现有文件,或者每个项目都必须定义所有设置?

我所指的项目将驻留在目录层次结构中,例如

root
    module1
         grunt.js
    module2
         grunt.js
    module3
         grunt.js

有什么方法可以在root级别提供通用配置设置吗?

4

1 回答 1

10

您可以根据需要轻松地将配置存储在任意数量的外部 JSON 文件中。grunt.file.readJSON将在这里为您提供帮助。例如:

module.exports = function(grunt) {

  var concatConf = grunt.file.readJSON('../concat-common.json'),
      minConf = grunt.file.readJSON('../min-common.json');

  // do whatever you want with concatConf and minConf here
  // ...

  // Project configuration.
  grunt.initConfig({
    pkg: '<json:grunt-sample.jquery.json>',
    meta: {
      banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
        '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
        '<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' +
        '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
        ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */'
    },

    concat: concatConf,
    min: minConf

    // ...
  });

  // Default task.
  grunt.registerTask('default', 'concat min');

};

不要忘记 gruntfile 是在 Node 环境中执行的常规 JavaScript 文件,配置选项是常规 JavaScript 对象 :)

于 2012-11-19T21:06:11.490 回答