關於如何在部署環境修改process.env & 本地測試

前言

最近在搞一些監控的東西, 須要根據不一樣的環境上報到不一樣的地址,中間遇到了一些問題,在這裏簡單總結分享下。webpack

關於process.env

假如你對process.env 相關的概念還不熟悉, 請移步:
Node環境變量 process.env 的那些事兒 , 這篇文章總結的比較好。web

webpack 在構建的時候, 能夠爲process.env 賦值:segmentfault

// Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'development';
process.env.NODE_ENV = 'development';


// Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'production';
process.env.NODE_ENV = 'production';
process 對象是一個 global (全局變量),提供有關信息,控制當前 Node.js 進程。做爲一個對象,它對於 Node.js 應用程序始終是可用的,故無需使用 require()。

假如你須要根據不一樣的部署環境作一些區分, 好比:ui

if (process.env.env === "test") {
  BASE_API_1 = 'xxx
} else if (process.env.env === "uat") {
  BASE_API_1 = 'xxx
} else if (process.env.env === "staging") {
  BASE_API_1 = 'xxx
} else if (process.env.env === "live") {
  BASE_API_1 = 'xxx'
} else {
  BASE_API_1 = 'xxx';
}

好比用的是jenkins, 構建的時候會自動給環境變量加一個env 屬性, 也就是上面看到的env.env, 不一樣的環境會有不一樣的值, 好比 uat, staging, live;this

本地構建的時候, 是取不到這個值的, 由於沒有這個環境。 可是你也能夠手動來賦值, 好比給env.env 賦值爲'test', 就能夠在終端執行:spa

env=test yarn start

隨便打印一下:code

console.log(process.env.env);

clipboard.png

這樣就能夠了 :)對象

但願對你們有所啓發, 謝謝。blog

相關文章
相關標籤/搜索