如何在Grunt中禁用任务?

当使用grunt.loadNpmTasks ,一个咕噜的任务可以自动在命令行中使用。 它可能是有用的,但有时候,我希望这个任务是私有的,所以它可以在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 (或根本不需要任何操作)时select要调用的内容,但由于无法调用原始的clean任务,因此无法正常工作:

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

使用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的configuration,则复制configuration很重要