跳到主要内容

2 篇博文 含有标签「Workspace」

查看所有标签

很多人第一次接触 pnpm workspaceyarn workspacemonorepo,都会有点懵:

为什么一个仓库里会有这么多包?它们又是怎么互相引用的?

这时候你大概率会看到一个词:Workspace

如果只用一句人话解释它,可以这么理解:

Workspace 就是把一个仓库里的多个包组织起来,让它们既能一起管理,又能直接互相依赖。

它最常见的使用场景,就是 Monorepo

比如一个前端仓库里,可能同时有:

  • 一个主应用
  • 一个组件库
  • 一个工具包
  • 一个命令行脚手架

这些包都放在同一个仓库里,但又不是一坨代码混在一起。
这时候,Workspace 就是把它们串起来的那套机制。

很多人第一次接触前端工程化时,看到 Monorepopnpm workspaceChangesets 这几个词,经常会有点混:

  • 它们是不是一回事?
  • 为什么总是一起出现?
  • 到底谁负责开发,谁负责发布?

其实它们不是同一种东西,而是处在不同层级

如果只用一句话总结三者关系,可以这么理解:

Monorepo 负责“组织方式”,pnpm workspace 负责“本地开发和依赖管理”,Changesets 负责“版本管理和发布”。

也就是说:

  • Monorepo 是一种架构思路
  • pnpm workspace 是落地这套架构的开发工具
  • Changesets 是给这套架构补上发版流程的工具

这篇文章就专门把这三者的分工讲清楚。