自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Web前端工程化開發(fā)中,這樣配置多環(huán)境,既靈活又優(yōu)雅

開發(fā) 前端
我比較推薦在項目根目錄創(chuàng)建一個.env-cmdrc.js文件,因為這么做就不需要指定配置文件路徑了,env-cmd默認查找的就是根目錄的這個文件。擴展名也可以是json,但我推薦用js,為什么呢?因為js更加靈活。

在Web前端工程化開發(fā)中,我們通常需要多個環(huán)境,至少需要開發(fā)和生產(chǎn)環(huán)境,也可能還需要不同的測試環(huán)境。那么,我是怎樣配置多環(huán)境的呢?

通常,一些腳手架都有配置多環(huán)境的解決方案,比如在項目根目錄創(chuàng)建多個.env文件。但我不喜歡在根目錄創(chuàng)建很多.env文件,我覺得這樣不夠優(yōu)雅,也不夠靈活,并沒有采用這種方案,而是使用了其它的解決方案。

我使用了一個第三方包,叫:env-cmd,它的用法非常簡單。我們需要創(chuàng)建一個環(huán)境變量配置文件,擴展名可以是json或者js,文件名可以隨便起,可以放到任何目錄,使用時指定配置文件路徑即可。

我比較推薦在項目根目錄創(chuàng)建一個.env-cmdrc.js文件,因為這么做就不需要指定配置文件路徑了,env-cmd默認查找的就是根目錄的這個文件。擴展名也可以是json,但我推薦用js,為什么呢?因為js更加靈活。

首先,提醒大家一點,自定義的環(huán)境變量,命名一定要遵守腳手架的命名約定,比如:vue-cli要求必須以VUE_APP_開頭。

如下代碼是env-cmd的配置文件長相,導(dǎo)出的對象屬性名就是env-cmd 環(huán)境名字,這是用js的方式。如果用json,就不需要導(dǎo)出了。

// .env-cmdrc.js
module.exports = {
development: {
API_BASE: '/api'
},
production: {
API_BASE: '/'
},
test: {
API_BASE: '/'
}
}

以下代碼是我們其中一個項目的配置,大家看到j(luò)s作為配置文件的優(yōu)勢了吧?

// .env-cmdrc.js
const envList = [
{
MODE: 'development',
API_BASE: '/api',
FILE_BASE: '/files'
},
{
MODE: 'production',
API_BASE: '/'
}
]

module.exports = envList.reduce((t, _) => {
return {
...t,
[_.MODE]: {
..._,
APP_NAME: _.APP_NAME || 'XXXX管理后臺'
}
}
}, {})

那么,有了配置文件,我們該如何使用呢?只需在package.json中的開發(fā)和構(gòu)建腳本之前增加env-cmd -e命令,用于指定環(huán)境,以下就是使用方法。

"scripts": {
"dev": "env-cmd -e development vite",
"dist": "vite build",
"build": "env-cmd -e production npm run dist"
}

如果你用的vite,或者其它無法自動注入環(huán)境變量的腳手架,就需要你手動將環(huán)境變量注入應(yīng)用了,如下是vite的注入例子。大家能理解吧?

import { defineConfig } from 'vite'

export default defineConfig({
define: [
'MODE',
'API_BASE',
'APP_NAME',
'FILE_BASE'
].reduce((t, k) => ({ ...t, [`process.env.${k}`]: JSON.stringify(process.env[k]) }), {}),
})

下面是在我們的應(yīng)用中使用的例子。

/** @type {string} 多環(huán)境配置中的環(huán)境名 */
export const ENV_NAME = process.env.MODE

/** @type {string} 接口baseUrl */
export const API_BASE = process.env.API_BASE

/** @type {string} 文件baseUrl */
export const FILE_BASE = process.env.FILE_BASE

/** @type {string} 應(yīng)用名稱 */
export const APP_NAME = process.env.APP_NAME

感謝閱讀!是不是很簡單?

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2022-04-26 15:40:43

物聯(lián)網(wǎng)安全5G

2021-07-09 13:43:42

物聯(lián)網(wǎng)人工智能IoT

2021-09-29 19:16:07

前端React配置

2023-09-15 10:33:45

前端工程化commit

2022-08-17 11:33:35

前端配置

2023-02-15 18:12:43

開發(fā)企業(yè)級CLI

2022-07-06 11:20:16

前端開發(fā)

2022-12-01 07:46:01

工程化工具

2021-05-18 19:18:50

前端工程化工程

2015-10-26 10:32:01

前端優(yōu)化工程化

2022-07-26 17:19:11

前端前端工程化

2022-10-09 14:50:24

前端pnpm工具

2021-06-05 18:01:05

工具Rollup前端

2012-06-28 14:23:32

Web

2021-12-27 08:27:18

RepoGo 代碼

2013-03-11 10:10:03

2018-06-15 10:12:04

滴滴前端分支管理

2013-03-11 10:00:13

前端模塊化

2023-02-07 23:42:55

機器人技術(shù)識別

2013-05-21 09:54:39

Web前端
點贊
收藏

51CTO技術(shù)棧公眾號