工作区
关于如何在工作区环境中使用 Volta 的详细信息,在这种环境中,单个仓库中有多个项目,它们都希望共享 Volta 设置。
TIP
此功能在 Volta 0.8.2 中添加,在之前的版本中不起作用。
扩展配置
在 package.json
的 "volta"
部分中,您可以指定一个键为 "extends"
的条目。该条目的值应该是另一个也有 "volta"
部分的 JSON 文件的路径。相对路径将相对于设置它们的文件进行解析。任何 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
中找到它。