成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Web前端工程化開發中,這樣配置多環境,既靈活又優雅

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

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

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

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

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

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

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

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

以下代碼是我們其中一個項目的配置,大家看到js作為配置文件的優勢了吧?

// .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中的開發和構建腳本之前增加env-cmd -e命令,用于指定環境,以下就是使用方法。

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

如果你用的vite,或者其它無法自動注入環境變量的腳手架,就需要你手動將環境變量注入應用了,如下是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]) }), {}),
})

下面是在我們的應用中使用的例子。

/** @type {string} 多環境配置中的環境名 */
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} 應用名稱 */
export const APP_NAME = process.env.APP_NAME

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

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-07-09 13:43:42

物聯網人工智能IoT

2022-04-26 15:40:43

物聯網安全5G

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

開發企業級CLI

2022-07-06 11:20:16

前端開發

2022-12-01 07:46:01

工程化工具

2015-10-26 10:32:01

前端優化工程化

2021-05-18 19:18:50

前端工程化工程

2012-06-28 14:23:32

Web

2022-07-26 17:19:11

前端前端工程化

2022-10-09 14:50:24

前端pnpm工具

2021-06-05 18:01:05

工具Rollup前端

2023-02-07 23:42:55

機器人技術識別

2021-12-27 08:27:18

RepoGo 代碼

2013-03-11 10:10:03

2013-03-11 10:00:13

前端模塊化

2015-02-11 10:21:07

JavaScript

2013-05-21 09:54:39

Web前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.国产| 国产高清在线精品 | 久久精品中文 | 99re视频精品 | 久久9精品 | 超碰91在线 | 精品一区免费 | 日韩国产中文字幕 | 在线视频日韩 | 天天射天天操天天干 | 国产精品视频在线播放 | 91久久国产综合久久 | 狠狠亚洲| 中文字幕人成乱码在线观看 | 九九热这里只有精品在线观看 | 国产黄色av网站 | 国产精品美女www | 国产精品视频免费观看 | 91精品一区二区 | 91精品久久久久久久久 | 国产成人一区二区三区电影 | 欧美精品一区二区三区在线播放 | 亚洲欧美日韩中文在线 | 91在线色视频 | 国产精品自产av一区二区三区 | 日本在线看| 国产观看| 亚洲一在线 | 日韩网站在线观看 | 国产成人在线视频播放 | 成人久久18免费网站 | 操网站| 91在线精品一区二区 | 日韩美女一区二区三区在线观看 | 夜夜精品浪潮av一区二区三区 | 91麻豆产精品久久久久久夏晴子 | 日韩在线一区二区三区 | 欧美男人天堂 | 久久小视频 | 亚洲精品免费视频 | 欧美日韩亚洲一区 |