it-swarm.com.ru

Доступ к процессу/среде из шаблона grunt

У меня есть код в файле grunt.js, который работает с 0.3, но разбивается на 0.4:

{
    dest: '<%= process.env.DEST %>/index.html'
}

В 0.3 определен процесс, и поэтому я могу получить доступ к переменным, определенным в среде внутри шаблона, когда я, например, передача путей к файлам другим плагинам.

Есть ли альтернативный подход к этому, который будет работать в 0,4? Или способ установить точку останова во время рендеринга шаблона, чтобы я мог видеть, какие переменные доступны?

22
vitch

Данные по умолчанию - объект конфигурации . Вы можете добавить переменную окружения в объект конфигурации или просто использовать ее напрямую.

grunt.initConfig({
    destination: process.env.DEST,
    task: {
        target: {
            dest: '<%= destination %>/index.html'
        }
    },
});

или же

grunt.initConfig({
    task: {
        target: {
            dest: process.env.DEST + '/index.html'
        }
    },
});
53
Sindre Sorhus

Это отличный прямой ответ Синдре. В качестве альтернативы вы можете сделать это (используйте плагин 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.

0
Aniket Thakur