主题
工作区
有关如何在工作区环境中使用 Volta 的详细信息,其中单个仓库中有多个项目,并且它们都希望共享 Volta 设置。
此功能是在 Volta 0.8.2 中添加的,在之前的版本中将无法使用。
扩展配置
在 package.json
的 "volta"
部分中,您可以指定一个键为 "extends"
的条目。该条目的值应该是另一个 JSON 文件的路径,该文件也有一个 "volta"
部分。相对路径将相对于设置它们的文件进行解析。任何 Volta 设置(例如 "node"
或 "yarn"
版本)将与 "extends"
指向的文件中的设置合并,优先级给予当前文件。因此,如果您希望所有项目都使用单个 Node 版本,您可以在根目录设置这些版本,然后每个项目只需要 "extends": "../path/to/root/package.json"
。
示例
给定以下文件夹结构和 package.json
内容:
.
├── package.json
└── packages
├── cli
│ └── package.json
└── utils
└── package.json
package.json
{ "volta": { "node": "12.16.1", "yarn": "1.22.4" } }
packages/cli/package.json
{ "volta": { "extends": "../../package.json" } }
packages/utils/package.json
{ "volta": { "extends": "../../package.json" } }
在工作区的任何地方运行 node
都会使您使用 Node 12.16.1
。如果您在根 package.json
中更新该版本,它将自动用于所有项目,而无需在每个子项目中复制设置。
固定工具
当您在工作区内运行 volta pin
以选择工具的版本时,Volta 将始终将这些设置添加到它找到的_最近_的 package.json
中。因此,在上面的示例中,如果您在 packages/utils
子项目中运行 volta pin node@14
,Node 的新版本将被写入 packages/utils/package.json
并_仅_适用于 utils
子项目,而不适用于任何其他子项目。这允许您轻松地在每个项目的基础上自定义工具版本。
如果您希望使用 volta pin
对根配置进行更改,请先 cd
到工作区根目录,然后从那里运行 volta pin
。
钩子
如果您的项目使用项目钩子,您可以将它们放在子项目的 .volta
目录中,或者放在根目录的 .volta
目录中。Volta 将在每个由 "extends"
键指向的位置查找钩子,以便可以在任何需要的级别上自定义设置。
项目本地二进制文件
除了在每个级别查找钩子外,Volta 还将在每个级别检测项目本地依赖项,以便在运行第三方工具时使用。它将尝试在相对于每个由 "extends"
引用的文件的 node_modules/.bin
中找到它。