2015-12-03 2 views
0

У меня есть хрюкать сборки задачу, что я зарегистрирован, что есть несколько задач в ней (чистый, CONCAT и т.д.)Reference одноуровневых цели в Grunt конфигурации

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

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

Некоторые задачи имеют локальный/DEV/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 свойство существует в конфигурации ... Ошибка

clean это литерал объекта, поэтому я должен быть в состоянии просто ссылка this.local. Не знаю, почему это провалилось.

Я иду об этом неправильно?

ответ

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 */ } 
})()  

И теперь он работает, как ожидался.

Смежные вопросы