Автентифікація & Параметри реєстру (.npmrc)
Параметри на цій сторінці необхідно налаштувати за допомогою файлів .npmrc. pnpm використовує інтерфейс командного рядка npm для публікації, тому ці налаштування мають бути у форматі, який може прочитати npm.
Докладніше про завантаження файлів .npmrc див. у команді pnpm config.
Щодо параметрів, які можна налаштувати у файлі pnpm-workspace.yaml, див. Налаштування (pnpm-workspace.yaml).
Змінні оточення
Values in .npmrc files may reference environment variables using the ${NAME} syntax.
Since v10.34.2, environment variables are not expanded in the project and workspace .npmrc files (those checked out together with the repository) for the following settings:
- registry and proxy URLs (
registry,@scope:registry,proxy,https-proxy,http-proxy); - URL-scoped keys (keys starting with
//); - credential values (
_authToken,_auth,_password,username,tokenHelper,cert,key).
A setting that contains a ${...} placeholder in any of these positions is ignored, and pnpm prints a warning. Repository-controlled .npmrc files must not be able to expand environment variables into the URLs pnpm sends requests to, or into the credentials attached to those requests — otherwise a malicious repository could exfiltrate secrets from your environment (such as CI tokens) to an attacker-controlled registry during installation (GHSA-3qhv-2rgh-x77r).
If your project relied on a committed .npmrc containing a line like //registry.npmjs.org/:_authToken=${NPM_TOKEN}, move the token to a trusted location instead:
-
Write the token to the global config file before installing (for example, in a CI step):
pnpm config set //registry.npmjs.org/:_authToken "$NPM_TOKEN"pnpm config setwrites to the global config file by default, not to the project.npmrc, so the token never ends up in the repository. -
Or keep the
${NPM_TOKEN}placeholder line, but put it in the user-level~/.npmrcinstead of the repository — environment variables are still expanded there. -
Or set the value via an environment variable directly, without any
.npmrcentry:npm_config_//registry.npmjs.org/:_authToken=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -
In GitHub Actions,
actions/setup-nodewith theregistry-urlinput writes the auth setting to a user-level.npmrc(referenced by theNPM_CONFIG_USERCONFIGenvironment variable, which pnpm honors), so authentication via theNODE_AUTH_TOKENenvironment variable continues to work. -
If you cannot easily modify each CI pipeline, you may declare the project
.npmrctrusted by setting a single environment variable in the CI environment (for example, at the organization or workspace level):NPM_CONFIG_USERCONFIG=.npmrcThis makes pnpm read the project's
.npmrcas the user-level config file (a relative path is resolved against the working directory), so environment variables in it are expanded as before. Because the trust declaration comes from the environment — not from the repository — a malicious repository cannot set it for you.небезпекаOnly use this in environments that exclusively build trusted repositories. It disables this protection entirely for the checked-out repository, including the restriction that
tokenHelpermay only be set in user-level config.
The same rule applies to registry and proxy URLs in a project or workspace .npmrc (registry, @scope:registry, proxy, https-proxy, http-proxy). If you used an environment variable to build a registry URL, move the setting to a trusted source — your user-level ~/.npmrc, the global config (pnpm config set "<key>" <value>), a CLI option, or an environment variable. If the URL is not secret, you can also write the resolved value directly in the project .npmrc, since only ${...} placeholders are ignored.
Налаштування реєстру
registry
- Стандартно: https://registry.npmjs.org/
- Тип: url**
Базова URL-адреса реєстру пакунків npm (включно з кінцевою косою рискою).
@jsr:registry
Додано у: v10.9.0
- Стандартно: https://npm.jsr.io/
- Тип: url**
Базова URL-адреса реєстру пакунків JSR.
<scope>:registry
Реєстр npm, який слід використовувати для пакунків вказаної області доступу. Наприклад, встановлення @babel:registry=https://example.com/packages/npm/ призведе до того, що при використанні pnpm add @babel/core або будь-якого пакунка з діапазоном @babel, пакунок буде отримано з https://example.com/packages/npm, а не зі стандартного реєстру.
Налаштування автентифікації
<URL>:_authToken
Визначає токен автентифікації на предʼявника, який буде використовуватися при доступі до вказаного реєстру. Наприклад:
//registry.npmjs.org/:_authToken=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Ви також можете використовувати змінну оточення. Наприклад:
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Since v10.34.2, environment variables are only expanded in trusted locations (the user ~/.npmrc, the global config, CLI options, and npm_config_* environment variables), not in the project or workspace .npmrc. See Environment variables.
Або ви можете використовувати змінну оточення безпосередньо, не змінюючи .npmrc взагалі:
npm_config_//registry.npmjs.org/:_authToken=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
<URL>:tokenHelper
Помічник токена — це виконуваний файл, який виводить токен авторизації. Його можна використовувати в ситуаціях, коли authToken не є постійним значенням, а регулярно оновлюється, коли скрипт або інший інструмент може використовувати наявний токен оновлення для отримання нового токену доступу.
Конфігурація шляху до помічника має бути абсолютним шляхом, без аргументів. З міркувань безпеки дозволено встановлювати це значення лише у файлі .npmrc користувача. Інакше проєкт може помістити значення у локальний файл .npmrc і запустити довільні виконувані файли.
Встановлення помічника токенів для стандартного реєстру:
tokenHelper=/home/ivan/token-generator
Встановлення помічника токена для вказаного реєстру:
//registry.corp.com:tokenHelper=/home/ivan/token-generator
Налаштування проксі
https-proxy
- Стандартно: null
- Тип: url**
Проксі-сервер для вихідних HTTPS-запитів. Якщо встановлено змінні оточення HTTPS_PROXY, https_proxy, HTTP_PROXY або http_proxy, замість них буде використано їхні значення.
Якщо URL-адреса вашого проксі містить імʼя користувача та пароль, переконайтеся, що вони закодовані в URL. Наприклад:
https-proxy=https://use%21r:pas%2As@my.proxy:1234/foo
Не кодуйте двокрапку (:) між іменем користувача та паролем.
http-proxy
proxy
- Стандартно: null
- Тип: url
Проксі для вихідних http-запитів. Якщо встановлено змінні оточення HTTP_PROXY або http_proxy, налаштування проксі будуть враховані базовою бібліотекою запитів.
local-address
- Стандартно: undefined
- Тип: IP Address
IP-адреса локального інтерфейсу для підключення до реєстру npm.
maxsockets
- Стандартно: networkConcurrency x 3
- Тип: Number
Максимальна кількість зʼєднань, які можна використовувати для одного джерела (комбінація протокол/хост/порт).
noproxy
- Стандартно: null
- Типи: String
Розділений комами рядок розширень доменів, для яких не слід використовувати проксі-сервер.
Налаштування SSL
strict-ssl
- Стандартно: true
- Тип: Boolean
Чи потрібно робити перевірку SSL-ключів при запитах до реєстру через HTTPS.
Дивіться також параметр ca.
Налаштування сертифіката
ca
- Стандартно: Сертифікат npm CA
- Тип: Array або null
Сертифікат підпису центру сертифікації, якому довіряють для SSL-зʼєднань з реєстром. Значення повинні бути у форматі PEM (також відомий як «Base-64 кодований X.509 (.CER)»). Наприклад:
ca="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
Встановіть значення null, щоб дозволити довіряти лише відомим реєстраторам, або певному сертифікату ЦС, щоб довіряти лише цьому конкретному центру сертифікації підписів.
Можна довіряти декільком центрам сертифікації, вказавши масив сертифікатів:
ca[]="..."
ca[]="..."
Дивіться також конфігурацію strict-ssl.
cafile
- Стандартно: null
- Тип: path
Шлях до файлу, що містить один або декілька сертифікатів підпису центру сертифікації. Подібно до параметра ca, але дозволяє використовувати декілька центрів сертифікації, а також зберігати інформацію про центри сертифікації у файлі замість того, щоб вказувати її за допомогою CLI.
<URL>:cafile
Визначає шлях до файлу центру сертифікації, який буде використовуватися при доступі до вказаного реєстру. Наприклад:
//registry.npmjs.org/:cafile=ca-cert.pem
<URL>:ca
Додано у: v10.25.0
Визначте вбудований сертифікат центру сертифікації для вказаного реєстру.
Значення має бути закодовано у форматі PEM, як і глобальний параметр ca, але воно застосовується лише
до відповідної URL-адреси реєстру.
//registry.example.com/:ca=-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----
cert
- Стандартно: null
- Тип: String
Клієнтський сертифікат, який потрібно передати при доступі до реєстру. Значення повинні бути у форматі PEM (також відомий як «Base-64 кодований X.509 (.CER)»). Наприклад:
cert="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
Це не шлях до файлу сертифіката.
<URL>:cert
Додано у: v10.25.0
Визначає вбудований сертифікат клієнта, який буде використовуватися при доступі до вказаного реєстру. Приклад:
//registry.example.com/:cert=-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----
<URL>:certfile
Визначає шлях до файлу сертифіката, який буде використовуватися при доступі до вказаного реєстру. Наприклад:
//registry.npmjs.org/:certfile=server-cert.pem
key
- Стандартно: null
- Тип: String
Ключ клієнта, який потрібно передати при доступі до реєстру. Значення повинні бути у форматі PEM (також відомий як «Base-64 кодований X.509 (.CER)»). Наприклад:
key="-----BEGIN PRIVATE KEY-----\nXXXX\nXXXX\n-----END PRIVATE KEY-----"
Це не шлях до файлу ключа. Використовуйте <URL>:keyfile, якщо вам потрібно посилатися на файлову систему, замість того, щоб вбудовувати ключ.
Цей параметр містить конфіденційну інформацію. Не записуйте його до локального файлу .npmrc, зафіксованого у репозиторії.
<URL>:key
Додано у: v10.25.0
Визначає вбудований ключ клієнта для вказаної URL-адреси реєстру.
//registry.example.com/:key=-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----
<URL>:keyfile
Визначає шлях до файлу клієнтського ключа, який буде використовуватися при доступі до вказаного реєстру. Наприклад:
//registry.npmjs.org/:keyfile=server-key.pem