我想使用$>npm start
并让它使用“nodemon”进行开发,使用“node”进行生产。我不能将条件逻辑放在我的 package.json 文件中,那么如何最好地完成呢?
问问题
21169 次
4 回答
19
您应该能够将 NPM 的 start 用作常规 shell 脚本。
"scripts": {
"start": "if [$NODE_ENV == 'production']; then node app.js; else nodemon app.js; fi"
}
现在启动您的服务器进行生产
$ NODE_ENV='production' npm start
或为了发展
$ NODE_ENV='development' npm start
于 2014-11-08T03:28:04.800 回答
11
nodemon 实际上会读取该package.start
值,因此,如果您只是将start
属性设置为您在生产中拥有的属性,例如node app.js
,然后在没有任何参数的情况下运行 nodemon,它将package.start
按照您在开发中的预期运行并重新启动。
于 2014-12-06T08:58:45.437 回答
8
我喜欢丹尼尔的解决方案,但认为将它放在单独的文件中会更干净,startup.sh
:
#!/bin/sh
if [ "$NODE_ENV" = "production" ]; then
node src/index.js;
else
nodemon src/index.js;
fi
然后只需更改package.json
为:
"scripts": {
"start": "../startup.sh"
},
于 2017-01-04T16:31:53.367 回答
6
无需将逻辑放在“开始”中,只需添加另一个脚本,例如“start-dev”:“nodemon app.js”,然后像“npm run-script start-dev”一样执行它。
于 2019-07-03T07:45:29.577 回答