Lerna包管理入門

原載于: http://www.darktan.top/2017/11/21/LernaPackageManagement1/
What
關(guān)于Lerna是什么? 官方給出的 走這 https://lernajs.io/
簡(jiǎn)單點(diǎn)說就是JavaScript的包管理系統(tǒng)。當(dāng)項(xiàng)目強(qiáng)解耦的時(shí)候,方便對(duì)于模塊進(jìn)行統(tǒng)一化管理。
Where
什么地方用? 關(guān)于什么地方用,這個(gè)問題,一般來講,一個(gè)項(xiàng)目需要多人合作每人負(fù)責(zé)一小塊內(nèi)容或者對(duì)團(tuán)隊(duì)外部的開發(fā)者有強(qiáng)依賴的時(shí)候,可能就需要強(qiáng)解耦。也就是說,模塊之間,影響需要降低至最小。一般來講,項(xiàng)目構(gòu)架是最重要的一環(huán)。Lerna只是作為管理的輔助工具,確切的說,是十分好用的一款輔助工具
When
什么時(shí)候? 這里還是說下程序
安裝
npm install --global lerna
初始化
lerna init
之后你的項(xiàng)目里會(huì)有個(gè)packages/文件夾 模塊放里面就行了
Who
誰來管?建議發(fā)包是某一個(gè)或某幾個(gè)項(xiàng)目負(fù)責(zé)人,在確認(rèn)模塊協(xié)同工作無誤時(shí)發(fā)包
Why
首先要保證模塊強(qiáng)拆分,沒人只要知道他擅長(zhǎng)的一小塊東西就可以了。普通開發(fā)者其實(shí)可以不用對(duì)全局有細(xì)致的了解。只要知道項(xiàng)目結(jié)構(gòu)就可以進(jìn)行開發(fā)。另外,由于其軟鏈機(jī)制,新的模塊間的協(xié)同工作也可以順利保證。
How
這是個(gè)重頭戲 其實(shí)也沒多少東西
依賴軟鏈
lerna bootstrap
這是Lerna里最重要的一條命令,會(huì)將依賴模塊軟鏈到開發(fā)中的模塊去,以至于改動(dòng)對(duì)于最終的使用模塊產(chǎn)生何種影響在開發(fā)時(shí)就有預(yù)知。
發(fā)包、版本控制
lerna publish
Lerna里有兩種版本控制模式,一種是同一版本的另一種是版本由模塊分開。要注意的是,publish 之后,每個(gè)模塊在npmjs(或其他代碼倉庫)都是一個(gè)獨(dú)立package存在。也就是說,其他項(xiàng)目其實(shí)也可以依賴本身該項(xiàng)目的任何一個(gè)模塊。需要模塊真*各司其職。兩種模式的配置可以在 lerna.json中進(jìn)行管理。
總結(jié)
安裝
npm install --global lerna
初始化
lerna init
寫模塊 (敲代碼)
模塊間用軟鏈依賴
lerna bootstrap
測(cè)試無誤
發(fā)包
lerna publish
其他一些命令
https://lernajs.io/
最后補(bǔ)充
MCCREE用這玩意是因?yàn)?nbsp;
畢竟不是我一個(gè)人的項(xiàng)目。團(tuán)隊(duì)其他人在參與,且后續(xù)升級(jí)會(huì)有新同學(xué)來折騰。
P2P和私有協(xié)議后續(xù)需要合作廠商進(jìn)行添加。
MCCREE會(huì)對(duì)CDN聯(lián)盟新的傳輸協(xié)議進(jìn)行支持。需要新增 loader 以及 demuxer。
PS: B站這個(gè)編輯器對(duì)科技區(qū)真心不友好。代碼不可以搞個(gè)高亮么。藍(lán)瘦香菇。╭(╯^╰)╮