Skip to content

Conversation

@zhangmo8
Copy link
Collaborator

@zhangmo8 zhangmo8 commented Jun 3, 2025

Pull Request Description

此 PR 旨在全面从 npm / yarn 迁移至 pnpm

Changes:

  1. 本地使用 pnpm 进行开发
  2. CI/CD 迁移
  3. node version & pnpm version 管理

从开发体验来看

  1. 硬盘空间节省:pnpm 使用内容寻址存储,所有版本的所有包都存储在单个位置,通过硬链接引用,显著减少磁盘空间占用
  2. 安装速度更快:由于硬链接机制,已下载过的包可以立即使用,不需要重复复制
  3. 非扁平的 node_modules 结构:相比 npm/yarn 的扁平化结构,pnpm 创建了更符合 Node.js 模块解析算法的结构
  4. 避免幽灵依赖:只有在 package.json 中明确声明的依赖才能被访问,防止使用未声明的依赖
  5. 更安全的依赖树:每个包只能访问其直接依赖,避免潜在的安全问题
  6. 可以很好的结合 node 锁定 pnpm 的版本,达到每个开发者本地版本统一,且不同平台的行为相对一致,CI/CD 也一样
  7. 无需额外下载 yarn 等相关管理工具,只需要本地开启 corepack 即可 终端运行 corepack enable

后续扩展

  1. 得益于 pnpm workspace 的机制,我们可以很容易从代码中抽离共用的部分,并且加入 workspace 变成一个单独的 插件模块,即插即用(如 Electron 和 Renderer 公用的Events 模块,可进行抽离)
  2. 有效的依赖管理,拆分出 workspace 后,可以针对性的对模块进行依赖管理,无需所有的依赖都放在一个 package.json 中,造成依赖焦虑,如:在 main 中,我们只需要依赖 electron 相关的内容,无需 vue 等渲染依赖,那么可以单独使用 package.json 隔离,renderer 中同样

@zhangmo8 zhangmo8 changed the title feat: to pnpm refactor: migration to pnpm Jun 3, 2025
@zerob13
Copy link
Collaborator

zerob13 commented Jun 3, 2025

先合并到特定开发分支进行完整验证,后续再考虑完整推动迁移

@zerob13 zerob13 merged commit f4c5d44 into ThinkInAIXYZ:refactor/migration-to-pnpm Jun 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants