Node.js - nodemon vs node - 开发与生产

时间:2014-11-08 02:57:44

标签: node.js npm nodemon

我想使用$>npm start并使用“nodemon”进行开发,使用“node”进行生产。我不能把条件逻辑放在我的package.json文件中,那么最好的方法是什么呢?

4 个答案:

答案 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”那样执行它。