$>npm start
を使用して、開発には「nodemon」、本番には「node」を使用させたいと思います。 package.jsonファイルに条件付きロジックを入れることができないので、これをどのように行うのが最善ですか?
nodemonは実際にはpackage.start
値を読み取るため、start
プロパティをnode app.js
のように本番環境で使用するものに設定し、引数なしでnodemonを実行すると、 package.start
で実行し、開発で期待するとおりに再起動します。
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
私はダニエルのソリューションが好きでしたが、別のファイル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"
},
「start」にロジックを配置する代わりに、「start-dev」:「nodemonapp.js」のような別のスクリプトを追加して、「npmrun-scriptstart-dev」のように実行します。