22

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

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

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

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

4

2 回答 2

54

默认数据是配置对象。您可以将环境变量添加到配置对象或直接使用它。

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

或者

grunt.initConfig({
    task: {
        target: {
            dest: process.env.DEST + '/index.html'
        }
    },
});
于 2012-12-30T07:31:21.940 回答
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。

于 2017-11-10T11:39:39.633 回答