【问题标题】:Grunt custom targetsGrunt 自定义目标
【发布时间】:2015-12-17 02:56:16
【问题描述】:

假设我有 3 种 grunt 目标模式:quickbuilddist

我还有一个自定义目标make-stuff

grunt.registerTask('make-stuff', [
            'someCSStask',
            'someUtility',
            'somePackage',
            'isolatedTask' // More on this below
        ]);

...在上述所有 3 种目标模式下运行 (quick, build, dist) 像这样:

grunt.registerTask('quick', [
        'some-task1',
        'make-stuff'
    ]);

grunt.registerTask('build', [
        'some-task1',
        'some-task2',
        'make-stuff'
    ]);

grunt.registerTask('dist', [
        'some-task3',
        'build' // make-stuff gets ran here since we reference 'build'
    ]);

我想在每个目标模式下正常运行 make-stuff,除了 quick,我希望它忽略 isolatedTask

【问题讨论】:

    标签: javascript gruntjs


    【解决方案1】:

    如果这是您的设置,为什么不将“isolatedTask”移到构建中?

    grunt.registerTask('build', [
        'some-task1',
        'some-task2',
        'make-stuff',
        'isolatedTask'
    ]);
    

    否则,试试这样的方法

    grunt.registerTask(
       'isolatedTask',
       'Isolated tasks for make-stuff, skip if target mode is quick.',
       function() {
          var target = this.args[0];
          if (target === 'quick') { return; }
    
          // logic here
       }
    );
    
    grunt.registerTask(
       'quick', 
       function() {
          grunt.run.tasks([
              ...,
              'isolatedTask:' + this.nameArgs
          ]);
       }
    );
    

    【讨论】:

    • 谢谢@abeach3 我会在哪里使用this.nameArgs !== 'quick'
    • @bruh 检查编辑,如果您有任何问题,请告诉我。
    • 这仅在我使用isolatedTask 作为条件时才有效。使用quick,当我运行grunt quick 时,条件语句将被忽略。除了this.nameArgs === 'quick' 之外还有什么我可以使用的,或者我做错了什么,因为这似乎只适用于它自己 - 例如......this.nameArgs === 'isolatedTask' 工作正常......但它显然会在所有目标模式下跳过。
    • 你完全正确。我在测试时错过了这一点。这有效 - grunt.registerTask('isolatedTask', function() { console.log(this.args[0]); }); grunt.registerTask('quick', function() { grunt.task.run(['isolatedTask:' + this.nameArgs]); });。绝对没有那么干净,也许有更好的方法......
    • 错误使用 jsfiddle https://jsfiddle.net/ecLnn0LL/,但也许这有帮助?这是我为您的问题建模的完整 gruntfile.js。
    猜你喜欢
    • 2013-07-22
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多