使用node.js child_process#spawn,它可能如下所示:
const child = cp.spawn('npm', ['install','-D','suman'], {});
或者像这样:
const child = cp.spawn('foo', ['bar','baz'], {});
我的lib用户将提供一个命令字符串,类似于NPM脚本。
在package.json
中,NPM脚本可能如此scripts : {
'test': 'npm test'
}
在我的lib中,用户可能会提供任何内容,例如:
'watchProcess': {
'a' :{
script: 'foo bar baz',
include: [],
exclude: []
},
'b' :{
script: 'node rolo cholo',
include: [],
exclude: []
},
'c' :{
script: 'java biz bang',
include: [],
exclude: []
}
}
我是否需要执行任何特殊操作来解析watchProcess.a.script
/ watchProcess.b.script
/ watchProcess.c.script
字符串?
或者我只是通过空格分割来标记它,然后只是放入child_process.spawn?
答案 0 :(得分:1)
你可以把你的字符串放在关键脚本上并对它们进行标记(如你所说),你无能为力!
也许你想要从字符串中挑选出某些字符,但这大部分时间都不需要。
答案 1 :(得分:0)
是的,鉴于我对此进行了简短的测试,以下似乎就是所需要的:
const cp = require('child_process');
const execString = 'npm install --save suman';
const execStringArray = String(execString).split(/\s+/); <<< key part
const executable = execStringArray.shift();
const child = cp.spawn(executable, execStringArray, {});
最终用纯文本看起来像:
const child = cp.spawn('npm', ['install','--save-dev','suman'], {});