turbo prune

为目标包生成部分单体仓库。输出将放入名为 out 的目录中,包含以下内容:

  • 构建目标所需的所有内部包的完整源代码。
  • 一个经过裁剪的锁文件,包含构建目标所需的原始锁文件的子集。
  • package.json 的副本。
Terminal
turbo prune [package]

示例

从具有以下结构的仓库开始:

package.json
pnpm-lock.yaml

运行 turbo prune frontendout 目录中为 frontend 应用程序生成一个经过裁剪的工作区:

package.json
pnpm-lock.yaml (partial)

选项

--docker

默认为 false

修改输出目录,使其更容易与 Docker 最佳实践和层缓存 一起使用。该目录将包含:

  • 一个名为 json 的文件夹,其中包含裁剪工作区的 package.json 文件。
  • 一个名为 full 的文件夹,其中包含裁剪工作区的内部包的完整源代码,这些包需要用于构建目标。
  • 一个经过裁剪的锁文件,包含构建目标所需的原始锁文件的子集。

使用上面的相同示例,运行 turbo prune frontend --docker 将生成以下内容:

pnpm-lock.yaml (partial)
package.json (from repo root)
package.json (from repo root)
package.json
package.json
package.json

--out-dir <path>

默认为 ./out

自定义生成裁剪输出的目录。

--use-gitignore[=<bool>]

默认值:true

在将文件复制到输出目录时遵循 .gitignore 文件。

pnpm deploy 的比较

虽然 turbo prunepnpm deploy 都用于隔离单体仓库中的包,但它们服务于不同的目的并产生不同的输出。

turbo prune 生成部分单体仓库,而 pnpm deploy 生成一个仅包含目标包内容的目录。

pnpm deploy 生成的目录具有带有硬链接内部依赖项的自包含 node_modules。 这会产生一个可移植的包,可以直接复制到服务器并使用,无需额外步骤。 不保留仓库结构,因为重点是生成一个独立的可部署包。