我的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
)。这个是可能的吗?
发布于 2015-06-18 13:16:36
如果您希望将参数传递到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
只运行一次常规构建。
发布于 2019-12-27 22:21:21
上面的大多数答案只是将参数传递到由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
发布于 2014-06-18 11:44:20
这并没有真正回答你的问题,但是你可以使用环境变量来代替:
"scripts": {
"start": "PORT=3000 node server.js"
}
然后在您的server.js文件中:
var port = process.env.PORT || 3000;
https://stackoverflow.com/questions/11580961
复制相似问题