prune
为目标包生成部分 monorepo。输出将放置在名为 out
的目录中,包含以下内容
- 构建目标所需的所有内部包的完整源代码。
- 一个剪枝后的 lockfile,其中包含构建目标所需的原始 lockfile 的子集。
- 根目录
package.json
的副本。
示例
从具有以下结构的仓库开始
package.json
pnpm-lock.yaml
运行 turbo prune frontend
以在 out
目录中为 frontend
应用程序生成一个剪枝后的工作区
package.json
pnpm-lock.yaml (部分)
选项
--docker
默认为 false
。
更改输出目录,使其更易于与 Docker 最佳实践和图层缓存 一起使用。该目录将包含
- 一个名为
json
的文件夹,其中包含剪枝后的工作区的package.json
文件。 - 一个名为
full
的文件夹,其中包含剪枝后的工作区的完整源代码,用于构建目标所需的内部包。 - 一个剪枝后的 lockfile,其中包含构建目标所需的原始 lockfile 的子集。
使用上面相同的示例,运行 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
都用于隔离 monorepo 中的包,但它们用途不同,产生的输出也不同。
turbo prune
生成部分 monorepo,而 pnpm deploy
生成一个仅包含目标包内容的目录。
pnpm deploy
生成的目录具有自包含的 node_modules
,其中包含硬链接的内部依赖项。这使得生成的包是可移植的,可以直接复制到服务器使用,无需其他步骤。仓库结构不会保留,因为重点是生成独立的、可部署的包。