process.env.NODE_ENV生産環境モデルの設定


最近はシステムが会社のワンポイントログインにアクセスし、ログインに成功してからシステムのホームページに戻るために、テストや砂箱のドメイン名(以前はIPで直接登録されていた)を申請し、ローカル開発は配置されたhostです.アクセスした后に1つのとても面倒な点を発见して単点の登录伝のジャンプアドレスに毎回すべて修正しなければならなくて、开発の时に开発のドメイン名を书いて、テストの时にテストのドメイン名に変えて、砂箱に入る时に砂箱のドメイン名をジャンプして、オンラインの时にまたオンラインのドメイン名に変えます.特にテスト段階では,開発テストが切り替えられ,煩わしい.そこでプロファイルに書きたいと思って、環境によって異なるプロファイルをロードして、変更を戻すために使用しません.この時Envは頭の中に飛び込んだ.
手を抜くenv
プロセスオブジェクトはグローバル変数であり、現在のnodeを提供する.jsに関する情報、および現在のnodeを制御する.jsに関するプロセス.グローバル変数であるため、require()を必要とせずにnodeアプリケーションで常に使用できます.プロセスがオブジェクトである以上、envは自然にその属性であり、この属性はユーザー環境情報を含むオブジェクトを返します.端末にnodeを入力後、processを入力.Envは印刷された情報を見ることができます.
主役が出るenv.NODE_ENV
NODE_ENVはプロセスじゃないEnvオブジェクトに既存のプロパティがあり、現在の開発フェーズを決定するために独自に追加された環境変数です.一般的な生産段階をproduction、開発段階をdevelopとする、スクリプトにprocessを読み込む.env.NODE_ENV. スクリプトを実行するとき、packageで環境変数を変更できます.jsonファイルのscriptsにコマンドを追加します.
NODE_ENV=production node build.js

しかし、このコマンドはWindowsを使用している学生がコードを引いた後、Windowsの設定方法が異なるため、エラーを報告しました.
set NODE_ENV=production node build.js

しかし、パソコンによって設定が違うのは無理でしょう.この時cross-envが助けに来ました.cross-envはプラットフォーム間で環境変数を設定および使用できます.
npm install --save-dev cross-env

次にcross-envで設定できます
cross-env NODE_ENV=production node build.js

このように設定すると、スクリプトでprocessを使用することができます.env.NODE_ENVですが、モジュールでは使用できません.モジュールで直接使用するには、いくつかの構成が必要です.
Webpack 4+ではmodeオプションを使用できます.
module.exports = {
  mode: 'production'
}

ただし、Webpack 3以降では、DefinePluginを使用する必要があります.
var webpack = require('webpack')

module.exports = {
  // ...
  plugins: [
    // ...
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production')
    })
  ]
}

これでそのまま使えるようになりました_モジュール内で環境変数に応じて異なるurlを構成します
let url = '';
 if (process.env.NODE_ENV === 'testing') {
   url = 'http://my.test.cn';
 } else if (process.env.alpord === 'alpord') {
   url = 'http://my.alpord.cn';
 } else if (process.env.NODE_ENV === 'production') {
   url = 'http://my.product.cn';
 } else {
   url = 'http://my.develop.cn';
 }

あるいは
let url = '';
process.env.NODE_ENV === 'production'?url = 'http://my.product.cn':url = 'http://my.test.cn';