pnpm 多包管理項目

Monorepo是一種項目管理方式羽资,就是把多個項目放在一個倉庫里面淘菩,可以參考神三元大佬的一篇文章:現(xiàn)代前端工程為什么越來越離不開 Monorepo?,這篇文章中介紹了Monorepo的概念屠升、收益以及MulitRepo的弊端

pnpm就是一個包管理工具潮改,原生支持Monorepo,比npm和yarn更快一些腹暖,其他的可以參考官網(wǎng)和神三元大佬的另一篇文章:為什么現(xiàn)在我更推薦 pnpm 而不是 npm/yarn?

pnpm的依賴并不是全部打平下載到node_modules下的,我們都知道,如果是npm或者yarn下載的依賴包的話,他會打平整個依賴結(jié)構(gòu) 那什么是打平結(jié)構(gòu)呢 ,其實就是將所有的依賴都放在同一級去展示,因為我們的所以來的庫可能又依賴了別的庫,以此類推可能層層嵌套,這個時候yarn和npm 會將他們打平,也就是將這些嵌套的依賴統(tǒng)統(tǒng)整理到node_modules下. 但是這樣會造成一個問題,那就是一些沒有在package.json里聲明的包我們也可以引入進(jìn)來.這樣會造成極大的隱患.

而pnpm則采用了這種方式


image.png

將所有在描述文件中聲明的包下載到node_modules下,同時將他們所依賴的依賴包下載到.pnpm文件夾下

Monorepo的管理方式就自然會出現(xiàn)依賴重復(fù)汇在,或者自己寫的某個包依賴于另一個包這種情況。而pnpm的workspace以及他的依賴管理策略就很好的解決了這一問題,

接下來就讓我們從零開始使用pnpm去搭建一個Monorepo系統(tǒng)吧

首先安裝pnpm

npm install pnpm -g

然后新建一個文件夾,用ide打開之后初始化這個文件夾的package.json,也就是我們的項目描述文件

pnpm init

接著新建pnpm-workspace.yaml文件 ,里面寫上需要建立workspace的文件夾

packages:
  # packages下所有的子包
  - 'packages/*'
  # components文件夾下所有的子包
  - 'components/**'
  # api文件夾下所有的子包
  - 'api/**'

接著我們?nèi)?chuàng)建一個packages文件夾.同時也創(chuàng)建一個api文件夾和conponents文件夾.
api和components文件夾就代表我們的內(nèi)部使用的包.需要被多個子應(yīng)用給引用到.而packages則放置我們的子應(yīng)用. 最終的一個目錄結(jié)構(gòu)應(yīng)該是這樣的

image.png

當(dāng)我們需要安裝依賴的時候,使用pnpm install 命令就會自動檢索所有的工作空間的package.json文件里記錄的依賴.

如果需要給某一個子包下載依賴的話,可以使用

pnpm -F 子包名 add 需要下載的包名

pnpm 可以通過-F 來選擇不同的子包.

需要注意的是你的子包名字最好自己重新命名一個,修改package.json的name字段,因為如果再npm庫里有和你同名的包的話,pnpm好像是會去網(wǎng)上下載的,而不會直接使用你本地的子包.

當(dāng)下載了本地的子包后可以指定@*這樣,就會實時使用最新的包.


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脏答,一起剝皮案震驚了整個濱河市糕殉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殖告,老刑警劉巖阿蝶,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丛肮,居然都是意外死亡赡磅,警方通過查閱死者的電腦和手機(jī)魄缚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門宝与,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冶匹,你說我怎么就攤上這事习劫。” “怎么了嚼隘?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵诽里,是天一觀的道長。 經(jīng)常有香客問我飞蛹,道長谤狡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任卧檐,我火速辦了婚禮墓懂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘霉囚。我一直安慰自己捕仔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榜跌,像睡著了一般闪唆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钓葫,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天悄蕾,我揣著相機(jī)與錄音,去河邊找鬼础浮。 笑死笼吟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的霸旗。 我是一名探鬼主播贷帮,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诱告!你這毒婦竟也來了撵枢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤精居,失蹤者是張志新(化名)和其女友劉穎锄禽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體靴姿,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡沃但,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了佛吓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宵晚。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖维雇,靈堂內(nèi)的尸體忽然破棺而出淤刃,到底是詐尸還是另有隱情,我是刑警寧澤吱型,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布逸贾,位于F島的核電站,受9級特大地震影響津滞,放射性物質(zhì)發(fā)生泄漏铝侵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一触徐、第九天 我趴在偏房一處隱蔽的房頂上張望咪鲜。 院中可真熱鬧,春花似錦锌介、人聲如沸嗜诀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隆敢。三九已至发皿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拂蝎,已是汗流浹背穴墅。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留温自,地道東北人玄货。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像悼泌,于是被迫代替她去往敵國和親松捉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

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