2016-10-07 33 views
0

如何使用Node.js child_process#產卵,它可能看起來是這樣的:允許與child_process.spawn()用戶提供的執行字符串

const child = cp.spawn('npm', ['install','-D','suman'], {}); 

或像這樣:

const child = cp.spawn('foo', ['bar','baz'], {}); 

的我的lib的用戶將提供一個命令字符串,類似於NPM腳本。

的NPM腳本看起來可能是這樣的的package.json

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中?

回答

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'], {}); 
相關問題