gruntjs - tutorial - grunt uglify
Parámetros de línea de comando de Grunt (4)
Tengo un archivo de compilación Grunt. Mi archivo de compilación tiene una tarea que se parece a la siguiente:
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'']);
Actualmente, puedo ejecutar lo siguiente desde la línea de comando:
> grunt customTask
Todo funciona bien. Sin embargo, necesito agregar la capacidad de hacer algo como esto:
> grunt customTask --myParam=myValue
Necesito ver el valor de myParam en mi objetivo de tarea "dev". Sin embargo, no puedo averiguar cómo hacerlo. Me alegraría si pudiera imprimir el valor de myParam cuando se ejecuta myTask: dev. En otras palabras, me gustaría ver lo siguiente cuando corro
> grunt customTask
> grunt customTask --myParam=hello
You entered hello
> grunt customTask-Test
> grunt customTask-Test --myParam=hello
¿Cómo hago algo como esto?
Hice un ejemplo de uso, donde puedo pasar el módulo donde quiero que se cree mi css.min a través de esta línea de comando:
> 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'']);
}
También puede usar la matriz process.argv
leer los argumentos de la línea de comandos de grunt
var args = process.argv;
runScript(args[2], args[3]);
El primer y segundo argumento son el comando de node
y el nombre del script.
execute: {
target: {
options: {
args : [arg1, arg2]
},
src: [''script.js'']
}
}
utilizando grunt-execute
Todo esto se explica en la página grunt.option .
En su caso, podría obtener el valor de myParam
con:
var target = grunt.option(''myParam'');
Una forma alternativa: puede utilizar la matriz process.argv
, al igual que puede hacerlo en una aplicación Node normal.
GruntJS, por supuesto, se basa en NodeJS.
Utilicé esta técnica para reenviar mis argumentos de línea de comandos de Grunt a mi proceso de Nodo, a los que llamó grunt-nodemon
.