Доступ к процессу/среде из шаблона ворчания
У меня есть код в файле grunt.js, который работает с 0,3, но разрывается на 0,4:
{
dest: '<%= process.env.DEST %>/index.html'
}
В 0,3 процесс определен и поэтому я могу обращаться к переменным, определенным в среде внутри шаблона, когда я, например. передавая пути к другим плагинам.
Есть ли альтернативный подход к этому, который будет работать в 0,4? Или способ поставить точку останова во время рендеринга шаблона, чтобы я мог видеть, какие переменные доступны?
Ответы
Ответ 1
Данные по умолчанию - это объект конфигурации. Вы можете добавить переменную окружения в объект конфигурации или просто использовать ее напрямую.
grunt.initConfig({
destination: process.env.DEST,
task: {
target: {
dest: '<%= destination %>/index.html'
}
},
});
или
grunt.initConfig({
task: {
target: {
dest: process.env.DEST + '/index.html'
}
},
});
Ответ 2
Это отличный прямой ответ Синдре. В качестве альтернативы вы можете сделать (используйте плагин grunt-env: https://npmjs.org/package/grunt-env) -
grunt.initConfig({
env : {
test : {
DEST : 'testDEST'
},
dev : {
DEST : 'devDEST'
},
qa : {
DEST : 'qaDEST'
},
prod : {
DEST : 'prodDEST'
}
}
});
grunt.registerTask('setenvs', 'Set environment variables', function() {
grunt.config('ENVS', process.env);
});
а затем используйте
{
dest: '<%= ENVS.DEST %>/index.html'
}
Ваша задача -
grunt.registerTask('default', [
'env:dev',
'setenvs'
'yourTask'
]);
Предлагаемый альтернативный подход только для того, чтобы вы могли использовать <%= ... %>
, и вам не нужно жестко указывать его в initConfig. Цель для env, которую вы можете взять в качестве ввода от пользователя и передать его в env.