此操作为 GitHub Actions 用户提供以下功能:
(可选)下载并缓存所请求的 Node.js 版本的分发版,并将其添加到 PATH
可选择缓存 npm/yarn/pnpm 依赖项
注册问题匹配器以进行错误输出
配置 GPR 或 npm 的身份验证
参见action.yml
- 使用:actions/setup-node@v4 with:# SemVer 表示法中使用的版本的版本规范。# 它还允许 lts/*、latest、nightly 和 canary builds 等别名# 示例:12.x、10.15.1、>=10.15.0、lts/ Hydrogen,16-nightly,latest,nodenode-version: ''# 包含要使用的版本的版本规范的文件。 示例:package.json、.nvmrc、.node-version、.tool-versions.# 如果同时提供了node-version 和node-version-file,则操作将使用node-version 中的版本。 node-version-file: ''# 如果您希望操作检查满足版本规范的最新可用版本,请设置此选项。# 它只会对 lts Nodejs 版本(12.x,>=10.15)产生影响。 0,lts/氢)。 # 默认值: falsecheck-latest: false# Node 使用的目标架构。示例:x86、x64。默认情况下将使用系统架构。# 默认值:''。该操作默认使用系统架构: ''# 用于从 https://github.com/actions/node-versions 拉取节点发行版。 # 由于有默认值,因此通常不是由用户提供的。 # 在 github.com 上运行此操作时,默认值就足够了。 # 在 GHES 上运行时,如果遇到速率限制,可以传递 github.com 的个人访问令牌。## 我们建议使用具有最少必要权限的服务帐户。另外#在生成新的 PAT 时,选择所需的最少范围。## [了解有关创建和使用加密机密的更多信息](https://help.github.com/en/actions/automating-your-workflow-with-github -actions/creating-and-using-encrypted-secrets)## 默认值:${{ github.server_url == 'https://github.com' && github.token || '' }}token: ''# 用于指定一个包管理器,用于在默认目录中进行缓存。支持的值:npm、yarn、pnpm。# 应预先安装包管理器# 默认值: ''cache: ''# 用于指定依赖文件的路径:package-lock.json、yarn.lock 等#它将从目标文件生成主键的哈希值。仅当指定缓存时才有效。 # 支持通配符或文件名列表来缓存多个依赖项。# 默认值: ''cache-dependency-path: ''# 用于设置身份验证的可选注册表。将在项目级别 .npmrc 和 .yarnrc 文件中设置注册表, # 并设置身份验证以从 env.NODE_AUTH_TOKEN 读取。# 默认值: ''registry-url: ''# 用于针对作用域注册表进行身份验证的可选范围。 # 使用 GitHub Packages 注册表 (https://npm.pkg.github.com/) 时将回退到存储库所有者。# 默认值: ''scope: ''# 在 npmrc 文件中设置 always-auth 选项。# 默认值: ''始终验证:''
基本的:
步骤: - 使用:actions/checkout@v4 - 使用:actions/setup-node@v4 with:节点版本:18-运行:npm ci-运行:npm test
node-version
输入是可选的。如果未提供,将使用 PATH 中的节点版本。但是,建议始终指定 Node.js 版本,不要依赖系统版本。
该操作将首先检查本地缓存是否有 semver 匹配。如果无法在缓存中找到特定版本,该操作将尝试下载 Node.js 的版本。它将从节点版本版本中提取 LTS 版本,并且在丢失或失败时将回退到直接从节点 dist 下载的先前行为。
有关 GitHub 托管运行器上本地缓存的 Node.js 版本的信息,请查看 GitHub Actions Runner Images。
node-version
输入支持语义版本控制规范,有关更详细的示例,请参阅 semver 包文档。
示例:
20
版本: 18
更具体的版本: 10.15
、 16.15.1
、 18.4.0
NVM LTS 语法: lts/erbium
、 lts/fermium
、 lts/*
、 lts/-n
最新版本: *
或latest
/ current
/ node
注意:与其他值一样, *
将获取最新的本地缓存 Node.js 版本,或从 actions/node-versions 获取最新版本,具体取决于check-latest
输入。
current
/ latest
/ node
始终解析为最新的 dist 版本。然后,如果可能的话,从 actions/node-versions 下载该版本,如果没有,则直接从 Node.js 下载。由于它不会始终被缓存,因此从 dist 下载时有可能达到速率限制
出于安全和性能原因,始终建议提交包管理器的锁定文件。有关更多信息,请参阅高级使用指南的“使用锁定文件”部分。
该操作具有用于缓存和恢复依赖项的内置功能。它在底层使用 actions/cache 来缓存全局包数据,但需要较少的配置设置。支持的包管理器有npm
、 yarn
、 pnpm
(v6.10+)。 cache
输入是可选的,默认情况下缓存是关闭的。
该操作默认在存储库根目录中搜索依赖文件( package-lock.json
、 npm-shrinkwrap.json
或yarn.lock
),并使用其哈希作为缓存键的一部分。当使用多个依赖文件或它们位于不同的子目录中时,请使用cache-dependency-path
。
注意:该操作不会缓存node_modules
请参阅高级使用指南中的对yarn
/ pnpm
和cache-dependency-path
输入使用缓存的示例。
缓存 npm 依赖项:
步骤: - 使用:actions/checkout@v4 - 使用:actions/setup-node@v4 with:节点版本:20cache:'npm'-运行:npm ci-运行:npm test
在 monorepos 中缓存 npm 依赖项:
步骤: - 使用:actions/checkout@v4 - 使用:actions/setup-node@v4 with:node-version: 20cache: 'npm'cache-dependency-path: subdir/package-lock.json- run: npm ci- run: npm test
作业:构建:运行:ubuntu-lateststrategy:矩阵:节点:[14,16,18]名称:节点${{matrix.node}}示例步骤: - 使用:actions/checkout@v4 - 名称:设置节点 使用:actions/setup-node@v4with:node-version:${{matrix.node }} - 运行:npm ci - 运行:npm test
setup-node
如果启用了操作, setup-node
会通过 GHES 预安装在设备上。动态下载 Nodejs 发行版时, setup-node
会从 github.com(设备外部)上的actions/node-versions
下载发行版。这些对actions/node-versions
调用是通过未经身份验证的请求进行的,每个 IP 每小时最多可处理 60 个请求。如果在该时间范围内发出更多请求,那么您将在下载过程中开始看到速率限制错误,如下所示: ##[error]API rate limit exceeded for...
。出现错误后,该操作将尝试直接从官方网站下载版本,但它也可能有速率限制,因此最好放置令牌。
要获得更高的速率限制,您可以在 github.com 上生成个人访问令牌并将其作为操作的token
输入传递:
使用:actions/setup-node@v4with:令牌:${{secrets.GH_DOTCOM_TOKEN }} 节点版本:20
如果运行程序无法访问 github.com,则工作流运行期间请求的任何 Nodejs 版本都必须来自运行程序的工具缓存。有关更多信息,请参阅“在无法访问互联网的自托管运行器上设置工具缓存”。
检查最新版本
使用节点版本文件
使用不同的架构
使用 v8 金丝雀版本
使用夜间版本
使用 rc 版本
缓存包数据
使用多种操作系统和架构
使用 npm 发布到 npmjs 和 GPR
使用yarn 发布到npmjs 和GPR
使用私有包
该项目中的脚本和文档是在 MIT 许可证下发布的
欢迎贡献!请参阅贡献者指南
乖一点。请参阅我们的行为准则