![]() |
卖萌的充电器 · 抓好“四个下功夫” ...· 7 月前 · |
![]() |
鬼畜的甜瓜 · 鸟眼看水浒34 | 杜迁、宋万:梁山上尴尬的存在· 1 年前 · |
![]() |
兴奋的沙滩裤 · 姜黄素通过下调miR-186*促进人肺腺癌细 ...· 1 年前 · |
![]() |
好帅的冲锋衣 · 中国农业大学园艺学院通知公告园艺学院2023 ...· 1 年前 · |
![]() |
大鼻子的水龙头 · 毒液是dc还是漫威– 快看漫画问答· 1 年前 · |
我的
package.json
的
scripts
部分目前看起来如下所示:
"scripts": {
"start": "node ./script.js server"
}
...which意味着我可以运行
npm start
来启动服务器。到目前一切尚好。
但是,我希望能够运行类似
npm start 8080
的命令,并将参数传递给
script.js
(例如,
npm start 8080
=>
node ./script.js server 8080
)。这个是可能的吗?
这并没有真正回答你的问题,但是你可以使用环境变量来代替:
"scripts": {
"start": "PORT=3000 node server.js"
}
然后在您的server.js文件中:
var port = process.env.PORT || 3000;
如果您希望将参数传递到npm脚本的中间,而不是仅仅将它们附加到脚本的末尾,那么内联环境变量似乎可以很好地工作:
"scripts": {
"dev": "BABEL_ARGS=-w npm run build && cd lib/server && nodemon index.js",
"start": "npm run build && node lib/server/index.js",
"build": "mkdir -p lib && babel $BABEL_ARGS -s inline --stage 0 src -d lib",
},
在这里,
npm run dev
将
-w
监视标志传递给babel,但
npm run start
只运行一次常规构建。
上面的大多数答案只是将参数传递到由npm调用的NodeJS脚本中。我的解决方案是通用的。
只需使用shell解释器(例如
sh
)调用包装npm脚本并像往常一样传递参数。唯一的例外是第一个参数是
0
。
例如,您希望添加npm脚本
someprogram --env=<argument_1>
,其中
someprogram
仅打印
env
参数的值:
package.json
"scripts": {
"command": "sh -c 'someprogram --env=$0'"
}
运行它时:
% npm run -s command my-environment
my-environment