当使用 grunt.loadNpmTasks
时,命令行会自动使用 grunt 任务。它可能很有用,但有时我希望这个任务是私有(private)的,这样它就可以在 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:release
和clean:test
都会被执行:
$ grunt clean
我不想这样。我想控制可以从命令行调用的内容,因为如果用户直接调用某些任务或子任务,我可能没有预见到一些不良影响。
我考虑过注册一个新的clean
任务来取代主任务,然后选择在调用clean
时调用什么(或者什么都不调用),但它不能很好地工作,因为它不能调用原始的 clean
任务:
grunt.registerTask('clean', ['clean:release']);
最佳答案
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'));
如果您想保留目标
的配置,复制配置很重要
关于javascript - 如何禁用 Grunt 中的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20783847/