Nodejs中,单独运行 run 命令时,有时候需要传参数。
方法
例,在 package.json 中有以下的记述
"scripts": {
"start": "babel-node src/server.js",
"cli-client": "babel-node src/cli-client/index.js"
},
在 index.js 中 通过 使用模块- argparse 扩展了参数的传递
const parser = new argparse.ArgumentParser({
version: '1.0.0',
description: 'CLI client for Socket.IO.'
});
parser.addArgument(
['-i', '--interval'], {
help: 'Time interval for sending message in seconds.',
defaultValue: 10,
type: 'int'
}
);
parser.addArgument(
['-n', '--num-thread'], {
help: 'Number of threads for sending messages.',
defaultValue: 1,
type: 'int'
}
);
parser.addArgument('target', {
metavar: 'TARGET',
nargs: 1,
help: 'URL of Socket.IO server.'
});
const args = parser.parseArgs();
那么,在调用时,使用的方法是
npm run cli-client http://localhost:8081/ws
cli-client 之后的部分直接作为文字列传递进去。
问题
如果想改变 num-thread 的缺省值,也就是也将其作为参数传递的话怎么办?
解决
npm run cli-client -- -n 2 http://localhost:8081/ws
需要附加 – 才可以。
?调查资料?
- npmはgetoptという仕組みを使って、コマンドラインに渡される文字列を解析している
- getoptは --記号より後ろの部分は、1つの文字列として解釈する
- npmはこの仕組みを利用して --記号の後の文字列を取り出し、npm
scriptの後ろに渡している