在grunt任务中获取当前的Gruntfile

时间:2014-06-04 22:33:48

标签: javascript node.js gruntjs

是否有可移植的方式来获取当前加载的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);
});

0 个答案:

没有答案
相关问题