Lerna概述
用于管理具有多个包的 JavaScript 项目的工具。
将大型代码库拆分为独立的独立版本包对于代码共享非常有用。但是,跨多个存储库进行更改是混乱且难以跟踪的,并且跨存储库的测试很快就会变得复杂。
为了解决这些(以及许多其他)问题,一些项目会将他们的代码库组织成多包存储库(有时称为monorepos)。像Babel、React、Angular、 Ember、Meteor、Jest和许多其他项目在一个存储库中开发他们所有的包。
Lerna 是一个工具,可以优化使用 git 和 npm 管理多包存储库的工作流程。
Lerna 还可以减少开发和构建环境中大量包副本的时间和空间需求——通常是将项目划分为许多单独的 NPM 包的缺点。有关详细信息,请参阅文档。
Lerna repo 是什么样的
my-lerna-repo/ package.json packages/ package-1/ package.json package-2/ package.json
安装及基础项目结构
npm install --global lerna
mkdir lerna-repo && cd $_
npx lerna init
cd packages
mkdir common icons scripts
cd common
npm init -y
cd ../icons
npm init -y
cd ../scripts
npm init -y
常用指令
安装依赖
$ npm i # 安装项目全局依赖
$ lerna bootstrap # 安装所有子模块的依赖
$ lerna add {module} --scope={package} # 给某个模块添加一个依赖
$ lerna run start --scope={package} # 运行某个模块
$ # 运行所有子模块
$ lerna run start
$ # 运行 antd 模块,注意 scope 后为包名,而非文件名
$ lerna run start --scope antd
$ # 添加 --stream 参数,在终端打印运行日志信息
$ lerna run start --scope antd --stream
卸载依赖
lerna exec -- <command> [..args] # 在所有包中运行该命令
//例子
lerna exec --scope=antd yarn remove webpack # 将 antd 包下的 webpack 卸载
删除安装依赖
lerna clean
查看包是否发生了变化
lerna updated/diff
查看本地所有包列表
lerna list
发布前查看哪些包发生了变化
lerna changed
lerna 发包
lerna publish
lerna version # 只把包提交到 git , 并不发布到 npm
出错重新发包
lerna publish from-git
lerna publish from-package
发表评论
所有评论(0)