在workspace中对包版本管理是一个非常复杂的工作,遗憾的是pnpm没有提供内置的解决方案,一部分开源项目在自己的项目中自己实现了一套包版本的管理机制,比如 Vue3、Vite 等。 pnpm 推荐了两个开源的版本控制工具: changesets rush 这里我采用了 changesets 来做依赖包的管理。选用changesets的主要原因还是文档更加清晰...
在workspace中对包版本管理是一个非常复杂的工作,遗憾的是pnpm没有提供内置的解决方案,一部分开源项目在自己的项目中自己实现了一套包版本的管理机制,比如Vue3、Vite等。 pnpm 推荐了两个开源的版本控制工具: changesets rush 这里我采用了changesets来做依赖包的管理。选用changesets的主要原因还是文档更加清晰一些,个...
所以综合看下来,lerna 在功能上和 pnpm workspace + changesets 没啥打的区别,但是在性能上更好点。 如果项目比较大,用 lerna 还是不错的,否则用 pnpm workspace + changesets 也完全够用了。 总结 monorepo 是在一个项目中管理多个包的项目组织形式。 它能解决很多问题:工程化配置重复、link 麻烦、执行命令麻烦...
在workspace中对包版本管理是一个非常复杂的工作,遗憾的是pnpm没有提供内置的解决方案,一部分开源项目在自己的项目中自己实现了一套包版本的管理机制,比如Vue3、Vite等。 pnpm推荐了两个开源的版本控制工具: changesets rush 这里我采用了changesets来做依赖包的管理。选用changesets的主要原因还是文档更加清晰一些,个人...
总之,不管是 npm workspace、yarn workspace 还是 pnpm workspace,都能达到在 npm install 的时候自动 link 的目的。 回过头来再来看 monorepo 工具的第二大功能:执行命令 在刚才的 demo 项目下执行 lerna run build 1. 输出是这样的: lerna 会按照依赖的拓扑顺序来执行命令,并且合并输出执行结果。
尽管如此,lerna的优势在于性能优化,如命令执行缓存和分布式任务支持。对于大型项目,lerna的这些特性可能是其优于pnpm workspace + changesets的选择。但在大多数情况下,pnpm和changesets的组合已经足以满足大部分monorepo需求。总结来说,monorepo工具的核心功能在于简化链接、命令执行和版本管理,而lerna和pnpm...
对于monorepo项目使用它会更加方便,当然单包也可以使用。主要区别在于项目下有没有pnpm-workspace.yaml,如果未指定多包,那么会当作普通包进行处理。那么,我们来看一下具体的步骤:1. 安装 sql复制代码pnpm add @changesets/cli -Dw 2. 初始化changeset配置 csharp复制代码npx changeset init 这个命令会在根目录下...
└── pnpm-workspace.yaml Turborepo 本文主要在changesets,所以此处简单介绍下~ Turborepo介绍 Turborepo是专为JavaScript和Typescript的monorepo项目设计的高性能构建系统。可以高效管理和构建项目中多个packages,通过缓存构建和测试结果,来提升开发和持续集成的效率。
pnpm 的代码主要集中在根目录下的 packages 目录中,其以 pnpm workspace 管理 monorepo。pnpm 采用 changesets 发包方案。packages 下的子包目录结构各异,但遵循一定逻辑。pnpm 项目主入口为 packages/pnpm/main.ts 文件,处理用户参数,将命令分发给相应的包执行。处理参数用到的包为@pnpm/parse-cli-...
pnpm add <package-name> --filter <workspace-name> # or pnpm add web --filter docs请注意你当前的 pnpm 版本,在 9.0 后pnpm 修改link-workspace-packages 的默认值为 false。该属性开启后,你在安装依赖时优先在本地链接,而不是从 registry(远程) 中下载。 所以在这个版本你若需要使用命令安装一个新的 ...