【问题标题】:How to skip a Grunt target by default如何默认跳过 Grunt 目标
【发布时间】:2015-06-29 04:14:38
【问题描述】:

我正在定义一个包含多个任务和目标的 Grunt 项目,任务 build,我想运行一些复制目标,然后使用任务 deployment,我也想运行 copy 但是有一些其他目标(例如仅将文件夹复制到特定目录进行部署),我不想在build 任务处执行此目标。

那么我怎样才能从build 中跳过这个 Grunt 目标

这是我的例子

grunt.registerTask('build', ['clean', 'copy']);
grunt.registerTask('deployment', ['copy:deployment']);

grunt.initConfig(
  {
    copy: {
      foo: // Do something here,
      bar: // Do anothering here,
      ....
      deployment: // Copy file and execute something for deployment target.
    },
  }
);

【问题讨论】:

    标签: javascript gruntjs grunt-contrib-copy


    【解决方案1】:
    grunt.registerTask('build', ['clean', 'copy:foo', 'copy:bar']);
    grunt.registerTask('deployment', ['copy:deployment']);
    

    【讨论】:

    • 感谢@juank,但是copy 任务下有很多目标,所以我不想将所有这些目标都包含在寄存器build 任务中,只想忽略@987654324 @目标来自build任务
    【解决方案2】:

    我建议您为构建任务指定复制目标,例如为通用目标复制:构建或复制:foo,复制:bar.. 我认为不可能选择一个不想要的目标在 grunt 中(除非您通过函数调用创建通用任务)

    编辑:

    //something like this
    grunt.registerTask('copy:build', function(){
      var copyConfig = grunt.config.get('copy');
      Object.keys(copyConfig).forEach(function(target){
        if(target !== 'deployment'){
          grunt.task.run('copy:'+target)
        }
    
      });
    })
    
    grunt.registerTask('build', ['clean', 'copy:build']);
    //etc
    

    【讨论】:

    • 创建一个通用任务如下所示: grunt.registerTask('build', createMyBuildTask()) ;
    • 你能帮我把你的createMyBuildTask作为例子吗? @eimfach
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2013-04-30
    • 2023-03-05
    • 1970-01-01
    • 2017-07-26
    • 2020-11-07
    • 2019-10-05
    相关资源
    最近更新 更多