Skip to content

volta run

volta run 命令将运行您提供的命令,使用在命令行中指定的工具版本。它具有以下语法:

bash
使用自定义的 Node、npm 和/或 Yarn 版本运行命令

用法:
    volta run [FLAGS] [OPTIONS] <command> [--] [args]...

标志:
        --bundled-npm    强制 npm 使用与 Node 捆绑的版本
        --no-yarn        禁用 Yarn
        --verbose        启用详细诊断
        --quiet          防止不必要的输出
    -h, --help           打印帮助信息

选项:
        --node <version>         设置自定义 Node 版本
        --npm <version>          设置自定义 npm 版本
        --yarn <version>         设置自定义 Yarn 版本
        --env <NAME=value>...    设置环境变量(可多次使用)

参数:
    <command>    要运行的命令
    <args>...    传递给命令的参数

工作原理

任何没有直接指定版本的工具都将通过 Volta 的常规上下文检测来确定其版本,使用项目中的固定版本或默认版本。

注意 版本设置必须在您希望运行的命令_之前_。命令后的任何内容都将被视为参数,不会被 Volta 读取。

示例

使用特定 Node 版本运行

bash
# 使用 Node 14 运行 npm test
volta run --node 14 npm test

# 使用最新的 Node 16 运行脚本
volta run --node 16 node script.js

使用自定义包管理器版本运行

bash
# 使用特定的 npm 版本运行
volta run --npm 7.10.0 npm install

# 使用特定的 Yarn 版本运行
volta run --yarn 1.22.10 yarn add express

组合工具版本

bash
# 使用特定的 Node 和 npm 版本运行
volta run --node 14.17.0 --npm 6.14.13 npm install

# 使用 Node 16 和 Yarn 1.22.10 运行
volta run --node 16 --yarn 1.22.10 yarn build

使用捆绑的 npm 或禁用 Yarn

bash
# 强制使用与 Node 捆绑的 npm 版本
volta run --bundled-npm npm install

# 在环境中禁用 Yarn
volta run --no-yarn some-command

设置环境变量

bash
# 设置单个环境变量
volta run --env DEBUG=true npm test

# 设置多个环境变量
volta run --env NODE_ENV=production --env DEBUG=false node server.js

使用场景

volta run 命令适用于:

  1. 使用不同版本进行测试:在不更改默认或项目设置的情况下,针对不同的 Node.js 版本测试您的代码
  2. 一次性任务:为专门任务使用特定工具版本运行命令
  3. CI/CD 环境:在持续集成流水线中使用,针对多个 Node.js 版本进行测试
  4. 依赖项安装:使用特定版本的 npm 或 Yarn 安装依赖项
  5. 临时环境更改:在不影响全局设置的情况下使用修改的环境变量运行命令

常见模式

跨多个 Node 版本测试

bash
# 使用 Node 14 测试
volta run --node 14 npm test

# 使用 Node 16 测试
volta run --node 16 npm test

# 使用 Node 18 测试
volta run --node 18 npm test

使用特定版本运行 NPX 命令

bash
# 使用特定 Node 版本运行 create-react-app
volta run --node 16 npx create-react-app my-app

# 使用特定 Node 版本执行 TypeScript 编译器
volta run --node 14 npx tsc

脚本执行

bash
# 使用特定环境运行构建脚本
volta run --env NODE_ENV=production node build.js