Estoy tratando de ejecutar un engendro child_process con argumentos que incluyen "--", pero no parece registrar eso por una razón.
El comando que intento generar es: wp-env run tests-cli "wp plugin update --all"
(Este es un paquete cli para ejecutar un entorno de wordpress: https://www.npmjs.com/package/@wordpress/env )
Las comillas dobles aquí son importantes para que el comando funcione correctamente, por lo que creo que podría ser parte del problema.
Aquí está la idea general del código que estoy tratando de usar:
const { spawn } = require("child_process"); const child = spawn('npx', [ "wp-env", "run", "tests-cli", "wp", "plugin", "update", "--all" ], {shell: true}); var scriptOutput = ""; child.stdout.setEncoding('utf8'); child.stdout.on('data', function(data) { console.log('stdout: ' + data); data=data.toString(); scriptOutput+=data; }); child.stderr.setEncoding('utf8'); child.stderr.on('data', function(data) { console.log('stderr: ' + data); data=data.toString(); scriptOutput+=data; }); child.on('close', function(code) { console.log('closing code: ' + code); console.log('Full output of script: ',scriptOutput); });Esta es la salida que obtengo:
Starting 'wp plugin update' on the tests-cli container.Probé muchas otras combinaciones similares, pero lamentablemente ninguna de ellas funcionó para mí.
No pude encontrar ninguna pista para el en google, así que espero que alguien aquí pueda ayudar con eso. Supongo que la causa raíz en realidad no está relacionada específicamente con este paquete, pero en realidad no encontré ningún problema con el uso de "--" como argumentos en general, así que creo que está relacionado con esta combinación junto con el requisito de las comillas dobles. .
Por ejemplo:
const child = spawn('npx', [ "--version" ], {shell: true});Esto funcionaría bien.
Lo que estás haciendo en realidad está ejecutando:
wp-env run tests-cli wp plugin update --allNota: sin las comillas.
Si desea que wp-env run tests-cli "wp plugin update --all" , entonces debe hacer lo siguiente:
const child = spawn('npx', [ "wp-env", "run", "tests-cli", "wp plugin update --all" ], {shell: true});Eso es lo que hacen las comillas en bash : trata todo lo que contiene como un único argumento.