web-dev-qa-db-ja.com

Node.js-nodemon vsnode-開発vs本番

$>npm startを使用して、開発には「nodemon」、本番には「node」を使用させたいと思います。 package.jsonファイルに条件付きロジックを入れることができないので、これをどのように行うのが最善ですか?

17
Alexander Mills

nodemonは実際にはpackage.start値を読み取るため、startプロパティをnode app.jsのように本番環境で使用するものに設定し、引数なしでnodemonを実行すると、 package.startで実行し、開発で期待するとおりに再起動します。

6
Remy Sharp

NPMの開始を通常のシェルスクリプトとして使用できるはずです。

"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
11
Daniel

私はダニエルのソリューションが好きでしたが、別のファイル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"
},
6
Erfa

「start」にロジックを配置する代わりに、「start-dev」:「nodemonapp.js」のような別のスクリプトを追加して、「npmrun-scriptstart-dev」のように実行します。

3
Yash Ranjan