从grunt模板访问进程/环境

Accessing the process / environment from a grunt template

本文关键字:进程 环境 访问 grunt      更新时间:2023-09-26

我在grunt.js文件中有一些代码,它在0.3上工作,但在0.4上中断:

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

在0.3进程被定义,所以我可以访问在模板内的环境中定义的变量,当我例如传递文件路径给其他插件。

是否有一种替代方法可以在0.4中工作?或者在模板呈现时放置一个断点,以便我可以看到哪些变量可用?

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

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

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

Sindre的回答非常直接。或者你可以这样做(使用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中硬编码它。