![]() |
光明磊落的稀饭 · 北京外国语大学教授陈琳,从教七十载——三尺讲 ...· 3 月前 · |
![]() |
逆袭的登山鞋 · 六安路小学荣城花园分校举办“追梦新时代 ...· 10 月前 · |
![]() |
帅呆的匕首 · 净利600亿!拼多多去年增收90%:盈利不是 ...· 1 年前 · |
![]() |
酒量小的太阳 · 花旗集团董事长兼CEO桑福德·威尔_手机新浪网· 1 年前 · |
![]() |
孤独的鞭炮 · 韩国挑战不心动男生_韩国挑战不心动男生的电影 ...· 2 年前 · |
我的
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
![]() |
酒量小的太阳 · 花旗集团董事长兼CEO桑福德·威尔_手机新浪网 1 年前 |