亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

                vue3源碼分析-rollup打包monorepo

                vue3源碼分析-rollup打包monorepo

                引言

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

                效果

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

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

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

                聲明文件預(yù)覽

                正文

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

                打包shared

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

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

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

                有了rollup,咋們是不是需要在打包的目錄下面來(lái)搞個(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的語(yǔ)法,rollup無(wú)法轉(zhuǎn)換ts的語(yǔ)法,需要使用插件了。

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

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

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

                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. 意思是說(shuō),這個(gè)插件是目前來(lái)說(shuō)轉(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ù)制代碼

                再來(lái)一次

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

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

                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ì)的,沒(méi)錯(cuò),可以在對(duì)應(yīng)的單體項(xiàng)目下面寫上rollup.config.js來(lái)對(duì)他們進(jìn)行打包的配置

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

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

                咋們來(lái)拆分下命令

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

                優(yōu)化

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

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

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

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

                對(duì)比vue3打包

                這里可能有的人會(huì)說(shuō),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è)無(wú)加盟費(fèi)的項(xiàng)目(茶顏悅色奶茶店加盟費(fèi)多少)

                  茶顏悅色又爆了,8月18日,茶顏悅色南京門店正式開(kāi)業(yè),開(kāi)張不到半小時(shí),門店就人滿為患,消費(fèi)者的購(gòu)買熱情十分高漲,而由于人流量過(guò)大造成擁堵,茶顏悅色也不得不暫停營(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í),如果覺(jué)得本文對(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è)主流。具體來(lái)看,大部分企業(yè)營(yíng)業(yè)收入呈增長(zhǎng)態(tài)勢(shì),E50企業(yè)平均同比增速達(dá)到17.3%,但是利潤(rùn)增速則明…

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

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

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

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

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

                  近日,財(cái)政部印發(fā)《關(guān)于進(jìn)一步推動(dòng)政府和社會(huì)資本合作(PPP)規(guī)范發(fā)展、陽(yáng)光運(yùn)行的通知》,從做好項(xiàng)目前期論證、推動(dòng)項(xiàng)目規(guī)范運(yùn)作、嚴(yán)防隱性債務(wù)風(fēng)險(xiǎn)、保障項(xiàng)目陽(yá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ú)運(yùn)營(yíng)的4大技巧解析(閑魚(yú)運(yùn)營(yíng)怎么做)

                  熟悉我又來(lái)了,上一次寫的文章是爆出風(fēng)水項(xiàng)目的潛規(guī)則,但那個(gè)項(xiàng)目已經(jīng)涼涼了。 這一次我是要教一些小白,你們第一次做互聯(lián)網(wǎng)的建議做的項(xiàng)目之一,這個(gè)項(xiàng)目就是閑魚(yú)賣二手物品賺差價(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)目將全面開(kāi)工建設(shè)。 汕梅高速是廣東省東北部南北貨運(yùn)的重要通道,聯(lián)通粵贛閩三省,承擔(dān)著粵東…

                  2022年11月23日

                聯(lián)系我們

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