使用lerna构建多package组件库

Lerna概述

用于管理具有多个包的 JavaScript 项目的工具。

将大型代码库拆分为独立的独立版本包对于代码共享非常有用。但是,跨多个存储库进行更改是混乱且难以跟踪的,并且跨存储库的测试很快就会变得复杂。

为了解决这些(以及许多其他)问题,一些项目会将他们的代码库组织成多包存储库(有时称为monorepos)。像BabelReactAngular、 EmberMeteorJest和许多其他项目在一个存储库中开发他们所有的包。

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

 

相关标签:
  • lerna
  • 组件库
0人点赞

发表评论

当前游客模式,请登陆发言

所有评论(0)