首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将命令行参数发送到npm脚本

将命令行参数发送到npm脚本
EN

Stack Overflow用户
提问于 2012-07-20 22:02:36
回答 5查看 669K关注 0票数 1.1K

我的package.jsonscripts部分目前看起来如下所示:

代码语言:javascript
复制
"scripts": {
    "start": "node ./script.js server"
}

...which意味着我可以运行npm start来启动服务器。到目前一切尚好。

但是,我希望能够运行类似npm start 8080的命令,并将参数传递给script.js (例如,npm start 8080 => node ./script.js server 8080)。这个是可能的吗?

EN

回答 5

Stack Overflow用户

发布于 2015-06-18 13:16:36

如果您希望将参数传递到npm脚本的中间,而不是仅仅将它们附加到脚本的末尾,那么内联环境变量似乎可以很好地工作:

代码语言:javascript
复制
"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只运行一次常规构建。

票数 22
EN

Stack Overflow用户

发布于 2019-12-27 22:21:21

上面的大多数答案只是将参数传递到由npm调用的NodeJS脚本中。我的解决方案是通用的。

只需使用shell解释器(例如sh)调用包装npm脚本并像往常一样传递参数。唯一的例外是第一个参数是0

例如,您希望添加npm脚本someprogram --env=<argument_1>,其中someprogram仅打印env参数的值:

package.json

代码语言:javascript
复制
"scripts": {
  "command": "sh -c 'someprogram --env=$0'"
}

运行它时:

代码语言:javascript
复制
% npm run -s command my-environment
my-environment
票数 16
EN

Stack Overflow用户

发布于 2014-06-18 11:44:20

这并没有真正回答你的问题,但是你可以使用环境变量来代替:

代码语言:javascript
复制
"scripts": {
    "start": "PORT=3000 node server.js"
}

然后在您的server.js文件中:

代码语言:javascript
复制
var port = process.env.PORT || 3000;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11580961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档