Esta ação fornece a seguinte funcionalidade para usuários do GitHub Actions:
Opcionalmente, baixar e armazenar em cache a distribuição da versão solicitada do Node.js e adicioná-la ao PATH
Opcionalmente, armazenando em cache dependências npm/yarn/pnpm
Registrando correspondências de problemas para saída de erro
Configurando autenticação para GPR ou npm
Veja action.yml
- usa: ações/setup-node@v4 com:# Versão Especificação da versão a ser usada na notação SemVer.# Também admite aliases como lts/*, compilações mais recentes, noturnas e canárias# Exemplos: 12.x, 10.15.1, >=10.15.0, lts/ Hidrogênio, 16 noites, versão mais recente, nodenode: ''# Arquivo contendo a especificação da versão a ser usada. Exemplos: package.json, .nvmrc, .node-version, .tool-versions.# Se node-version e node-version-file forem fornecidos, a ação usará a versão da node-version. node-version-file: ''# Defina esta opção se desejar que a ação verifique a versão mais recente disponível # que satisfaça as especificações da versão.# Ela só terá efeito para versões lts Nodejs (12.x, >=10.15. 0, lts/hidrogênio). # Padrão: falsecheck-latest: false# Arquitetura de destino para o Node usar. Exemplos: x86, x64. Usará a arquitetura do sistema por padrão.# Padrão: ''. A ação usa a arquitetura do sistema por padrão: ''# Usado para extrair distribuições de nós de https://github.com/actions/node-versions. # Como existe um padrão, normalmente ele não é fornecido pelo usuário. # Ao executar esta ação em github.com, o valor padrão é suficiente. # Ao executar no GHES, você pode passar um token de acesso pessoal para github.com se estiver enfrentando limitação de taxa.## Recomendamos usar uma conta de serviço com o mínimo de permissões necessárias. Além disso# ao gerar um novo PAT, selecione o mínimo de escopos necessários.## [Saiba mais sobre como criar e usar segredos criptografados](https://help.github.com/en/actions/automating-your-workflow-with-github -actions/creating-and-using-encrypted-secrets)## Padrão: ${{ github.server_url == 'https://github.com' && github.token || '' }}token: ''# Usado para especificar um gerenciador de pacotes para armazenamento em cache no diretório padrão. Valores suportados: npm, yarn, pnpm.# O gerenciador de pacotes deve ser pré-instalado# Padrão: ''cache: ''# Usado para especificar o caminho para um arquivo de dependência: package-lock.json, yarn.lock, etc. Ele irá gerar hash do arquivo de destino para a chave primária. Funciona apenas se o cache for especificado. # Suporta curingas ou uma lista de nomes de arquivos para armazenar em cache múltiplas dependências.# Padrão: ''cache-dependency-path: ''# Registro opcional para configurar para autenticação. Definirá o registro em um arquivo .npmrc e .yarnrc de nível de projeto, # e configurará auth para leitura de env.NODE_AUTH_TOKEN.# Padrão: ''registry-url: ''# Escopo opcional para autenticação em registros com escopo definido. # Voltará para o proprietário do repositório ao usar o registro de pacotes GitHub (https://npm.pkg.github.com/).# Padrão: ''scope: ''# Defina a opção Always-auth no arquivo npmrc.# Padrão : ''sempre-auth: ''
Básico:
passos: - usa: ações/checkout@v4 - usa: ações/setup-node@v4 com:node-version: 18- run: npm ci- run: npm test
A entrada node-version
é opcional. Se não for fornecido, a versão do nó do PATH será usada. No entanto, é recomendável sempre especificar a versão do Node.js e não confiar na versão do sistema.
A ação primeiro verificará o cache local em busca de uma correspondência semver. Se não for possível encontrar uma versão específica no cache, a ação tentará baixar uma versão do Node.js. Ele extrairá versões LTS de lançamentos de versões de nó e, em caso de erro ou falha, retornará ao comportamento anterior de download diretamente do nó dist.
Para obter informações sobre versões armazenadas em cache local do Node.js em executores hospedados no GitHub, consulte GitHub Actions Runner Images.
A entrada node-version
suporta a especificação de versionamento semântico. Para exemplos mais detalhados, consulte a documentação do pacote semver.
Exemplos:
Versões principais: 18
, 20
Versões mais específicas: 10.15
, 16.15.1
, 18.4.0
Sintaxe NVM LTS: lts/erbium
, lts/fermium
, lts/*
, lts/-n
Versão mais recente: *
ou latest
/ current
/ node
Observação: como os outros valores, *
obterá a versão mais recente do Node.js armazenada em cache local ou a versão mais recente de actions/node-versions, dependendo da entrada check-latest
.
current
/ latest
/ node
sempre resolve para a versão dist mais recente. Essa versão é então baixada de actions/node-versions, se possível, ou diretamente de Node.js, se não. Como nem sempre será armazenado em cache, existe a possibilidade de atingir o limite de taxa ao fazer download de dist
É sempre recomendado submeter o arquivo de bloqueio do seu gerenciador de pacotes por motivos de segurança e desempenho. Para obter mais informações, consulte a seção "Trabalhando com lockfiles" do Guia de uso avançado.
A ação possui uma funcionalidade integrada para armazenar em cache e restaurar dependências. Ele usa ações/cache nos bastidores para armazenar dados de pacotes globais em cache, mas requer menos definições de configuração. Os gerenciadores de pacotes suportados são npm
, yarn
, pnpm
(v6.10+). A entrada cache
é opcional e o cache está desativado por padrão.
O padrão da ação é procurar o arquivo de dependência ( package-lock.json
, npm-shrinkwrap.json
ou yarn.lock
) na raiz do repositório e usa seu hash como parte da chave de cache. Use cache-dependency-path
para casos em que vários arquivos de dependência são usados ou estão localizados em subdiretórios diferentes.
Nota: A ação não armazena em cache node_modules
Veja os exemplos de uso de cache para entrada yarn
/ pnpm
e cache-dependency-path
no Guia de uso avançado.
Armazenando dependências npm em cache:
passos: - usa: ações/checkout@v4 - usa: ações/setup-node@v4 com:node-version: 20cache: 'npm'- run: npm ci- run: npm test
Armazenando dependências npm em cache em monorepos:
passos: - usa: ações/checkout@v4 - usa: ações/setup-node@v4 com: versão do nó: 20cache: 'npm'cache-dependency-path: subdir/package-lock.json- run: npm ci- run: npm test
trabalhos: build:runs-on: ubuntu-lateststrategy: matriz:node: [14, 16, 18]nome: Node ${{matrix.node }} etapas de amostra: - usa: actions/checkout@v4 - nome: Setup nodeuses: actions/setup-node@v4with: node-version: ${{ matrix.node }} - run: npm ci - run: npm test
setup-node
no GHES setup-node
vem pré-instalado no dispositivo com GHES se Actions estiver habilitado. Ao fazer download dinamicamente de distribuições Nodejs, setup-node
baixa distribuições de actions/node-versions
em github.com (fora do dispositivo). Essas chamadas para actions/node-versions
são feitas por meio de solicitações não autenticadas, que são limitadas a 60 solicitações por hora por IP. Se mais solicitações forem feitas dentro do período, você começará a ver erros de limite de taxa durante o download, semelhantes a: ##[error]API rate limit exceeded for...
. Após esse erro a ação tentará baixar as versões diretamente do site oficial, mas também pode ter limite de taxa então é melhor colocar token.
Para obter um limite de taxa mais alto, você pode gerar um token de acesso pessoal em github.com e passá-lo como entrada token
para a ação:
usa: actions/setup-node@v4with: token: ${{ secrets.GH_DOTCOM_TOKEN }} versão do nó: 20
Se o executor não conseguir acessar github.com, quaisquer versões do Nodejs solicitadas durante a execução de um fluxo de trabalho deverão vir do cache de ferramentas do executor. Consulte "Configurando o cache de ferramentas em executores auto-hospedados sem acesso à Internet" para obter mais informações.
Verifique a versão mais recente
Usando um arquivo de versão do nó
Usando arquiteturas diferentes
Usando versões canário v8
Usando versões noturnas
Usando versões rc
Armazenando dados de pacotes em cache
Usando vários sistemas operacionais e arquiteturas
Publicando em npmjs e GPR com npm
Publicando em npmjs e GPR com fio
Usando pacotes privados
Os scripts e documentação deste projeto são lançados sob a licença MIT
Contribuições são bem-vindas! Consulte o Guia do Colaborador
Seja legal. Veja nosso código de conduta