怎么配置一个gruntfile.js在多个目录下使用

比如我要在一个test目录下配置一个gruntfile.js
然后在test目录下的再创建一些test1,test2这样的目录,每次执行grunt只想处理这些某个子目录,而不是全部子目录。请问要怎么做?
谢spacewander纠正,确实是想在gruntfile里指定某几个目录,但是又不想每次有新增目录就在gruntfile.js里面编辑。目前项目还没有开始grunt,所以没有编辑gruntfile.js。但是遇到这样的问题,子目录太多。能不能从命令里面制定grunt的目录名称?

阅读 3.9k
2 个回答

你这不是“一个gruntfile在多个目录下使用”,而是“在gruntfile里指定某几个目录”。
建议把相关代码贴一下吧,这样方便别人针对具体情况作答。


更新:

这里举grunt-jasmine-node作为例子:

module.exports = function (grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    jasmine_node: {
      options: {
        matchall: false,
        extensions: 'js',
        specNameMatcher: '_spec'
      },
      // 对于grunt-jasmine-node而言,这里设置了目标文件夹
      all: ['test/spec/']
    }
  });

  grunt.loadNpmTasks('grunt-jasmine-node');
  grunt.registerTask('default', ['jasmine_node']);

  // 自定义一个task,运行方式:grunt spec:dir 或 grunt spec
  grunt.registerTask('spec', 'run tests in specific dir', function(dir){
    // 如果是grunt spec,dir的值为undefined,那么维持原设置不变
    if (dir !== undefined) {
      // 否则,修改jasmine-node的all选项
      grunt.config.set('jasmine_node.all', ['test/spec/' + dir]);
    }
    // 运行原来的task
    grunt.task.run('jasmine_node');
  });
};

关键:
一是通过自定义的task,接受命令行参数,并据此加以处理。
二是在运行任务之前,通过grunt.config.set('xx.yy', value)这样的方式,动态修改原来的配置。

你要执行什么任务,所有任务都可以通过files指定要处理的目录和文件的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题