我正在尝试使用带有"--"参数的child_process spawn,但似乎由于某种原因它并没有被识别。
我想要执行的命令是:
wp-env run tests-cli "wp plugin update --all"
(这是一个用于运行wordpress环境的cli包 - https://www.npmjs.com/package/@wordpress/env)
这里的双引号对于命令的正常工作非常重要,所以我认为这可能是问题的一部分。
下面是我正在尝试使用的代码的一般思路:
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);
});
这是我得到的输出:
Starting 'wp plugin update' on the tests-cli container.
我尝试了很多其他类似的组合,但是遗憾的是它们都没有生效。
在谷歌上找不到任何线索,希望这里有人能够帮忙解决。我想根本原因并不是特别与这个软件包相关,但是我没有真正遇到过使用“--”作为一般参数的问题,所以我认为它与这个组合以及需要双引号的要求有关。
例如:
const child = spawn('npx', [
"--version"
], {shell: true});
这将完全正常工作。