tutorial serve run instalar how grunt cli javascript node.js gruntjs

javascript - serve - npm grunt



Comprender gruntjs registerTask colon (1)

Actualmente estoy tratando de aprender gruntjs para desarrolladores y producción.

Quiero asignar una variable de configuración global para determinar cosas. Tengo un simple initConfig :

grunt.initConfig({ foo: { bar: {GLOBAL: true}, baz: {GLOBAL: false} } }); grunt.registerTask(''one'', [''foo:bar'']); grunt.registerTask(''two'', [''foo:baz'']);

Mi pregunta es:

¿Qué está haciendo exactamente el colon en mis tareas? ( foo:bar o foo:baz )

¿Y cuál es la diferencia entre un colon y un simple punto?

Mi objetivo es tener una variable global establecida en true o false para su posterior procesamiento:

grunt.initConfig({ foo: { bar: {GLOBAL: true}, baz: {GLOBAL: false} }, awesomestuff: { smth: GLOBAL ? ''yes'' : ''no'', another: !Global ? ''DoDebug'' : ''MakeRelease'' } }); grunt.registerTask(''one'', [''foo:bar'', ''awesomestuff'']); grunt.registerTask(''two'', [''foo:baz'', ''awesomestuff'']);

¿Cómo lograría esto?

Actualizar

Obtuve la variable global funcionando de alguna manera. Al registrar una nueva tarea nueva llamada init con un argumento, puedo llamarla en otra tarea.

grunt.registerTask(''init'', ''Init'', function(param) { grunt.config(''GLOBAL'', param) }); grunt.registerTask(''one'', [''init:true'', ''foo:bar'', ''awesomestuff'']);

En este caso, se llamará a la tarea init con el parámetro varable configurado en true . Pero la pregunta es todavía:

¿Por qué debería usar un signo de un punto para hacer referencia a un objeto?


¿Por qué debería usar dos puntos en lugar de un punto para hacer referencia a un objeto?

Para comprender por qué, primero necesita comprender configuraciones y objetivos de tareas de grunt .

Único objetivo

Para ayudarlo a comprender mejor este concepto y la terminología, eche un vistazo a esta configuración de ejemplo para un plugin grunt-contrib-copy llamado grunt-contrib-copy . Es un complemento que copia archivos. Debajo hay un fragmento de ese código:

grunt.initConfig({ copy: { // <-- Task main: { // <-- Target // ... <-- other configurations go here. } } });

En este ejemplo anterior, la tarea se llama copy e incluye un único objetivo denominado main .

Para registrar esta tarea , debe hacerlo de la siguiente manera:

grunt.registerTask(''copyFiles'', [''copy:main'']);

e ingresaría lo siguiente a través de su línea de comando para ejecutarlo:

$ grunt copyFiles

Objetivos múltiples

Grunt Tasks también puede incluir más de un objetivo . Considere este código de ejemplo a continuación:

grunt.initConfig({ copy: { js: { // ... <-- Additional configurations for this Target go here. }, css: { // ... <-- Additional configurations for this Target go here. } } });

Puede registrar el ejemplo anterior de la siguiente manera:

grunt.registerTask(''copyJavaScriptFiles'', [''copy:js'']); grunt.registerTask(''copyCssFiles'', [''copy:css'']);

Entonces, a través de la línea de comando:

  1. Ejecutando $ grunt copyJavaScriptFiles copiará todos los archivos JS de acuerdo con las configuraciones especificadas.

  2. Ejecutando $ grunt copyCssFiles copiará todos los archivos CSS de acuerdo con las configuraciones especificadas.

Si desea copiar los archivos JS y CSS, puede registrar una tarea de la siguiente manera:

grunt.registerTask(''copyAll'', [''copy'']);

Y lo ejecutaría ingresando $ grunt copyAll en su línea de comando.

Observe que en el último ejemplo no incluye ningún signo de dos puntos : Grunt esta vez ejecutará todos los Targets en la tarea de copy , es decir, el js one y el css one.

¿Y cuál es la diferencia entre un colon y un simple punto?

Colon

Afortunadamente, ahora puedes ver lo que hace el colon : Se utiliza para hacer referencia a un objetivo en particular dentro de una tarea y, por lo general, solo se utiliza cuando una tarea tiene múltiples objetivos y desea hacer referencia específica a uno de ellos.

Punto simple

El punto simple es la notación estándar de JavaScript para acceder a las propiedades de un objeto. Google "notación de JavaScript" para obtener más información sobre la notación de puntos y la notación de corchetes .

Dentro del contexto de su Gruntfile.js, la notación de puntos se usa generalmente para llamar a las funciones / métodos / propiedades del objeto grunt . Por ejemplo:

grunt.initConfig({...}); grunt.loadNpmTasks(...); grunt.registerTask(...);

EDITAR 1 actualizó la respuesta después de actualizar la publicación / pregunta original.