教程 volta tutorial

工作区

有关如何在工作区环境中使用 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/advanced/hooks),您可以将它们放在子项目的 `.volta` 目录中,或者放在根目录的 `.volta` 目录中。Volta 将在每个由 `"extends"` 键指向的位置查找钩子,以便可以在任何需要的级别上自定义设置。

## 项目本地二进制文件

除了在每个级别查找钩子外,Volta 还将在每个级别检测项目本地依赖项,以便在运行第三方工具时使用。它将尝试在相对于每个由 `"extends"` 引用的文件的 `node_modules/.bin` 中找到它。