Это действие предоставляет следующие функции для пользователей GitHub Actions:
Опциональная загрузка и кэширование дистрибутива запрошенной версии Node.js и добавление ее в PATH.
Дополнительное кэширование зависимостей npm/yarn/pnpm.
Регистрация средств сопоставления проблем для вывода ошибок
Настройка аутентификации для GPR или npm
См. action.yml.
- использует: действия/setup-node@v4 with:# Версия Спецификация версии, которая будет использоваться в нотации SemVer.# Она также допускает такие псевдонимы, как lts/*, последняя, ночная и канареечная сборки# Примеры: 12.x, 10.15.1, >=10.15.0, lts/ Hydrogen, 16-ночная, последняя, nodenode-version: ''# Файл, содержащий спецификацию используемой версии. Примеры: package.json, .nvmrc, .node-version, .tool-versions.# Если указаны версия узла и файл версии узла, действие будет использовать версию из версии узла. node-version-file: ''# Установите этот параметр, если вы хотите, чтобы действие проверяло наличие последней доступной версии #, соответствующей спецификации версии.# Это повлияет только на версии lts Nodejs (12.x, >=10.15. 0, лтс/Водород). # По умолчанию: falsecheck-latest: false# Целевая архитектура для использования Node. Примеры: х86, х64. По умолчанию будет использоваться системная архитектура. # По умолчанию: ''. Действие использует архитектуру системы по умолчанию: ''# Используется для извлечения дистрибутивов узлов из 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-dependent-path: ''# Необязательный реестр для настройки аутентификации. Будет установлен реестр в файле .npmrc и .yarnrc уровня проекта, # и настроена аутентификация для чтения из env.NODE_AUTH_TOKEN.# По умолчанию: ''registry-url: ''# Необязательная область для аутентификации в реестрах с заданной областью. # Возвращается к владельцу репозитория при использовании реестра пакетов GitHub (https://npm.pkg.github.com/).# По умолчанию: ''scope: ''# Установите опцию Always-auth в файле npmrc.# По умолчанию : ''всегда-аутентификация: ''
Базовый:
шаги: - использует: действия/checkout@v4- использует: действия/setup-node@v4 with:node-version: 18- run: npm ci- run: npm test
Ввод node-version
не является обязательным. Если не указано, будет использоваться версия узла из PATH. Однако рекомендуется всегда указывать версию Node.js и не полагаться на системную версию.
Действие сначала проверит локальный кэш на наличие совпадений семвера. Если не удается найти определенную версию в кеше, действие попытается загрузить версию Node.js. Он будет извлекать версии LTS из выпусков версий узлов и в случае промаха или сбоя вернется к предыдущему поведению загрузки непосредственно с узла dist.
Для получения информации о локально кэшированных версиях Node.js в средах выполнения, размещенных на GitHub, ознакомьтесь с изображениями среды выполнения действий GitHub.
Входные данные node-version
поддерживают спецификацию семантического управления версиями. Более подробные примеры см. в документации пакета semver.
Примеры:
Основные версии: 18
, 20
Более конкретные версии: 10.15
, 16.15.1
, 18.4.0
Синтаксис NVM LTS: lts/erbium
, lts/fermium
, lts/*
, lts/-n
Последний выпуск: *
или latest
/ current
/ node
Примечание. Как и другие значения, *
получит последнюю версию Node.js, хранящуюся в локальном кэше, или последнюю версию из действий/версий узла, в зависимости от введенных данных check-latest
.
current
/ latest
/ node
всегда разрешается до последней версии дистрибутива. Затем эта версия загружается из action/node-versions, если это возможно, или напрямую из Node.js, если нет. Поскольку он не будет кэшироваться всегда, существует вероятность достижения ограничения скорости при загрузке с дистрибутива.
Всегда рекомендуется фиксировать файл блокировки вашего менеджера пакетов из соображений безопасности и производительности. Для получения дополнительной информации обратитесь к разделу «Работа с файлами блокировки» Расширенного руководства по использованию.
Действие имеет встроенный функционал кэширования и восстановления зависимостей. Он использует действия/кэш «под капотом» для кэширования данных глобальных пакетов, но требует меньше настроек конфигурации. Поддерживаемые менеджеры пакетов: 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:
шаги: - использует: действия/checkout@v4- использует: действия/setup-node@v4 with:node-version: 20cache: 'npm'- запустить: npm ci- запустить: тест npm
Кэширование зависимостей npm в монорепозиториях:
шаги: - использует: действия/checkout@v4- использует: действия/setup-node@v4 with:node-version: 20cache: 'npm'cache-dependent-path: subdir/package-lock.json- run: npm ci- run: npm test
задания: build:runs-on: ubuntu-lateststrategy: матрица:узел: [ 14, 16, 18 ]имя: Узел ${{matrix.node }} примеры шагов: - использует: действия/checkout@v4 - имя: Настройка узлов: действия/setup-node@v4with: версия узла: ${{matrix.node }} - запуск: npm ci - запуск: тест npm
setup-node
на ГГЭС setup-node
предварительно установлен на устройстве с GHES, если «Действия» включены. При динамической загрузке дистрибутивов Nodejs setup-node
загружает дистрибутивы из actions/node-versions
на github.com (за пределами устройства). Эти вызовы actions/node-versions
выполняются посредством неаутентифицированных запросов, количество которых ограничено 60 запросами в час на каждый IP-адрес. Если в течение этого периода будет сделано больше запросов, во время загрузки вы начнете видеть ошибки ограничения скорости, которые выглядят следующим образом: ##[error]API rate limit exceeded for...
. После этой ошибки экшен попытается загрузить версии напрямую с официального сайта, но у него также может быть ограничение по скорости, поэтому лучше поставить токен.
Чтобы получить более высокий лимит скорости, вы можете сгенерировать личный токен доступа на github.com и передать его в качестве входного token
для действия:
использует: действия/setup-node@v4with: токен: ${{ secrets.GH_DOTCOM_TOKEN }} версия узла: 20
Если исполнитель не может получить доступ к github.com, любые версии Nodejs, запрошенные во время выполнения рабочего процесса, должны поступать из кэша инструментов исполнителя. Дополнительную информацию см. в разделе «Настройка кэша инструментов на автономных бегунах без доступа к Интернету».
Проверьте последнюю версию
Использование файла версии узла
Использование разных архитектур
Использование канареечных версий v8
Использование ночных версий
Использование rc-версий
Кэширование данных пакетов
Использование нескольких операционных систем и архитектур
Публикация в npmjs и GPR с помощью npm
Публикация в npmjs и GPR с помощью пряжи
Использование частных пакетов
Скрипты и документация в этом проекте выпущены под лицензией MIT.
Вклады приветствуются! См. Руководство для участников
Будь милым. Ознакомьтесь с нашим кодексом поведения