web-dev-qa-db-ja.com

OS XでNODE_ENVをプロダクション/開発に設定する方法

Express.js環境で使用します。助言がありますか?

276

アプリを実行する前に、コンソールでこれを実行できます。

export NODE_ENV=production

あなたが窓にいるなら、またはあなたはこれを試すことができます:

SET NODE_ENV=production

または、あなたはこのようにあなたのアプリを走らせることができます:

NODE_ENV=production node app.js

Jsファイルに設定することもできます。

process.env.NODE_ENV = 'production';

しかし、サーバー上でVIMを開いて運用環境に変更するのは容易ではないため、ランタイムファイルで実行することはお勧めしません。あなたはあなたのディレクトリにconfig.jsonファイルを作成することができ、あなたのアプリケーションが実行されるたびに、それはそれから読み込んで設定を設定します。

587

package.json内:

{
  ...
  "scripts": {
    "start": "NODE_ENV=production node ./app"
  }
  ...
}

その後ターミナルで実行します。

npm start
87
walkerbe

誰もまだここに.envを挙げていませんか?アプリのルートに.envファイルを作成し、次にrequire('dotenv').config()を作成して値を読み取ります。簡単に変更、読みやすく、クロスプラットフォーム。

https://www.npmjs.com/package/dotenv

49
Thomas McCabe

export NODE_ENV=productionは悪い解決策です、それは再起動後に消えます。

あなたがもうその変数について心配したくないなら - このファイルにそれを追加してください:

/etc/environment

エクスポート構文を使用せず、単に書き込みます(コンテンツが既に存在する場合は改行します)。

NODE_ENV=production

再起動後に動作します。 export NODE_ENV = production コマンドを再入力する必要はなくなり、nodeを使用したいものであればいつでも - 永久にpm2 ...

herokuの場合:

heroku config:set NODE_ENV="production"

これは実際にはデフォルトです。

42
Lukas

これはNODE_ENVについてのよい記事です: http://www.hacksparrow.com/running-express-js-in-production-mode.html

Gruntから自動的に設定するには https://npmjs.org/package/grunt-env pluginを使用できます。

21
heroku config:set NODE_ENV="production"
21
david_adler

スクリプトをWindows、Mac、Linuxのどちらで実行しているかを気にする必要はありません。cross-envパッケージをインストールしてください。そうすれば、スクリプトを簡単に使うことができます。

"scripts": {
    "start-dev": "cross-env NODE_ENV=development nodemon --exec babel-node -- src/index.js",
    "start-prod": "cross-env NODE_ENV=production nodemon --exec babel-node -- src/index.js"
}

このパッケージの開発者への大道具。

12
Notorious

Windows Powershellの場合は、このコマンドを使用します。

$env:NODE_ENV="production" ; node app.js
8
Harikrishnan

OSXでは、export NODE_ENV=development~/.bash_profile~/.bashrc~/.profileに追加することをお勧めします。

個人的にはそのエントリを自分の~/.bashrcに追加してから、そのファイルの内容を~/.bash_profile~/.profileにインポートさせるので、環境間で一貫性があります。

これらを追加した後、必ず端末を再起動して設定を取得してください。

6
Vincil Bishop

アプリケーションで webpack を使用している場合は、DefinePlugin..を使用して、そこに単純に設定できます。

pluginセクションで、 NODE_ENV productionに設定します。

plugins: [
  new webpack.DefinePlugin({
    'process.env.NODE_ENV': '"production"',
  })
]
1
Alireza

あなたが窓にいるならば。それから最初の正しいフォルダであなたのcmdを開いてください

set node_env={your env name here}

enterを押すと、あなたはあなたのノードをで起動することができます。

node app.js

それはあなたのenv設定で始まります

1
garenyondem

Danielは素晴らしい答えを持っています。それは正しい展開(設定と忘却)プロセスのためのより良いアプローチです。

Expressを使っている人のために。あなたは同様に素晴らしいgrunt-express-serverを使うことができます。 https://www.npmjs.org/package/grunt-express-server

0
Jesse

複数の環境を作成するには、以前にすべての回答(NODE_ENVパラメーターとエクスポート)が必要ですが、何もインストールすることなく非常に単純なアプローチを使用します。 package.jsonに、必要な各envのスクリプトを次のように配置します。

...
"scripts": {
    "start-dev": "export NODE_ENV=dev && ts-node-dev --respawn --transpileOnly ./src/app.ts",
    "start-prod": "export NODE_ENV=prod && ts-node-dev --respawn --transpileOnly ./src/app.ts"
  }
 ...

次に、npm startを使用する代わりにアプリを起動するには、npm run script-prodを使用します。

コードでは、process.env.NODE_ENVを使用して現在の環境にアクセスできます。

出来上がり。

0
rmpt