【Bun中文文档-Package manager】Workspaces

551 阅读1分钟

Bun 支持package.json中的workspaces。工作区使得开发复杂软件变得容易,这些软件作为一个由多个独立包组成的monorepo

要尝试它,请在package.jsonworkspaces字段中指定子包的列表;通常将这些子包放在名为packages的目录中。

{
  "name": "my-project",
  "version": "1.0.0",
  "workspaces": ["packages/*"]
}

Glob 支持 — Bun 支持"workspaces"中的简单<directory>/*通配符。完整的通配符语法(例如**?)尚未受支持。

这有一些主要优点。

  • 代码可以分成逻辑部分。 如果一个包依赖于另一个包,您可以简单地将其添加为bun add的依赖项。如果包b依赖于abun install会将您的本地packages/a目录符号链接到bnode_modules文件夹中,而不是尝试从 npm 注册表中下载它。
  • 依赖项可以被去重。 如果ab共享一个公共依赖项,它将被提升到根node_modules目录。这减少了冗余的磁盘使用量,并减少了同时安装多个版本的包时出现的与"依赖地狱"相关的问题。

⚡️ 速度 — 安装速度快,即使是对于大型 monorepo 也是如此。Bun 在 Linux 上约在500ms内安装Remix monorepo。

  • npm install快 28 倍
  • yarn install(v1)快 12 倍
  • pnpm install快 8 倍

img