是否有可移植的方式来获取当前加载的Gruntfile?
grunt.registerTask('someTask', 'someTask in a separate grunt instance', function() {
var gruntFile = getCurrentGruntFile(); // ???
var done = this.async();
var child = grunt.util.spawn({
cmd: "grunt",
args: ['someTask', '--gruntfile=' + gruntFile, '-v'],
}, done);
});
我需要在子shell中运行jshint,因为它正在将颜色代码输出到reporter-outputFile中。我想每个项目应该只有一个Gruntfile,但在开发grunt插件或初始配置时,动态设置Gruntfile会很有用。
Grunt.config仅列出任务级选项。 Inside Tasks的文档没有列出任何有用的内容。 Grunt.util也没有列出任何相关内容。
修改
我已经使用grunt.util.async设置了jshint任务,以在子shell中生成一个单独的grunt,并将--no-colors
CLI arg传递给它。我同时为这个特定的项目开发了几个不同的Grunt文件,我无法找到一种方法来确定当前加载的Gruntfile。幸运的是,这只是一个好奇心,如果你只有一个Grunt文件或者不需要更改它,这个jshint任务可以正常工作。此外,如果项目要求有几个Gruntfiles,我想他们可以保存在不同的目录中,然后可以在相关目录中启动grunt任务。
grunt.registerTask('jshintNoColor', 'jshint without color-code output', function() {
var done = this.async();
var child = grunt.util.spawn({
cmd: "grunt",
args: ['jshint', '--no-color'],
opts: {
stdio: 'inherit'
}
}, done);
});