1. 程式人生 > 其它 >cross-env 執行跨平臺設定和使用環境變數的指令碼

cross-env 執行跨平臺設定和使用環境變數的指令碼

1.1 cross-env是什麼

執行跨平臺設定和使用環境變數的指令碼

1.2 出現原因

當您使用 NODE_ENV=production, 來設定環境變數時,大多數 Windows 命令提示將會阻塞(報錯)。(異常是Windows上的Bash,它使用本機Bash。)換言之,Windows 不支援 NODE_ENV=production 的設定方式。

1.3 解決

cross-env 使得您可以使用單個命令,而不必擔心為平臺正確設定或使用環境變數。這個迷你的包(cross-env)能夠提供一個設定環境變數的 scripts,讓你能夠以 Unix 方式設定環境變數,然後在 Windows 上也能相容執行。

1.4 安裝
npm install --save-dev cross-env
1.5 使用
{
  "scripts": {
    "build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
  }
}

NODE_ENV環境變數將由 cross-env 設定 列印 process.env.NODE_ENV === 'production'

例如,webpack很多都有設定如下:

// Source maps are resource heavy and can cause out of memory issue for large source files.
const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';

此時 該判斷在打包的時候,會一直預設是需要map檔案的, 其本身是有三種方式處理:

1: 根目錄下建立 .env檔案,並增加一句引數

GENERATE_SOURCEMAP=false

2: 將改語句改為:

// Source maps are resource heavy and can cause out of memory issue for large source files.
// const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';
const shouldUseSourceMap = false;

3: 就用到我們這個外掛,在package.json中建立一個用於不生成sourcemap的打包命令:

 "scripts": {
    "start": "node scripts/start.js",
    "build": "node scripts/build.js",
    "build-p": "cross-env GENERATE_SOURCEMAP=false node scripts/build.js",
    "test": "node scripts/test.js"
  },