在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    vue3源碼分析-rollup打包monorepo

    vue3源碼分析-rollup打包monorepo

    引言

  • 手寫vue3源碼——?jiǎng)?chuàng)建項(xiàng)目
  • 手寫vue3源碼——reactive, effect ,scheduler, stop
  • 手寫vue3源碼——readonly, isReactive,isReadonly, shallowReadonly
  • 手寫vue3源碼——ref, computed
  • 本期咋們就先放一放源碼,咋們?nèi)绾未虬黰onorepo應(yīng)用,主要是源碼看累了,打包工具也是一門必須課,所有的源碼請(qǐng)查看

    效果

    為了提供大家的學(xué)習(xí)興趣,咋們先來看看效果,準(zhǔn)備發(fā)車,請(qǐng)系好安全帶

    cjs 結(jié)果預(yù)覽

    esm 結(jié)果預(yù)覽

    聲明文件預(yù)覽

    正文

    vue3使用的是rollup來打包的,咋們也用rollup來打包咋們的應(yīng)用,有不了解rollup的請(qǐng)查看官網(wǎng),monorepo是多個(gè)單體倉(cāng)庫(kù)合并得到的,那么咋們就先來打包單個(gè)倉(cāng)庫(kù),然后再來想辦法怎么一鍵打包全部

    打包shared

    在我項(xiàng)目中,shared倉(cāng)庫(kù)是相當(dāng)與utils函數(shù)的集合,用于對(duì)外導(dǎo)出一些工具函數(shù),那么咋們可以在本目錄下的package.json中安裝rollup。 正當(dāng)我就想在shared目錄下面安裝rollup插件的時(shí)候,我大腦給了個(gè)慢著的問號(hào)?

    monorepo 是不是可以在跟下面安裝依賴,然后子包都可以共享,基于這一特征。我毫不猶豫在根目錄下面敲下了下面的命令

    pnpm add rollup -w -D復(fù)制代碼

    有了rollup,咋們是不是需要在打包的目錄下面來搞個(gè)配置文件rollup.config.js,里面咋們寫上入口,出口,打包的格式等

    // 由于咋們需要打包成cjs, ems的格式,對(duì)外導(dǎo)出一個(gè)函數(shù)吧[ { input: ‘./src/index.ts’, output: { file: ‘dist/index.esm.js’, format: ‘esm’, }, }, { input: ‘./src/index.ts’, output: { file: ‘dist/index.cjs.js’, format: ‘cjs’, }, } ]復(fù)制代碼

    然后在本目錄下的package.json中加入打包的命令:

    “build”: “rollup -c”復(fù)制代碼

    nice, 到這了就完了,咋們?cè)囈幌?,結(jié)果:

    分析錯(cuò)誤可以發(fā)現(xiàn),咋們是用了ts的語法,rollup無法轉(zhuǎn)換ts的語法,需要使用插件了。

    那么rollup轉(zhuǎn)換ts的插件也是有好多種,這里咋們用一個(gè)最快的那種,esbuild, rollup-plugin-esbuild

    pnpm add esbuild rollup-plugin-esbuild -w -D復(fù)制代碼

    關(guān)于rollup-plugin-esbuild這個(gè)插件,官方的介紹是說:

    esbuild is by far one of the fastest TS/ESNext to ES6 compilers and minifier, this plugin replaces rollup-plugin-typescript2, @rollup/plugin-typescript and rollup-plugin-terser for you. 意思是說,這個(gè)插件是目前來說轉(zhuǎn)換ts/esnext到es6是最快的編譯和壓縮,這個(gè)插件可以代替 rollup-plugin-typescript2, @rollup/plugin-typescript and rollup-plugin-terser的集合

    但是如果咋們需要打包非常低版本的代碼,那就請(qǐng)查看rollup 實(shí)戰(zhàn)第三節(jié) 打包生產(chǎn)打包低版本的代碼.

    言歸正傳,那么咋們把插件用上,在配置文件上加上插件

    //… 省略其他plugins: [ esbuild({ target: ‘node14’, }), ]復(fù)制代碼

    再來一次

    通過結(jié)果,咋們可以看到已經(jīng)打包成功了!

    但是咋們是有ts的,肯定還需要生成咋們代碼的類型吧,那就使用 rollup-plugin-dts這個(gè)來生成

    pnpm add rollup-plugin-dts -w -D復(fù)制代碼

    rollup-plugin-dts詳情請(qǐng)查看

    // 在數(shù)組后面在加上一項(xiàng),{ input: ‘./src/index.ts’, output: { file: ‘dist/index.dts’, format: ‘esm’, }, plugins: [ dts(), ], },復(fù)制代碼

    然后就可以ok啦,咋們單個(gè)項(xiàng)目就完成了

    打包多個(gè)

    既然單個(gè)是這么寫,那么其他的咋們是不是也可以寫配置文件呢?對(duì)的,沒錯(cuò),可以在對(duì)應(yīng)的單體項(xiàng)目下面寫上rollup.config.js來對(duì)他們進(jìn)行打包的配置

    然后咋們?cè)诟夸浵旅娴膒ackage.json中加入一行命令:

    “build”: “pnpm -r –filter=./packages/** run build”復(fù)制代碼

    咋們來拆分下命令

  • pnpm -r 等同于 pnpm –recursive,意思是說在工作區(qū)的每個(gè)項(xiàng)目中運(yùn)行命令,不包括根項(xiàng)目,詳情查看
  • –filter=./packages/**意思是說,過濾其他文件和文件夾,只使用packages下面的所有文件夾
  • run build 是 pnpm -r run build的后綴,執(zhí)行package.json中的build指令,詳情請(qǐng)查看
  • 合起來的意思是說,依次執(zhí)行packages里面所有文件夾的package.json的build命令

    優(yōu)化

    通過上面的方式咋們就可以打包成功了,但是這里咋們還可以進(jìn)行優(yōu)化下,每一次打包dist結(jié)果都需要手動(dòng)刪除,咋們可以使用 rimraf 這個(gè)庫(kù)來幫我們自動(dòng)刪除

    pnpm add rimraf -d -W復(fù)制代碼

    然后在每一個(gè)子包中修改build的命令

    “build”: “rimraf dist && rollup -c”復(fù)制代碼

    對(duì)比vue3打包

    這里可能有的人會(huì)說,vue3倉(cāng)庫(kù)都不是這么玩的,的確,vue3倉(cāng)庫(kù)的打包流程如下:

    有興趣的可以取看源碼哈,這里給出流程圖,想要使用這種方式的就自己實(shí)現(xiàn)哈!

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月15日 15:25
    下一篇 2022年6月15日 15:25

    相關(guān)推薦

    • 30個(gè)無加盟費(fèi)的項(xiàng)目(茶顏悅色奶茶店加盟費(fèi)多少)

      茶顏悅色又爆了,8月18日,茶顏悅色南京門店正式開業(yè),開張不到半小時(shí),門店就人滿為患,消費(fèi)者的購(gòu)買熱情十分高漲,而由于人流量過大造成擁堵,茶顏悅色也不得不暫停營(yíng)業(yè)。 當(dāng)然,這里面排…

      2022年11月27日
    • cad連續(xù)標(biāo)注快捷鍵(cad連續(xù)標(biāo)注快捷鍵)

      本文主要講的是cad連續(xù)標(biāo)注快捷鍵,以及和cad連續(xù)標(biāo)注快捷鍵相關(guān)的知識(shí),如果覺得本文對(duì)您有所幫助,不要忘了將本文分享給朋友。 cad中連續(xù)標(biāo)注快捷鍵 CAD尺寸標(biāo)準(zhǔn)快捷命令:DL…

      2022年11月27日
    • 凈利潤(rùn)率越高越好嗎(凈利潤(rùn)率多少合適)

      一、持續(xù)增收不增利,平均凈利潤(rùn)率首次跌入個(gè)位數(shù) 2021年,增收不增利依舊是行業(yè)主流。具體來看,大部分企業(yè)營(yíng)業(yè)收入呈增長(zhǎng)態(tài)勢(shì),E50企業(yè)平均同比增速達(dá)到17.3%,但是利潤(rùn)增速則明…

      2022年11月26日
    • 京東快遞跨省幾天能到(京東一般多久到貨)

      由于覺得京東平臺(tái)的物流效勞十分的不錯(cuò),而且商品的質(zhì)量都比擬有保證。在京東平臺(tái)購(gòu)物的話,普通多久時(shí)間會(huì)到貨?下面的內(nèi)容停止引見。 京東普通多久到貨? 詳細(xì)要看發(fā)貨地址和你所在的地址的…

      2022年11月26日
    • 地靈絕魂劍(地靈絕魂劍像素)

      今天小編給各位分享地靈絕魂劍的知識(shí),其中也會(huì)對(duì)地靈絕魂劍像素進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! dnf地靈絕魂劍怎么計(jì)算 地靈絕魂劍的附加攻擊是…

      2022年11月25日
    • 規(guī)范透明促PPP高質(zhì)量發(fā)展——16萬億元大市場(chǎng)迎來新規(guī)

      近日,財(cái)政部印發(fā)《關(guān)于進(jìn)一步推動(dòng)政府和社會(huì)資本合作(PPP)規(guī)范發(fā)展、陽光運(yùn)行的通知》,從做好項(xiàng)目前期論證、推動(dòng)項(xiàng)目規(guī)范運(yùn)作、嚴(yán)防隱性債務(wù)風(fēng)險(xiǎn)、保障項(xiàng)目陽光運(yùn)行四個(gè)方面進(jìn)一步規(guī)范P…

      2022年11月25日
    • 推薦3種白手起家的賺錢項(xiàng)目(白手起家賺錢項(xiàng)目有哪些)

      如今社會(huì)壓力非常的大,家有老少要養(yǎng)活,這些都加速了窮人想要?jiǎng)?chuàng)業(yè)的欲望,但是創(chuàng)業(yè)路總是那么的艱難,資金就是創(chuàng)業(yè)的重頭戲,所以選擇一個(gè)低成本又賺錢的項(xiàng)目是大多數(shù)人最期望的了,那么有哪些…

      2022年11月25日
    • 閑魚運(yùn)營(yíng)的4大技巧解析(閑魚運(yùn)營(yíng)怎么做)

      熟悉我又來了,上一次寫的文章是爆出風(fēng)水項(xiàng)目的潛規(guī)則,但那個(gè)項(xiàng)目已經(jīng)涼涼了。 這一次我是要教一些小白,你們第一次做互聯(lián)網(wǎng)的建議做的項(xiàng)目之一,這個(gè)項(xiàng)目就是閑魚賣二手物品賺差價(jià)了!!! …

      2022年11月24日
    • 2023年農(nóng)村創(chuàng)業(yè)最好的種植項(xiàng)目有哪些(2023年農(nóng)村宅基地)

      隨著2023年時(shí)間的臨近,有關(guān)農(nóng)村創(chuàng)業(yè)大家也都十分關(guān)注。2023年農(nóng)村創(chuàng)業(yè)最好的種植項(xiàng)目有哪些?新的一年農(nóng)村創(chuàng)業(yè)到底做什么最能賺錢呢?今天小編整理了一些非常具有發(fā)展?jié)摿Φ霓r(nóng)村種植業(yè)…

      2022年11月23日
    • 汕梅高速將改擴(kuò)建為雙向八車道 預(yù)計(jì)2026年建成通車

      昨日上午,汕梅高速改擴(kuò)建項(xiàng)目在梅州舉行建設(shè)動(dòng)員會(huì),標(biāo)志著廣東省首條山嶺重丘區(qū)高速公路改擴(kuò)建項(xiàng)目將全面開工建設(shè)。 汕梅高速是廣東省東北部南北貨運(yùn)的重要通道,聯(lián)通粵贛閩三省,承擔(dān)著粵東…

      2022年11月23日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息