从grunt模板访问进程/环境

时间:2012-12-21 12:12:53

标签: javascript templates underscore.js gruntjs

我在grunt.js文件中有一些代码,它使用0.3但在0.4上打破:

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

在0.3过程中定义,因此我可以访问模板内部环境中定义的变量。将文件路径传递给其他插件。

是否有另一种方法可以在0.4中使用?或者在模板渲染时放置断点以便我可以看到哪些变量可用?

2 个答案:

答案 0 :(得分:53)

The default data is the config object。您可以将环境变量添加到配置对象中,也可以直接使用它。

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

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

答案 1 :(得分:0)

这是辛德雷的一个很好的直接回答。或者你也可以(使用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。