Перейти до основного змісту
Версія: 10.x

Автентифікація & Параметри реєстру (.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 set writes 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 ~/.npmrc instead of the repository — environment variables are still expanded there.

  • Or set the value via an environment variable directly, without any .npmrc entry:

    npm_config_//registry.npmjs.org/:_authToken=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  • In GitHub Actions, actions/setup-node with the registry-url input writes the auth setting to a user-level .npmrc (referenced by the NPM_CONFIG_USERCONFIG environment variable, which pnpm honors), so authentication via the NODE_AUTH_TOKEN environment variable continues to work.

  • If you cannot easily modify each CI pipeline, you may declare the project .npmrc trusted by setting a single environment variable in the CI environment (for example, at the organization or workspace level):

    NPM_CONFIG_USERCONFIG=.npmrc

    This makes pnpm read the project's .npmrc as 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 tokenHelper may 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

Базова URL-адреса реєстру пакунків npm (включно з кінцевою косою рискою).

@jsr:registry

Додано у: v10.9.0

Базова 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>&#58;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