这里写目录标题
- 前言:
- 一、简介
- 二、新建项目使用
- 安装
- 生成结构
- 三、复用现有项目
- 执行命令
- 查看包
- 四、配置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 实例代码