prune
为目标包生成一个部分单体仓库。输出将放置在一个名为 out 的目录中,其中包含以下内容:
- 构建目标所需的所有内部包的完整源代码。
- 一个经过修剪的锁定文件,其中包含构建目标所需的原始锁定文件的子集。
- 根目录
package.json的副本。
示例
从具有以下结构的仓库开始:
package.json
pnpm-lock.yaml
运行 turbo prune frontend,在 out 目录中为 frontend 应用程序生成一个修剪后的工作区
package.json
pnpm-lock.yaml (部分)
选项
--docker
默认为 false。
更改输出目录,使其更易于与Docker 最佳实践和层缓存配合使用。该目录将包含:
- 一个名为
json的文件夹,其中包含修剪后的工作区的package.json文件。 - 一个名为
full的文件夹,其中包含修剪后的工作区中构建目标所需的内部包的完整源代码。 - 一个经过修剪的锁定文件,其中包含构建目标所需的原始锁定文件的子集。
使用与上述相同的示例,运行 turbo prune frontend --docker 将生成以下内容:
pnpm-lock.yaml (部分)
package.json (来自仓库根目录)
package.json (来自仓库根目录)
package.json
package.json
package.json
--out-dir <path>
默认为 ./out。
自定义生成修剪后输出的目录。
--use-gitignore[=<bool>]
默认值:true
将文件复制到输出目录时,遵守 .gitignore 文件。
与 pnpm deploy 的比较
虽然 turbo prune 和 pnpm deploy 都用于隔离单体仓库中的包,但它们的目的不同,产生的输出也不同。
turbo prune 生成一个部分单体仓库,而 pnpm deploy 生成一个只包含目标包内容的目录。
pnpm deploy 生成的目录具有一个自包含的 node_modules,其中包含硬链接的内部依赖项。这使得该包具有可移植性,可以直接复制到服务器并使用,无需额外步骤。仓库结构不会保留,因为重点是生成一个独立的、可部署的包。