Skip to content

Monorepos: Lerna VS npm/yarn/pnpm workspace #274

Open
@yaofly2012

Description

@yaofly2012

Monorepo架构

image

  1. Monolith: 所有模块都在一个git仓库,一起发布部署
  2. Multi-Repo:一个模块一个git仓库
  3. Mono-Repo:所有模块都在一个git仓库,但是模块可以单独发布

Lerna

常用命令

Lerna本身命令就不多。

lerna init    // 初始化项目
lerna clean    // 清除项目中所有 node_modules
lerna create    // 创建项目中的子package'

lerna bootstrap // 会把所有包的依赖安装到项目根node_modules  
lerna add // 增加本地或者远程package 做为当前项目 packages 里面的依赖  例: `lerna add packageA --scope=packageB`  
lerna run // 运行所有包里面的有这个script的命令  
lerna exec // 在每个包中执行任意命令,例: `lerna exec 'npm remove lodash'`

// 发布相关
lerna changed // 列出下次发版lerna publish 要更新的包
lerna diff       // 自上次发布以来,对所有包或单个包进行区分 
lerna publish // 发布版本  

package权限控制 ???

由于所有的模块都在一个Git仓库里,一旦有了Git访问权限意味着你可以修改所有package的代码。比如说,开发web和开发mobile平台的是两个不同的团队,假如我作为web组的一员,一不小心修改了或删除了mobile项目的文件该怎么办?假如不加入任何限制,这种事情迟早会发生。
怎么办呢?

workspaces能替换Lerna吗

参考

  1. Lerna
  2. Is Lerna needed anymore with NPM 7.0.0's workspaces?
  3. Replacing Lerna + Yarn with PNPM Workspaces
  4. 为什么前端工程越来越爱使用Monorepo架构

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions