Antd Pro 編譯后自動上傳編譯文件到阿里OSS

簡單概述

我們在生產(chǎn)環(huán)境時,需要執(zhí)行npm run build, 此時會將組件個樣式編譯壓縮成index.html 和若干個js文件和css文件, 然后存在在項目的dist文件夾下摹察。

編譯后有哪些文件冤留?

如果我們是部署在云服務(wù)器上的話碧囊,租用的帶寬可能就1M,那么加載這些頁面必定會有點慢纤怒。當(dāng)然租用的是百兆帶寬的話糯而,只能說是土豪,請忽略本篇文章泊窘。
所以熄驼,這時候,就可以將除index.html外的文件存放在oss上烘豹,通過CDN的方式加快訪問速度瓜贾,且價格更便宜(云服務(wù)器也是通過流量計費(fèi)的)。

什么是CDN

CDN的全稱是Content Delivery Network携悯,即內(nèi)容分發(fā)網(wǎng)絡(luò)祭芦。CDN是構(gòu)建在現(xiàn)有網(wǎng)絡(luò)基礎(chǔ)之上的智能虛擬網(wǎng)絡(luò),依靠部署在各地的邊緣服務(wù)器憔鬼,通過中心平臺的負(fù)載均衡龟劲、內(nèi)容分發(fā)、調(diào)度等功能模塊轴或,使用戶就近獲取所需內(nèi)容昌跌,降低網(wǎng)絡(luò)擁塞,提高用戶訪問響應(yīng)速度和命中率侮叮。CDN的關(guān)鍵技術(shù)主要有內(nèi)容存儲和分發(fā)技術(shù)避矢。(內(nèi)容來自百度百科)

關(guān)于OSS

對象存儲服務(wù)(Object Storage Service,簡稱OSS)囊榜,是提供的海量审胸、安全、低成本卸勺、高可靠的云存儲服務(wù)砂沛。您可以通過本文檔提供的簡單的REST接口,在任何時間曙求、任何地點碍庵、任何互聯(lián)網(wǎng)設(shè)備上進(jìn)行上傳和下載數(shù)據(jù)映企。基于OSS静浴,您可以搭建出各種多媒體分享網(wǎng)站堰氓、網(wǎng)盤、個人和企業(yè)數(shù)據(jù)備份等基于大規(guī)模數(shù)據(jù)的服務(wù)苹享。(內(nèi)容來自阿里云)

實現(xiàn)教程

1双絮、流程
run build -> 編譯 -> 上傳文件到oss-> 刪除本地文件-> 修改index.html文件引用地址

2、安裝插件
我們需要插件來實現(xiàn)這個過程webpack-alioss-plugin

npm install -D webpack-alioss-plugin
# 或者
yarn add -D webpack-alioss-plugin

3得问、修改配置
這里我用的antd pro版本是4.x的, 修改的配置大同小異囤攀。

  • config/config.js的文件里添加
import AliOSSPlugin from 'webpack-alioss-plugin';

export default defineConfig({
  ....
   publicPath: process.env.PUBLIC_PATH || '/', // index.html引用文件的地址
   // 開始編譯時
   chainWebpack(config) {
     // 如果存在oss配置
     if (process.env.WEBPACK_ALIOSS_PLUGIN_ACCESS_KEY_ID) {
       config.plugin('alioss').use(AliOSSPlugin, [
         {
           ossBaseDir: '/', // 存放在oss的路徑, 一般是更目錄
           project: 'xxx', // 項目名(用于存放文件的直接目錄)
           options: {
             headers: {
              'Cache-Control': 'max-age=2592000', // 緩存時長
            },
          },
        },
      ]);
     }
   }
})
  • 添加.env文件
    env文件一般用于存放參數(shù)變量的宫纬,比如oss的key 和秘鑰等一些配置焚挠。
    默認(rèn)是沒有env文件的,所以需要在項目的根目錄添加.env文件漓骚。添加配置如下:
WEBPACK_ALIOSS_PLUGIN_ACCESS_KEY_ID= # key
WEBPACK_ALIOSS_PLUGIN_ACCESS_KEY_SECRET= # 秘鑰
WEBPACK_ALIOSS_PLUGIN_BUCKET= # bucket 名稱
WEBPACK_ALIOSS_PLUGIN_REGION=oss-cn-beijing # 區(qū)域節(jié)點
PUBLIC_PATH= # 文件引用地址

4蝌衔、注意點

  • 上面的config里的process.env.key是可以讀取到env里的鍵值的。
  • env里的幾個變量都是固定的蝌蹂,插件會自動去讀取胚委,如果需要自動以,可以參考github里的說明叉信。
  • ACCESS_KEY_IDACCESS_KEY_SECRET可以再下拉頭像里的AccessKey設(shè)置獲取。
    獲取秘鑰
  • 在bucket列表里可以創(chuàng)建bucket


    創(chuàng)建bucket
  • 創(chuàng)建好后艘希,在概述中可以看到該bucket的一些信息硼身,包括使用流量,區(qū)域節(jié)點等信息覆享。


    bucket信息
  • env里的PLUGIN_REGION 應(yīng)填類似oss-cn-beijing的值佳遂, 而不是oss-cn-beijing.aliyuncs.com,我也是試了好多遍,
  • PUBLIC_PATH 是文件編譯后撒顿,index.html中引用js和css的地址丑罪,一般是https://bucket域名 / bucket 名
<html>
  <body>
     <script src="https://xxx.oss-cn-beijing.aliyuncs.com/xxx/umi.xxxxxxxxx.js"></script>                                             
  <body>
<html>
  • bucket要設(shè)置可讀,不然編譯后凤壁,仍然加載不到文件


    image.png

5吩屹、編譯測試

  • 執(zhí)行npm run build終端會提示編譯和上傳信息

    編譯上傳

  • 檢查dist文件下,里面就 index.htmlasset-manifest.json 兩個文件

  • 檢查index.html文件拧抖,引用的css和js相關(guān)文件都是引用oss的地址

  • 利用vs code 打開index.html煤搜, 利用Go live(vs code的一個插件,可以模擬運(yùn)行頁面)運(yùn)行index.html, 可以看到css和js加載地址為oss地址唧席。如果加載失敗擦盾,結(jié)合信息修改調(diào)試嘲驾。

    加載信息

  • 查看oss上,上傳的文件迹卢。多次上傳辽故,oss會區(qū)分歷史版本和最新版本


    文件列表
  • 為了清除歷史版本文件,可以設(shè)置歷史版本文件的過期時間腐碱。在基礎(chǔ)設(shè)置->生命周期中設(shè)置

    生命周期設(shè)置

6誊垢、利用git lab的ci流水線來實現(xiàn)
上面講的,秘鑰等信息存儲到env文件里喻杈,而上傳到服務(wù)器時彤枢,該文件也要上傳,這樣是很不安全的筒饰。但是如果有用到ci流水線自動部署的話缴啡, 可以將秘鑰等信息設(shè)置在ci環(huán)境變量設(shè)置里。在項目xxx->設(shè)置->CI/CD->變量中設(shè)置

設(shè)置變量

在執(zhí)行提交的時候瓷们。觸發(fā)ci流水線业栅,有執(zhí)行npm run build的話,文件就會被上傳谬晕。關(guān)于流水線碘裕,該教程不講。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末攒钳,一起剝皮案震驚了整個濱河市帮孔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌不撑,老刑警劉巖文兢,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異焕檬,居然都是意外死亡姆坚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門实愚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兼呵,“玉大人,你說我怎么就攤上這事腊敲』魑梗” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵兔仰,是天一觀的道長茫负。 經(jīng)常有香客問我,道長乎赴,這世上最難降的妖魔是什么忍法? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任潮尝,我火速辦了婚禮,結(jié)果婚禮上饿序,老公的妹妹穿的比我還像新娘勉失。我一直安慰自己,他們只是感情好原探,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布乱凿。 她就那樣靜靜地躺著,像睡著了一般咽弦。 火紅的嫁衣襯著肌膚如雪徒蟆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天型型,我揣著相機(jī)與錄音段审,去河邊找鬼。 笑死闹蒜,一個胖子當(dāng)著我的面吹牛寺枉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绷落,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姥闪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砌烁?” 一聲冷哼從身側(cè)響起筐喳,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎函喉,沒想到半個月后疏唾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡函似,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了喉童。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撇寞。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖堂氯,靈堂內(nèi)的尸體忽然破棺而出蔑担,到底是詐尸還是另有隱情,我是刑警寧澤咽白,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布啤握,位于F島的核電站,受9級特大地震影響晶框,放射性物質(zhì)發(fā)生泄漏排抬。R本人自食惡果不足惜懂从,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹲蒲。 院中可真熱鬧番甩,春花似錦、人聲如沸届搁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卡睦。三九已至宴胧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間表锻,已是汗流浹背恕齐。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留浩嫌,地道東北人檐迟。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像码耐,于是被迫代替她去往敵國和親追迟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容