sirve que para mac grunt create cli gruntjs

gruntjs - que - npm grunt



¿Cómo obtener el nombre de la tarea grunt en la línea de comandos? (3)

Puedes usar grunt.util.hooker.hook para esto.

Ejemplo (parte de Gruntfile.coffee):

grunt.util.hooker.hook grunt.task, (opt) -> if grunt.task.current and grunt.task.current.nameArgs console.log "Task to run: " + grunt.task.current.nameArgs

CMD :

C:/some_dir>grunt concat --cmp my_cmp Task to run: concat Running "concat:coffee" (concat) task Task to run: concat:coffee File "core.coffee" created. Done, without errors.

También hay un hack que he usado para evitar la ejecución de ciertas tareas:

grunt.util.hooker.hook grunt.task, (opt) -> if grunt.task.current and grunt.task.current.nameArgs console.log "Task to run: " + grunt.task.current.nameArgs if grunt.task.current.nameArgs is "<some task you don''t want user to run>" console.log "Ooooh, not <doing smth> today :(" exit() # Not valid. Don''t know how to exit :), but will stop grunt anyway

CMD, cuando está permitido :

C:/some_dir>grunt concat:coffee --cmp my_cmp Running "concat:coffee" (concat) task Task to run: concat:coffee File "core.coffee" created. Done, without errors.

CMD, cuando se previene :

C:/some_dir>grunt concat:coffee --cmp my_cmp Running "concat:coffee" (concat) task Task to run: concat:coffee Ooooh, not concating today :( Warning: exit is not defined Use --force to continue. Aborted due to warnings.

Para personalizar mis tareas grunt, necesito acceso al nombre de la tarea grunt que se indica en la línea de comandos al iniciar grunt.

Las opciones no son un problema, ya que está bien documentado (grunt.options). También está bien documentado cómo averiguar el nombre de la tarea, cuando se ejecuta una tarea ronca .

Pero necesito acceso al nombre de la tarea antes.

Por ejemplo, el usuario escribe grunt build --target=client

Al configurar el trabajo en mi Gruntfile.js , puedo usar grunt.option(''target'') para obtener ''client'' .

Pero, ¿cómo puedo obtener la build de parámetros antes de que comience la compilación de tareas?

Cualquier orientación es muy apreciada!


Su archivo grunt es básicamente una función. Intenta agregar esta línea a la parte superior:

module.exports = function( grunt ) { /*==> */ console.log(grunt.option(''target'')); /*==> */ console.log(grunt.cli.tasks); // Add your pre task code here...

Ejecutar con grunt build --target=client debería darle la salida:

client [ ''build'' ]

En ese momento, puede ejecutar cualquier código que necesite antes de ejecutar su tarea, incluidos los valores de configuración con nuevas dependencias.


Una forma mejor es usar grunt.task.current que tiene información sobre la tarea actualmente en ejecución, incluida una propiedad de name . Dentro de una tarea, el contexto (es decir, this ) es el mismo objeto. Asi que . . .

grunt.registerTask(''foo'', ''Foobar all the things'', function() { console.log(grunt.task.current.name); // foo console.log(this.name); // foo console.log(this === grunt.task.current); // true });

Si la build es un alias para otras tareas y solo quiere saber qué comando se escribió que condujo a la ejecución de la tarea actual, normalmente uso process.argv[2] . Si examinas process.argv , verás que argv[0] es node (porque grunt es un proceso de node ), argv[1] es grunt , y argv[2] es la tarea real de gruñido (seguida de cualquier parámetro en el resto de argv ).

EDITAR:

Ejemplo de salida de console.log(grunt.task.current) en [email protected] desde dentro de una tarea (no puede tener una tarea actual de no una tarea actual).

{ nameArgs: ''server:dev'', name: ''server'', args: [], flags: {}, async: [Function], errorCount: [Getter], requires: [Function], requiresConfig: [Function], options: [Function], target: ''dev'', data: { options: { debugPort: 5858, cwd: ''server'' } }, files: [], filesSrc: [Getter] }