亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

像babel那樣使用lerna管理你的項(xiàng)目

Michael_Ding / 1274人閱讀

摘要:如何像那樣進(jìn)行多包管理呢項(xiàng)目的里面存放了旗下的所有包,比如。如果你不想這么麻煩,那么有一個(gè)辦法就是,不用,也就是你的包名不加前綴,這樣你的包就默認(rèn)是公共的包了,完全可以不用先去提交一次公共版本,才能使用來(lái)管理你的包,簡(jiǎn)單多了。

溫馨提示:請(qǐng)直接看最后面的正確操作,如果不懂,再回顧全文。 如何像 babel 那樣進(jìn)行多包管理呢?

babel 項(xiàng)目的 packages 里面存放了 babel 旗下的所有包,比如:babel-core。

我們?cè)诎惭b babel 的時(shí)候一般不是這樣裝的:yarn add babel,而是這樣安裝的:yarn add @babel/babel-core,這是由于 babel 進(jìn)行了分包管理的緣故,又因?yàn)?npm 支持scope packages,所以我們可以這樣子來(lái)安裝包。

我們?cè)賮?lái)看scope packages,npm 支持以@符開(kāi)頭的包名稱(chēng),把它叫做有范圍的包,示例:@somescope/somepackage。

但是在發(fā)布包的時(shí)候,npm 會(huì)把這種包當(dāng)成是你的私有包來(lái)進(jìn)行發(fā)布,一般我們是發(fā)布不了的,因?yàn)?npm 會(huì)提示需要登錄等等東西,這個(gè)時(shí)候我們一般就加上一個(gè)參數(shù),告訴 npm 我們要發(fā)布的這個(gè)包是一個(gè)公共包:npm publish --access=public,不出意外這個(gè)包就可以發(fā)布成功了。

別人要安裝你的包:yarn add @somescope/somepackage,看起來(lái)跟安裝 babel-core 一致了。

但是還差點(diǎn)東西,就是利用 lerna 來(lái)進(jìn)行管理。

要達(dá)到類(lèi)似于 babel 那樣的管理方式,首先,你需要有scope packages,正好,我們現(xiàn)在有了一個(gè)@somescope/somepackage包,現(xiàn)在我們就用 lerna 來(lái)管理它。

首先,我們?cè)?github 上面新建一個(gè)倉(cāng)庫(kù),就叫做:testlerna 吧(使用已有倉(cāng)庫(kù)也行),然后克隆到本地,進(jìn)入到 testlerna 目錄,執(zhí)行:lerna init或者是lerna init -i(表示 packages 下面的包多帶帶使用版本號(hào)),這個(gè)時(shí)候,lerna 就為我們生成了這幾個(gè)東西:

testlerna
|-package.json
|-lerna.json
|-packages/

packages 目錄就是 lerna 要進(jìn)行管理的各種包的目錄,所有的包都會(huì)放在這個(gè)目錄下面。

接著執(zhí)行:lerna import ../scopepackage(假設(shè)咱們的這個(gè)@somescope/somepackage包是放在 scopepackage 目錄里面的),這樣就會(huì)把我們剛才發(fā)布的那個(gè)包導(dǎo)入到 packages 目錄里面,這時(shí)候目錄看起來(lái)像這個(gè)樣子:

testlerna
|-package.json
|-lerna.json
|-packages/
|--scopepackage/
|---package.json
|---...

做一些修修改改并執(zhí)行 git commit 后,我們就可以執(zhí)行lerna publish了,不出意外你的@somescope/somepackage也在 npm 上更新了,原來(lái)的那個(gè)@somescope/somepackage倉(cāng)庫(kù)可以刪除掉了,因?yàn)槲覀儼阉旁?testlerna 項(xiàng)目中進(jìn)行管理了,這樣就跟 babel 那樣的管理方式一樣了。

這種方式是有一丟丟麻煩,因?yàn)?npm 默認(rèn)會(huì)把 @ 開(kāi)頭的包當(dāng)成私有包來(lái)看待,就導(dǎo)致了如果不在 npm 上提交一次公共版本,執(zhí)行lerna publish時(shí)就會(huì)發(fā)布不了,可能lerna publish調(diào)用的 npm 命令是npm publish它沒(méi)有加--access=publish參數(shù)。

如果你不想這么麻煩,那么有一個(gè)辦法就是,不用scope package,也就是你的包名不加 @ 前綴,這樣你的包就默認(rèn)是公共的包了,完全可以不用先去提交一次公共版本,才能使用 lerna 來(lái)管理你的包,簡(jiǎn)單多了。

更新,不用像上面那么麻煩了,還得新建一個(gè)倉(cāng)庫(kù),你大可以把前面那種方法當(dāng)成是學(xué)習(xí) npm 的 scope package 吧。

正確的方式是這種:
使用 lerna init 后,packages 里面也有你的包了,這時(shí)候我們要先進(jìn)行第一次發(fā)布,直接進(jìn)入 packages/你的包目錄,執(zhí)行:npm publish --access=public,
發(fā)布完以后,下次你就可以在主項(xiàng)目里面使用:lerna publish來(lái)管理了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/103367.html

相關(guān)文章

  • Monorepo——大型前端項(xiàng)目的代碼管理方式

    摘要:目前最常見(jiàn)的解決方案是和的特性。具體的使用方法移步官網(wǎng)而使用作為包管理器的同學(xué),可以在中以字段聲明,就會(huì)以的方式管理。這樣的話,無(wú)論你的包管理器是還是,都能發(fā)揮的優(yōu)勢(shì)要是包管理是,就會(huì)把依賴(lài)安裝交給處理。 最近我接手了一個(gè)項(xiàng)目,代碼量比較大、有點(diǎn)復(fù)雜。倉(cāng)庫(kù) clone 下來(lái)代碼有 50+ MB,npm install 安裝完體積飚到了近 2GB …… 熟悉了一下,這個(gè)項(xiàng)目比較復(fù)雜,采用...

    ziwenxie 評(píng)論0 收藏0
  • lerna管理package

    摘要:最近發(fā)現(xiàn)公司一個(gè)項(xiàng)目的目錄組織挺奇怪的,所有的子項(xiàng)目都放在了目錄里,還有這種騷操作特意查了下資料,發(fā)現(xiàn)是一種比較流行的項(xiàng)目管理模式。 最近發(fā)現(xiàn)公司一個(gè)項(xiàng)目的目錄組織挺奇怪的,所有的子項(xiàng)目都放在了packages目錄里,還有這種騷操作?特意查了下資料,發(fā)現(xiàn)是一種比較流行的monorepo項(xiàng)目管理模式。近幾年比較火的React,Vue,Babel都是用的這種模式: showImg(http...

    PumpkinDylan 評(píng)論0 收藏0
  • 從 1 到完美,寫(xiě)一個(gè) js 庫(kù)、node 庫(kù)、前端組件庫(kù)

    摘要:從到完美,寫(xiě)一個(gè)庫(kù)庫(kù)前端組件庫(kù)之前講了很多關(guān)于項(xiàng)目工程化前端架構(gòu)前端構(gòu)建等方面的技術(shù),這次說(shuō)說(shuō)怎么寫(xiě)一個(gè)完美的第三方庫(kù)。使用導(dǎo)出模塊,就可以在使用這個(gè)庫(kù)的項(xiàng)目中構(gòu)建時(shí)使用功能。 從 1 到完美,寫(xiě)一個(gè) js 庫(kù)、node 庫(kù)、前端組件庫(kù) 之前講了很多關(guān)于項(xiàng)目工程化、前端架構(gòu)、前端構(gòu)建等方面的技術(shù),這次說(shuō)說(shuō)怎么寫(xiě)一個(gè)完美的第三方庫(kù)。 1. 選擇合適的規(guī)范來(lái)寫(xiě)代碼 js 模塊化的發(fā)展大致有...

    rollback 評(píng)論0 收藏0
  • 從 1 到完美,寫(xiě)一個(gè) js 庫(kù)、node 庫(kù)、前端組件庫(kù)

    摘要:從到完美,寫(xiě)一個(gè)庫(kù)庫(kù)前端組件庫(kù)之前講了很多關(guān)于項(xiàng)目工程化前端架構(gòu)前端構(gòu)建等方面的技術(shù),這次說(shuō)說(shuō)怎么寫(xiě)一個(gè)完美的第三方庫(kù)。使用導(dǎo)出模塊,就可以在使用這個(gè)庫(kù)的項(xiàng)目中構(gòu)建時(shí)使用功能。 從 1 到完美,寫(xiě)一個(gè) js 庫(kù)、node 庫(kù)、前端組件庫(kù) 之前講了很多關(guān)于項(xiàng)目工程化、前端架構(gòu)、前端構(gòu)建等方面的技術(shù),這次說(shuō)說(shuō)怎么寫(xiě)一個(gè)完美的第三方庫(kù)。 1. 選擇合適的規(guī)范來(lái)寫(xiě)代碼 js 模塊化的發(fā)展大致有...

    xiaolinbang 評(píng)論0 收藏0
  • 打造個(gè)人or團(tuán)隊(duì)適用的開(kāi)源項(xiàng)目規(guī)范

    摘要:打造個(gè)人團(tuán)隊(duì)適用的開(kāi)源項(xiàng)目規(guī)范是一個(gè)用來(lái)優(yōu)化托管在上的多代碼庫(kù)的工作流的一個(gè)管理工具可以讓你在主項(xiàng)目下管理多個(gè)子項(xiàng)目,從而解決了多個(gè)包互相依賴(lài),且發(fā)布時(shí)需要手動(dòng)維護(hù)多個(gè)包的問(wèn)題。 打造個(gè)人or團(tuán)隊(duì)適用的開(kāi)源項(xiàng)目規(guī)范 lerna Lerna 是一個(gè)用來(lái)優(yōu)化托管在gitnpm上的多package代碼庫(kù)的工作流的一個(gè)管理工具,可以讓你在主項(xiàng)目下管理多個(gè)子項(xiàng)目,從而解決了多個(gè)包互相依賴(lài),且發(fā)布...

    huangjinnan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<