J'ai un fichier de construction Grunt. Mon fichier de génération a une tâche qui ressemble à ceci:
myTask: {
options: {
configFile: "config/default.js",
args: { }
},
dev: {
configFile: 'config/local.js',
options: { args: {} },
},
test: {
configFile: 'config/remote.js',
options: { args: {} }
}
}
...
grunt.registerTask('customTask', ['myTask:dev']);
grunt.registerTask('customTask-Test', ['myTask:test']);
Actuellement, je peux exécuter ce qui suit à partir de la ligne de commande:
> grunt customTask
Tout fonctionne bien. Cependant, je dois ajouter la possibilité de faire quelque chose comme ceci:
> grunt customTask --myParam=myValue
J'ai besoin de regarder la valeur de myParam dans ma cible de tâche "dev". Cependant, je ne peux pas comprendre comment le faire. Je serais heureux si je pouvais simplement imprimer la valeur de myParam lorsque myTask: dev est exécuté. En d'autres termes, j'aimerais voir ce qui suit lors de l'exécution
> grunt customTask
> grunt customTask --myParam=hello
You entered hello
> grunt customTask-Test
> grunt customTask-Test --myParam=hello
Comment faire quelque chose comme ça?
Tout cela est expliqué dans la page grunt.option .
Dans votre cas, vous pouvez obtenir la valeur de myParam
avec:
var target = grunt.option('myParam');
J'ai fait un exemple d'utilisation, où je peux passer le module où je veux que mon css.min soit créé via cette ligne de commande:
> grunt cssmin --target=my_module
Gruntfile.js
module.exports = function(grunt) {
var module = grunt.option('target'); //get value of target, my_module
var cssminPath = 'assets/' + module + '/css/all.css';
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
cssmin:{
css: {
files: [{
src: [
'bower_components/bootstrap/dist/css/bootstrap.min.css',
],
dest: cssminPath
}]
}
},
});
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.registerTask('default', ['cssmin']);
}
Une autre manière: vous pouvez utiliser le process.argv
array, comme vous le pouvez dans une application Node.
GruntJS est, bien sûr, construit sur NodeJS.
J'ai utilisé cette technique afin de transmettre mes arguments de ligne de commande Grunt à mon processus Node, appelé par grunt-nodemon
.
Vous pouvez également utiliser le process.argv
array te lit les arguments de la ligne de commande depuis grunt
var args = process.argv;
runScript(args[2], args[3]);
les premier et deuxième arguments sont la commande node
et le nom du script.
execute: {
target: {
options: {
args : [arg1, arg2]
},
src: ['script.js']
}
}
en utilisant grunt-execute