Подтвердить что ты не робот

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

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

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

В 0,3 процесс определен и поэтому я могу обращаться к переменным, определенным в среде внутри шаблона, когда я, например. передавая пути к другим плагинам.

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

4b9b3361

Ответ 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.