К содержимому

Прокси для npm: npm config, .npmrc, pnpm и Yarn

Как заставить npm ставить пакеты через прокси: три настройки, куда их записать, логин и пароль, pnpm и Yarn, как отключить и как проверить, что всё работает.

Что меняет прокси и что нет

Прокси меняет только сетевой путь между вашим компьютером и реестром пакетов. Откуда npm скачивает пакеты, определяет отдельная настройка registry, поэтому прокси и зеркало реестра — разные вещи, одно не заменяет другое. Здесь речь о npm, а также коротко о pnpm и Yarn. Прокси внутри кода программы на Node.js описан в отдельном руководстве.

Три настройки npm, которые нужны

На странице настроек npm перечислены три ключа. proxy — прокси для исходящих http-запросов (тип: null, false или URL, по умолчанию null). https-proxy — прокси для исходящих https-запросов (URL, по умолчанию null); адрес реестра https://registry.npmjs.org — это https, поэтому обычно нужен именно этот ключ. noproxy — домены, для которых прокси не используется; по умолчанию берётся значение переменной NO_PROXY. Там же сказано, что библиотеки под капотом npm учитывают переменные HTTP_PROXY, HTTPS_PROXY и их варианты в нижнем регистре.

Задать прокси командой npm config

npm config set записывает ключ в пользовательский файл настроек, если не указать --location. npm config get выводит значение, так что видно, что сохранено, а npm config delete удаляет ключи из всех файлов настроек. Задайте оба ключа одним HTTP-адресом; значения — это URL, где логин и пароль стоят перед хостом.

Задать прокси через npm config: пример

npm config set proxy http://USERNAME:PASSWORD@HOST:PORT
npm config set https-proxy http://USERNAME:PASSWORD@HOST:PORT
npm config get https-proxy

Замените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».

Логин и пароль

Если в логине или пароле есть символы вроде @, :, / или %, запишите их в процентном кодировании: @ — %40, : — %3A, / — %2F, % — %25. Именно это требует страница pnpm для адреса прокси с логином и паролем; двоеточие между ними не кодируется. В документации npm такого правила нет, поэтому после настройки проверьте результат командой npm ping (см. проверку ниже). Копировать значения из «Мои активы» надёжнее, чем набирать вручную. Помните, что файл настроек — обычный текст: пароль увидит каждый, кто может прочитать ~/.npmrc.

Файл .npmrc и какой из них главнее

Те же настройки можно вписать прямо в файл .npmrc. На странице npmrc перечислены четыре файла: проектный в корне проекта (действует только для него), пользовательский ~/.npmrc, глобальный $PREFIX/etc/npmrc и встроенный в сам npm, который изменить нельзя. Они разбираются в порядке приоритета; в примере сказано, что настройка в пользовательском файле перекрывает такую же в глобальном. Там же сказано, что в глобальном режиме проектный файл не читается. В значении можно написать ${NAME}, и npm подставит переменную окружения с таким именем, так что пароль не обязательно хранить в файле.

.npmrc в проекте: пример

# .npmrc in the project folder
proxy=http://USERNAME:PASSWORD@HOST:PORT
https-proxy=http://USERNAME:PASSWORD@HOST:PORT
noproxy=localhost,127.0.0.1

Замените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».

Переменные окружения

Страница настроек npm называет HTTP_PROXY, HTTPS_PROXY и NO_PROXY (и их варианты в нижнем регистре) переменными, которые учитывают библиотеки под капотом; pnpm по документации тоже обращается к ним. Они удобны для одного сеанса терминала: на диск ничего не пишется, настройка исчезает вместе с окном. В Windows PowerShell вместо export пишут $env:NAME = "value".

Переменные окружения на один сеанс: пример

export HTTPS_PROXY=http://USERNAME:PASSWORD@HOST:PORT
export HTTP_PROXY=http://USERNAME:PASSWORD@HOST:PORT
export NO_PROXY=localhost,127.0.0.1
npm ping

Замените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».

Адреса, которые не должны идти через прокси

Внутренние и локальные адреса внесите в noproxy (в npm это окончания доменов, принимается и строка через запятую) или в NO_PROXY, и npm будет обращаться к ним напрямую. В pnpm то же называется noProxy: строка через запятую с окончаниями доменов, для которых прокси не используется. Как имя хоста сопоставляется с записью, документация npm не объясняет, поэтому пишите нужный домен полностью и проверяйте.

SOCKS5

На странице настроек npm про SOCKS нет ни слова, как и на прочитанных нами страницах pnpm и Yarn, поэтому здесь только адреса HTTP-прокси. Для этих инструментов берите HTTP: при создании прокси в Proxy302 выберите протокол HTTP.

pnpm и Yarn

pnpm: настройки httpsProxy и httpProxy (тип url, по умолчанию null) и noProxy (строка через запятую). По документации pnpm, если httpsProxy не задан, проверяется переменная HTTPS_PROXY или https_proxy, так что переменные окружения выше работают и для pnpm; страница настроек добавляет, что настройки прокси читаются из .npmrc. Yarn (современный, Berry): на странице .yarnrc.yml есть httpProxy («прокси для HTTP-запросов») и httpsProxy («прокси для HTTPS-запросов»), в примерах адреса вида http://. Настройки noProxy на этой странице мы не нашли.

Yarn Berry: .yarnrc.yml: пример

httpProxy: "http://USERNAME:PASSWORD@HOST:PORT"
httpsProxy: "http://USERNAME:PASSWORD@HOST:PORT"

Замените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».

Как отключить прокси

npm config delete удаляет ключи из всех файлов настроек. Затем выполните npm config list: команда показывает все настройки, а с -l ещё и значения по умолчанию. Если прокси всё ещё виден, проверьте переменные окружения и в этом терминале сбросьте HTTP_PROXY, HTTPS_PROXY и NO_PROXY, а также .npmrc в проекте.

Отключить прокси: пример

npm config delete proxy https-proxy noproxy
npm config list

Здесь ничего не нужно заменять. Выполните обе команды как есть: первая удаляет три настройки, вторая показывает, что осталось.

Как проверить, что npm использует прокси

  1. Посмотрите, что задано

    Выполните npm config get proxy и npm config get https-proxy: они выведут сохранённые значения.

  2. Проверьте реестр командой ping

    npm ping обращается к настроенному реестру и проверяет аутентификацию. Если путь рабочий, вы увидите строку PING и строку PONG со временем в миллисекундах, при сбое — ошибку.

  3. Проверьте адрес выхода через curl

    Вторая команда ниже показывает IP, страну и сеть, которые видят сайты через тот же прокси.

  4. Затем установите что-нибудь небольшое

    В пустой папке выполните npm init -y и npm install is-odd. Если пакет установился, всё работает.

Проверка, что npm использует прокси: пример

npm ping
curl -x http://USERNAME:PASSWORD@HOST:PORT https://ipinfo.io/json

Замените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».

Частые ошибки

• 407 Proxy Authentication Required: прокси отклонил логин или пароль. Скопируйте их заново и проверьте процентное кодирование.

• npm ping завершается ошибкой или по таймауту: неверные HOST или PORT либо срок аренды закончился. Проверьте тот же адрес командой curl выше.

• Пакеты по-прежнему идут напрямую: выполните npm config list и поищите .npmrc в проекте или переменную окружения, которая перекрывает настройку.

• Пакет из внутреннего реестра компании не ставится: добавьте его домен в noproxy, чтобы npm обращался к нему напрямую.

Как это сделать с Proxy302

Для любой команды здесь нужны только хост, порт, логин и пароль прокси Proxy302. npm, pnpm и Yarn принимают HTTP-адрес, поэтому при создании прокси выберите HTTP. Трафик ротационных резидентных прокси оплачивается за ГБ, страна выхода задаётся при создании прокси; HTTP — порт 2222, SOCKS5 — порт 3333 на proxy.proxy302.com. Статический ISP IP фиксирован на весь срок аренды и не ротируется — удобно, если инструмент должен всегда выходить с одного адреса. HTTP или SOCKS5 выбирают при покупке, один IP работает с одним протоколом.

Как это сделать с Proxy302: шаги

  1. Шаг 1

    Откройте страницу ротационных резидентных прокси, выберите линию, оставьте протокол HTTP и нажмите «Проверить цену и создать».

  2. Шаг 2

    Откройте «Мои активы» (раздел консоли со всем, что вы купили) и скопируйте HOST, PORT, USERNAME и PASSWORD. На странице «Подключение» есть готовый пример с вашими данными.

  3. Шаг 3

    Подставьте значения в команды выше.

  4. Шаг 4

    Подтвердите выход запросом к https://ipinfo.io/json через прокси.

  5. Шаг 5

    Из материкового Китая сначала запустите вспомогательную программу на странице «Подключение» и держите её открытой, пока работает прокси.

Цены и ограничения

Бюджетная линия стоит $1,50 за ГБ, $1,35 за ГБ в пакете 100 ГБ и $1,20 за ГБ при 300 ГБ. Статический ISP IP — $0,50 за один день и $7,99 за 30 дней. Бесплатного пробного периода нет, минимальная покупка — 1 ГБ или один IP на один день. Набор доступных локаций меняется ежедневно.

Вопросы и ответы

Нужна ли отдельная настройка для зеркала реестра?

Да. Настройка registry определяет, откуда npm скачивает, а настройки прокси — по какому сетевому пути. Они независимы.

Нужно ли задавать и proxy, и https-proxy?

Адрес реестра — https, поэтому важнее всего https-proxy. Проще всего задать оба ключа одним адресом.

Работает ли это для глобальной установки npm install -g?

Работают пользовательский и глобальный файлы настроек и переменные окружения. Проектный .npmrc, по документации npmrc, в глобальном режиме не читается.

Можно ли использовать SOCKS5-прокси с npm?

В прочитанных нами страницах npm, pnpm и Yarn про SOCKS ничего нет. Используйте адрес HTTP-прокси.

Ссылки и источники

8
  1. npm Docs: config (proxy, https-proxy, noproxy)

    Официальная документация · Проверено:

    Read on 2 November 2026: proxy is the proxy for outgoing http requests (null, false or URL, default null); https-proxy is the proxy for outgoing https requests (null or URL, default null); noproxy is domain extensions that should not use any proxy, default the value of NO_PROXY, a comma-delimited string is accepted; HTTP_PROXY/HTTPS_PROXY and lower-case forms are honored by the libraries underneath.

    SOCKS is not mentioned. The page does not say how host names are matched against noproxy entries or that special characters must be percent-encoded.

  2. npm Docs: npmrc

    Официальная документация · Проверено:

    Read on 2 November 2026: four files (per-project .npmrc in the project root, per-user ~/.npmrc, global $PREFIX/etc/npmrc, built-in); options are resolved in priority order and a user-file setting overrides the global file; the project file is not read in global mode; ${VARIABLE_NAME} inserts an environment variable, ${VARIABLE_NAME?} gives an empty string if undefined.

  3. npm Docs: npm config

    Официальная документация · Проверено:

    Read on 2 November 2026: set writes keys to the user config unless --location is passed; get echoes values; delete removes keys from all config files; list shows all settings and -l adds defaults; --location takes global, user or project.

  4. npm Docs: npm ping

    Официальная документация · Проверено:

    Read on 2 November 2026: pings the configured or given registry and verifies authentication; success prints "npm notice PING <registry>" and "npm notice PONG <time>ms"; failure prints an error such as E404.

  5. pnpm Docs: network settings

    Официальная документация · Проверено:

    Read on 2 November 2026: httpsProxy and httpProxy (type url, default null) and noProxy (comma-separated string of domain extensions the proxy should not be used for); httpsProxy falls back to HTTPS_PROXY/https_proxy; a proxy URL with a username and password must be URL-encoded, with the colon between them not encoded.

  6. pnpm Docs: settings

    Официальная документация · Проверено:

    Read on 2 November 2026: lists httpsProxy, httpProxy and noProxy under network settings and says that proxy settings are read from .npmrc files.

  7. Yarn Docs: .yarnrc.yml

    Официальная документация · Проверено:

    Read on 2 November 2026: httpProxy ("Proxy to use when making an HTTP request") and httpsProxy ("Define a proxy to use when making an HTTPS request"), examples use http://proxy:4040.

    No noProxy entry and no mention of SOCKS were found on the page. Yarn 1 (Classic) was not checked.

  8. Proxy302 product facts and price list

    Наблюдение за продуктом · Проверено:

    Product facts file of the site (values checked against the console, the backend and the price table on 18-19 October 2026): products, prices in US$ (1 PTC = US$1), lease terms, protocols and ports, countries, quantity limits, no free trial.

Готовы попробовать?

Создайте аккаунт, пополните баланс и выберите ротируемый резидентный, статический ISP или дата-центр IP — настроить его в браузере можно за несколько минут.