我想使用$>npm start
并使用“nodemon”进行开发,使用“node”进行生产。我不能把条件逻辑放在我的package.json文件中,那么最好的方法是什么呢?
答案 0 :(得分:5)
您应该可以将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
答案 1 :(得分:5)
nodemon实际上读取了package.start
值,因此如果您只是将start
属性设置为您在生产中所拥有的属性,例如node app.js
,那么运行nodemon而不带任何参数,它将与package.start
一起运行,并在开发过程中重新开始。
答案 2 :(得分:5)
我喜欢丹尼尔的解决方案,但认为将它放在单独的文件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"
},
答案 3 :(得分:1)
与其在“开始”中添加逻辑,不如添加另一个脚本,例如“ start-dev”:“ nodemon app.js”,然后像“ npm run-script start-dev”那样执行它。