web-dev-qa-db-fra.com

Accéder au processus/environnement à partir d'un modèle Grunt

J'ai du code dans un fichier grunt.js qui fonctionne avec 0.3 mais rompt sur 0.4:

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

En 0.3, le processus est défini et je peux donc accéder aux variables définies dans l'environnement à l'intérieur du modèle, par exemple. passer des chemins de fichiers à d'autres plugins.

Existe-t-il une approche alternative à celle-ci qui fonctionnera dans la version 0.4? Ou un moyen de mettre un point d'arrêt pendant que le modèle est rendu afin que je puisse voir quelles variables sont disponibles?

22
vitch

Les données par défaut sont l'objet config . Vous pouvez ajouter la variable d'environnement à l'objet config ou simplement l'utiliser directement.

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

ou

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

C'est une excellente réponse simple de Sindre. Sinon, vous pouvez le faire (utilisez le plugin 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);
});

et ensuite utiliser

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

Votre tâche serait - 

    grunt.registerTask('default', [
        'env:dev',
        'setenvs'
        'yourTask'
    ]);

Approche alternative proposée simplement pour que vous puissiez utiliser <%= ... %> et que vous n’ayez pas à le coder en dur dans initConfig. Cible pour env, vous pouvez prendre comme entrée de l'utilisateur et le transmettre à env.

0
Aniket Thakur