Это действие предоставляет следующие функции для пользователей 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: ''# Используется для указания менеджера пакетов для кэширования в каталоге по умолчанию. Поддерживаемые значения: 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 - имя: Настройка nodeuses: действия/setup-node@v4with: версия узла: ${{matrix.node }} - запуск: npm ci - запуск: тест npmsetup-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 с помощью Yarn
Использование частных пакетов
Скрипты и документация в этом проекте выпущены под лицензией MIT.
Вклады приветствуются! См. Руководство для участников
Будь милым. Ознакомьтесь с нашим кодексом поведения