Grunt配置中的参考兄弟目标

时间:2015-12-03 19:41:47

标签: javascript gruntjs

我有一个我已注册的grunt构建任务,其中包含一些任务(干净,连续等)。

var target = grunt.option('target') || 'local';
grunt.registerTask('build', ['clean:' +  target, 'copy:' + target]);

// execute the build task
grunt build --target=dev

某些任务具有彼此不同的本地/ dev / prod目标,而其他任务可能只是使prod目标不同。

clean: {
    local: { ... },
    dev: this.local, // same as local
    prod: { /* different from local */ }
},
concat: {
    local: { ... },
    dev: { /* different from local */ },
    prod: { /* different from local */ }
}

引用this.local目标的clean.dev会引发错误

  

验证属性clean.dev存在于config ... ERROR

clean是一个对象文字,因此我应该只能引用this.local。不知道为什么会失败。

我是以错误的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

好的,所以这对我来说绝对是一个很好的时刻。

在创建对象文字时,this没有任何价值。如果dev是一个函数并且函数中引用了this那么一切都会好的。 JavaScript 101正确。

为了给this一个值,我刚刚为表示clean

的对象新建了一个函数
clean: new (function() {
    this.local = { ... },
    this.dev = this.local, // same as local
    this.prod = { /* different from local */ }
})()    

现在它按预期工作。