摘要:如何像那樣進行多包管理呢項目的里面存放了旗下的所有包,比如。如果你不想這么麻煩,那么有一個辦法就是,不用,也就是你的包名不加前綴,這樣你的包就默認是公共的包了,完全可以不用先去提交一次公共版本,才能使用來管理你的包,簡單多了。
溫馨提示:請直接看最后面的正確操作,如果不懂,再回顧全文。 如何像 babel 那樣進行多包管理呢?
babel 項目的 packages 里面存放了 babel 旗下的所有包,比如:babel-core。
我們在安裝 babel 的時候一般不是這樣裝的:yarn add babel,而是這樣安裝的:yarn add @babel/babel-core,這是由于 babel 進行了分包管理的緣故,又因為 npm 支持scope packages,所以我們可以這樣子來安裝包。
我們再來看scope packages,npm 支持以@符開頭的包名稱,把它叫做有范圍的包,示例:@somescope/somepackage。
但是在發布包的時候,npm 會把這種包當成是你的私有包來進行發布,一般我們是發布不了的,因為 npm 會提示需要登錄等等東西,這個時候我們一般就加上一個參數,告訴 npm 我們要發布的這個包是一個公共包:npm publish --access=public,不出意外這個包就可以發布成功了。
別人要安裝你的包:yarn add @somescope/somepackage,看起來跟安裝 babel-core 一致了。
但是還差點東西,就是利用 lerna 來進行管理。
要達到類似于 babel 那樣的管理方式,首先,你需要有scope packages,正好,我們現在有了一個@somescope/somepackage包,現在我們就用 lerna 來管理它。
首先,我們在 github 上面新建一個倉庫,就叫做:testlerna 吧(使用已有倉庫也行),然后克隆到本地,進入到 testlerna 目錄,執行:lerna init或者是lerna init -i(表示 packages 下面的包多帶帶使用版本號),這個時候,lerna 就為我們生成了這幾個東西:
testlerna |-package.json |-lerna.json |-packages/
packages 目錄就是 lerna 要進行管理的各種包的目錄,所有的包都會放在這個目錄下面。
接著執行:lerna import ../scopepackage(假設咱們的這個@somescope/somepackage包是放在 scopepackage 目錄里面的),這樣就會把我們剛才發布的那個包導入到 packages 目錄里面,這時候目錄看起來像這個樣子:
testlerna |-package.json |-lerna.json |-packages/ |--scopepackage/ |---package.json |---...
做一些修修改改并執行 git commit 后,我們就可以執行lerna publish了,不出意外你的@somescope/somepackage也在 npm 上更新了,原來的那個@somescope/somepackage倉庫可以刪除掉了,因為我們把它放在 testlerna 項目中進行管理了,這樣就跟 babel 那樣的管理方式一樣了。
這種方式是有一丟丟麻煩,因為 npm 默認會把 @ 開頭的包當成私有包來看待,就導致了如果不在 npm 上提交一次公共版本,執行lerna publish時就會發布不了,可能lerna publish調用的 npm 命令是npm publish它沒有加--access=publish參數。
如果你不想這么麻煩,那么有一個辦法就是,不用scope package,也就是你的包名不加 @ 前綴,這樣你的包就默認是公共的包了,完全可以不用先去提交一次公共版本,才能使用 lerna 來管理你的包,簡單多了。
更新,不用像上面那么麻煩了,還得新建一個倉庫,你大可以把前面那種方法當成是學習 npm 的 scope package 吧。
正確的方式是這種:
使用 lerna init 后,packages 里面也有你的包了,這時候我們要先進行第一次發布,直接進入 packages/你的包目錄,執行:npm publish --access=public,
發布完以后,下次你就可以在主項目里面使用:lerna publish來管理了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/103367.html
摘要:目前最常見的解決方案是和的特性。具體的使用方法移步官網而使用作為包管理器的同學,可以在中以字段聲明,就會以的方式管理。這樣的話,無論你的包管理器是還是,都能發揮的優勢要是包管理是,就會把依賴安裝交給處理。 最近我接手了一個項目,代碼量比較大、有點復雜。倉庫 clone 下來代碼有 50+ MB,npm install 安裝完體積飚到了近 2GB …… 熟悉了一下,這個項目比較復雜,采用...
摘要:最近發現公司一個項目的目錄組織挺奇怪的,所有的子項目都放在了目錄里,還有這種騷操作特意查了下資料,發現是一種比較流行的項目管理模式。 最近發現公司一個項目的目錄組織挺奇怪的,所有的子項目都放在了packages目錄里,還有這種騷操作?特意查了下資料,發現是一種比較流行的monorepo項目管理模式。近幾年比較火的React,Vue,Babel都是用的這種模式: showImg(http...
摘要:從到完美,寫一個庫庫前端組件庫之前講了很多關于項目工程化前端架構前端構建等方面的技術,這次說說怎么寫一個完美的第三方庫。使用導出模塊,就可以在使用這個庫的項目中構建時使用功能。 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫 之前講了很多關于項目工程化、前端架構、前端構建等方面的技術,這次說說怎么寫一個完美的第三方庫。 1. 選擇合適的規范來寫代碼 js 模塊化的發展大致有...
摘要:從到完美,寫一個庫庫前端組件庫之前講了很多關于項目工程化前端架構前端構建等方面的技術,這次說說怎么寫一個完美的第三方庫。使用導出模塊,就可以在使用這個庫的項目中構建時使用功能。 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫 之前講了很多關于項目工程化、前端架構、前端構建等方面的技術,這次說說怎么寫一個完美的第三方庫。 1. 選擇合適的規范來寫代碼 js 模塊化的發展大致有...
摘要:打造個人團隊適用的開源項目規范是一個用來優化托管在上的多代碼庫的工作流的一個管理工具可以讓你在主項目下管理多個子項目,從而解決了多個包互相依賴,且發布時需要手動維護多個包的問題。 打造個人or團隊適用的開源項目規范 lerna Lerna 是一個用來優化托管在gitnpm上的多package代碼庫的工作流的一個管理工具,可以讓你在主項目下管理多個子項目,從而解決了多個包互相依賴,且發布...
閱讀 3399·2021-11-24 09:38
閱讀 1395·2021-11-22 15:08
閱讀 1470·2021-09-29 09:35
閱讀 487·2021-09-02 15:11
閱讀 1311·2019-08-30 12:55
閱讀 395·2019-08-29 17:16
閱讀 499·2019-08-29 11:30
閱讀 426·2019-08-26 13:23