start que proyecto node example crear comandos node.js reactjs npm gruntjs jest

node.js - que - ¿Cómo ejecutar el script npm usando grunt-run?



package.json que es (1)

Tengo una tarea npm en mi archivo package.json de la siguiente manera para ejecutar la prueba de broma:

"scripts": { "test-jest": "jest", "jest-coverage": "jest --coverage" }, "jest": { "testEnvironment": "jsdom" },

Quiero ejecutar esta tarea npm run test-jest usando ronco. Instalé grunt-run para lo mismo y agregué la tarea de ejecución, pero ¿cómo invoco esta tarea npm allí?

run: { options: { // Task-specific options go here. }, your_target: { cmd: ''node'' } }


Configure su Gruntfile.js similar al ejemplo que se muestra en los documentos.

  1. Establezca el valor para el cmd a npm .
  2. Establezca run y test-jest en args Array.

Gruntfile.js

module.exports = function (grunt) { grunt.loadNpmTasks(''grunt-run''); grunt.initConfig({ run: { options: { // ... }, npm_test_jest: { cmd: ''npm'', args: [ ''run'', ''test-jest'', ''--silent'' ] } } }); grunt.registerTask(''default'', [ ''run:npm_test_jest'' ]); };

Corriendo

Al ejecutar $ grunt través de su CLI utilizando la configuración que se muestra arriba se invocará el npm run test-jest .

Nota: Agregar --silent (o su equivalente en taquigrafía) s a args Array simplemente ayuda a evitar el registro adicional de npm en la consola.

EDITAR:

Plataforma cruzada

El uso de la solución de grunt-run que se muestra arriba falló en el sistema operativo Windows cuando se ejecuta a través de cmd.exe . El siguiente error fue arrojado:

Error: spawn npm ENOENT Warning: non-zero exit code -4058 Use --force to continue.

Para una solución multiplataforma, considere instalar y utilizar grunt-shell para invocar el npm run test-jest lugar.

npm i -D grunt-shell

Gruntfile.js

module.exports = function (grunt) { require(''load-grunt-tasks'')(grunt); // <-- uses `load-grunt-tasks` grunt.initConfig({ shell: { npm_test_jest: { command: ''npm run test-jest --silent'', } } }); grunt.registerTask(''default'', [ ''shell:npm_test_jest'' ]); };

Notas

  1. grunt-shell requiere load-grunt-tasks para cargar la tarea en lugar de la típica grunt.loadNpmTasks(...) , por lo que deberá instalarla también:

npm i -D load-grunt-tasks

  1. Para la versión anterior de Windows tuve que instalar una versión anterior de grunt-shell , a saber, la versión 1.3.0 , por lo que recomiendo instalar una versión anterior.

npm i -D [email protected]

EDIT 2

grunt-run parece funcionar en Windows si usa la clave exec en lugar de las teclas cmd y args ...

Para propósitos de plataforma cruzada ... me pareció necesario especificar el comando como una cadena única usando la clave exec según la documentación que dice:

Si desea especificar su comando como una sola cadena, útil para especificar múltiples comandos en una tarea, use la clave exec:

Gruntfile.js

module.exports = function (grunt) { grunt.loadNpmTasks(''grunt-run''); grunt.initConfig({ run: { options: { // ... }, npm_test_jest: { exec: ''npm run test-jest --silent'' // <-- use the exec key. } } }); grunt.registerTask(''default'', [ ''run:npm_test_jest'' ]); };