如何在Grunt中禁用一个任务?

4
当使用grunt.loadNpmTasks时,一个grunt任务会自动在命令行中可用。这很有用,但有时,我希望这个任务是私有的,这样它就可以在Grunt文件中使用,但不会在命令行中可用。
这是一个人为制造的例子。如果我这样做:
module.exports = function(grunt) {

    grunt.initConfig({  
        clean: {
            test: ['test'],
            release: ['release']
        },  
    });

    grunt.loadNpmTasks('grunt-contrib-clean');

    grunt.registerTask('build', 'Build the project.', function() {
        console.log("building project");
    });
    grunt.registerTask('release', ['clean:release', 'build']);

};

我可以使用以下命令:
$ grunt release

然而,这个也可用,并且会执行clean:releaseclean:test两个任务:
$ grunt clean

我不想那样做。我想控制可以从命令行调用的内容,因为如果用户直接调用某些任务或子任务,我可能没有预见到一些不良影响。

我考虑注册一个新的 clean 任务来替换主任务,然后在调用 clean 时选择要调用什么(或者根本不调用任何内容),但这并不好使,因为它不能调用原始的 clean 任务:

grunt.registerTask('clean', ['clean:release']);

1个回答

2

使用grunt.task.renameTask

var ticks = +new Date();
var clean = 'clean-' + ticks;

grunt.task.renameTask('clean', clean);
grunt.registerTask('release', [clean + ':release', 'build']);
grunt.config.set(clean, grunt.config.get('clean'));

复制配置非常重要,如果您想保留目标的配置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接