如何在Grunt中禁用任务?

时间:2013-12-26 11:14:49

标签: javascript node.js gruntjs

使用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 个答案:

答案 0 :(得分: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'));

如果要保留target配置

,则复制配置非常重要