lerna简介
原生脚手架开发痛点分析
- 痛点一:重复操作
- 多Package本地link
- 多Package依赖安装
- 多Package单元测试
- 多Package代码提交
- 多Package代码发布
- 痛点而:版本一致性
- 发布时版本一致性
- 发布后相互依赖升级
Package越多,管理复杂度越高
lerna简介
Lerna is a tool that optimizes the workflow around managing multi-package repositories with git and npm.
lerna 是一个优化基于git+npm的多package项目的管理工具
优势
- 大幅减少重复操作
- 提升操作的标准化
Lerna 是架构优化的产物,它揭示了一个架构真理:项目复杂度提升,就需要对项目进行架构优化架构优化的主要目标往往都是以效能为目标。
官网:
案例🌰
使用lerna管理的大型项目:
- babel:github.com/babel/babel
- vue-cli:github.com/vuejs/vue-c…
lerna开发脚手架流程
基于lerna创建项目
-
安装lerna
npm install -g -lerna -
创建项目
git init your-cli-dir & cd your-cli-dir -
初始化lerna项目
lerna init -
创建Package
lerna create @your-cli/core packages -
安装依赖
lerna add mocha packages/core --dev -
删除依赖
lerna clean -
安装依赖
lerna bootstrap -
执行单元测试
lerna run test -
执行特定包的单元测试
lerna run test @your-cli-dir/core -
link项目
lerna link -
发布项目
lerna publish
Lerna 使用细节
-
lerna init:-
会自动化完成git初始化,但不会创建
.gitignore,这个必须要手动添加,否则会将node_modules目录都上传到git,如果node_modules已经加入git stage,可使用git reset HEAD <file>执行
unstage操作,如果文件已经被git监听到变更,可使用git checkout -- <filename>将变更作废,记得在执行操作之前将文件加入
.gitignore
-
-
lerna add:-
第一个参数:添加npm包名
-
第二个参数:本地package路径
-
选项
-
--dev:将依赖安装到devDependencies,不加时安装到dependencieslerna add <package> [loc] dev
-
-
-
lerna link:-
如果未发布上线,需要手动将依赖添加到
package.json再执行lerna link
-
-
lerna clean:- 只会删除
node_modules不会删除package.jsom中的依赖
- 只会删除
-
lerna exec和lerna run--scope属性后添加包名,而不是package路径,这点和lerna add用法不同
-
lerna publish:-
发布时会自动执行:
git add package-lock.json,所以package.json不要加入.gitignore -
先建远程仓库,并且同步一次master分支
-
执行
lerna publish前请先完成npm login -
如果发布的 npm 包名为
@xxx/yyy格式,需要先在npm注册名为:xxx的organization,否则可能会提交不成功 -
发布到
npm group时默认为private,所以需要在package.json中添加如下配置:"publishConfig":{ "access":"public" }
-