使用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
但是,这个也可用,并且都干净:release和clean:test将被执行:
$grunt clean
我不要那个.我想控制从命令行调用的内容,因为如果用户直接调用某些任务或子任务,我可能没有预见到一些不良影响.
我考虑过注册一个新的清理任务来取代主要任务,然后选择调用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'));
如果要保留目标配置,则复制配置非常重要