這里寫目錄標題
- 前言:
- 一、簡介
- 二、新建項目使用
- 安裝
- 生成結構
- 三、復用現有項目
- 執行命令
- 查看包
- 四、配置package相互引用
- 導入現有的包
- 五、發布包
- 確定項目版本
- 發布項目
- 添加項目到到git
- 發布包到NPM包
- 發布出錯解決方案
- 五、實例代碼
前言:
將大型代碼倉庫分割成多個獨立版本化的 軟件包(package)對于代碼共享來說非常有用。但是,如果某些更改 跨越了多個代碼倉庫的話將變得很 麻煩 并且難以跟蹤,并且, 跨越多個代碼倉庫的測試將迅速變得非常復雜。
一、簡介
Lerna 是一種工具,針對 使用
git 和 npm
管理多軟件包代碼倉庫的工作流程進行優化
特點:
- Lerna 對任意數量的項目運行命令,它以最有效的方式、以正確的順序執行
- Lerna 管理你的發布流程,從版本管理到發布到 NPM
Lerna 速度很快
,甚至比大多數同類解決方案還要快
二、新建項目使用
安裝
注意
:add
、bootstrap
、link
三個命令在v7
后都不在維護
mkdir lerna-demo && cd lerna-demo
npm i lerna -g // 目前是 8.1.6
lerna -h
生成結構
你將啟動并運行一個工作 git 存儲庫,包括 npm 工作區,并且 lerna 可用于創建、版本控制和發布你想要開發的任何包
lerna init
# --independent/-i – 使用獨立的 版本控制模式。
# or
npx lerna init --packages="packages/*" #手動指定一組要匹配的模式
目錄結構
lerna-demo ├── lerna.json├── node_modules├── package-lock.json└── package.json
三、復用現有項目
我們已可以使用現有的項目來,來用
lerna init
,現有項目入口,接下來的項目講解將會使用這個現有項目
執行 init
lerna init
執行命令
執行每個包中的命令
# 運行每個項目中的dev
lerna run dev
# 同時運行多個命令
lerna run dev,build
執行單個包命令
lerna run dev --scope=v-cart
--scope
: v-cart 包名稱
查看包
lerna ls
四、配置package相互引用
v-user 添加 index.js
const baseInfo = {addr: "成都市",age: 20,name: "張三",};module.exports = {baseInfo}
v-cart
package.json
{"scripts": {
+ "build": "echo build v-cart",},"dependencies": {
+ "v-user":"1.0.0"}
}
添加 index.js
// import {baseInfo} from 'v-user'
let {baseInfo} = require('v-user')console.log(JSON.stringify(baseInfo));
運行命令:
yarn # 安裝所有包lerna run test --scope=v-cart
導入現有的包
lerna import
五、發布包
先將本地代碼跟 git 倉庫進行鏈接,如果是新分支,需要將分支先推送上去,我這以創建新的分支
lerna
為例
確定項目版本
lerna version --no-private
#--no-private 過濾掉private 項目
發布項目
lerna publish from-package
#--no-private 過濾掉private 項目
1 . 確保 鏡像源是 npm
npm config get registry
// https://registry.npmjs.org/
2. 查看是否登錄 npm, 沒有就請 npm login
進行登錄
npm whoami
添加項目到到git
發布包到NPM包
v-cart 項目已經被占用,所有我們將項目整體換個名字
ziyu-xxx
開頭
發布出錯解決方案
如果某些包已成功發布而其他包未成功發布,則
lerna publish
可能使存儲庫處于與某些更改的文件不一致的狀態。那么你可以運行lerna publish from-git
來重試發布相同的已標記版本,而不必在重試時再次更改版本。
五、實例代碼
github 實例代碼