javascript - 如何禁用 Grunt 中的任务?

标签 javascript node.js gruntjs

当使用 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:releaseclean:test都会被执行:

$ grunt clean

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

我考虑过注册一个新的clean 任务来取代主任务,然后选择在调用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'));

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

关于javascript - 如何禁用 Grunt 中的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20783847/

相关文章:

javascript - 即使在提供text-align:center之后,Zingchart x轴标签项也未居中对齐

javascript - Passport 身份验证回调挂起

node.js - Sequelize 更新嵌套关联

node.js - Jest 的 globalSetup 使我的测试无法被识别

javascript - 有没有办法反复抓取 `pkg.json` 版本作为变量来替换 Grunt 中 `index.js` 文件的版本?

sass - yeoman 错误 : "Errno::EACCES on line ["89 7"] of C: Permission denied"

javascript - Sequelize 接收空数组,同时在顶级关联过滤

javascript - 从 CesiumJS 获取相机的矩形位置

javascript - 无法从 docker-composer 中找到模块错误(仅在 Windows 上)

javascript - Grunt生成新的node_modules