Гайд з Node.js · 1 хв читання

npm і yarn за проксі

Корпоративні мережі ламають npm install доволі передбачувано. Показуємо, як налаштувати npm і обидві основні версії yarn на встановлення через HTTP-проксі, плюс змінні оточення, спільні для всього інструментарію Node.

npm, yarn і HTTP-проксі

Пакетні менеджери качають через HTTPS, тож їм потрібен HTTP-проксі з підтримкою CONNECT — а це рівно те, чим є HTTP-ендпоінт s4m на порту 3128. npm тримає власний конфіг, тому змінних оточення в шелі не завжди достатньо: зазвичай у конфігу npm виставляють одразу proxy й https-proxy, щоб трафік до реєстру пішов куди треба. Два покоління yarn відрізняються: класичний yarn v1 читає власні налаштування proxy / https-proxy (і здебільшого поважає npm-ові), а Yarn Berry (v2+) використовує ключі httpProxy та httpsProxy у .yarnrc.yml.

Усі вони так само поважають стандартні змінні оточення http_proxy, https_proxy і no_proxy — це найшвидший спосіб пропхати разовий npm install на закритій машині. У s4m ви автентифікуєтеся парою USER:PASS на proxy.s4m.online:3128. Дивіться сторінку проксі й спільний гайд про змінні оточення; сусідній гайд про pip і conda покриває той самий сюжет для Python.

Налаштування npm, yarn v1 і Berry

Постійний конфіг для кожного інструмента плюс запасний варіант через змінні оточення. Підставте свої USER:PASS перед запуском.

bash
# --- npm: persistent config (writes to ~/.npmrc) ---
npm config set proxy       http://USER:[email protected]:3128
npm config set https-proxy http://USER:[email protected]:3128
npm config set noproxy     localhost,127.0.0.1,.internal
npm install
# To undo later:
# npm config delete proxy && npm config delete https-proxy

# --- yarn v1 (classic) ---
yarn config set proxy       http://USER:[email protected]:3128
yarn config set https-proxy http://USER:[email protected]:3128

# --- Yarn Berry (v2+): .yarnrc.yml ---
cat >> .yarnrc.yml <<'YML'
httpProxy: "http://USER:[email protected]:3128"
httpsProxy: "http://USER:[email protected]:3128"
YML

# --- Environment variables: quickest one-off fix ---
export https_proxy="http://USER:[email protected]:3128"
export http_proxy="http://USER:[email protected]:3128"
export no_proxy="localhost,127.0.0.1,.internal"
npm install

Полагодити npm install за проксі

У якому порядку діяти, коли встановлення відвалюється за таймаутом.

Переконайтеся, що річ у проксі

Запустіть npm install -ddd (або з --verbose) і пошукайте ETIMEDOUT чи ECONNREFUSED до реєстру — це вказує на заблоковане вихідне з'єднання, якому потрібен проксі.

Виставте npm proxy і https-proxy

Через npm config set задайте і proxy, і https-proxy на http://USER:[email protected]:3128. Трафік до реєстру йде по HTTPS, тож зазвичай вирішальний саме https-proxy.

Врахуйте версію yarn

Для yarn v1 — yarn config set; для Yarn Berry додайте httpProxy і httpsProxy у .yarnrc.yml. Змішувати два стилі конфігу не варто.

Додайте noproxy для внутрішніх реєстрів

Якщо у вас є ще й приватний реєстр у локальній мережі, додайте його хост у noproxy / no_proxy, щоб до нього ходили напряму, а не через зовнішній проксі.

Авторизація, приватні реєстри та граблі

Дві речі ламають встановлення навіть після того, як проксі прописано. Перша — спецсимволи в паролі: якщо в ньому є @, : чи #, закодуйте їх у URL-форматі (наприклад, @ стає %40), інакше конфіг розбере URL неправильно. Друга — суміш публічного й приватного реєстрів: додайте хост внутрішнього реєстру в noproxy, щоб до нього ходили напряму, тоді як публічний реєстр npm іде через проксі.

HTTP-ендпоінт s4m — автентифікований дата-центровий проксі з оплатою за спожите: рівно те, що треба CI-раннерам і машинам розробників, яким потрібно дістатися npm з-під контрольованого виходу в мережу. Це не резидентський проксі й не кеш пакетів; для встановлення без інтернету підіймайте справжнє дзеркало реєстру. Коли вашому CI потрібна одна вихідна IP-адреса для білого списку, додайте виділений персональний IP. 407 означає неправильні облікові дані — дивіться гайд про 407. Той самий ендпоінт обслуговує pip/conda й Docker; перевірити його можна інструментами.

FAQ

Відповіді на питання

Чому npm install зависає або відвалюється за таймаутом за проксі?

До реєстру ходять по HTTPS, а ваше вихідне з'єднання заблоковане. Виставте в npm proxy і https-proxy (та/або змінні оточення http_proxy/https_proxy) на http://USER:[email protected]:3128.

Як налаштувати Yarn Berry і чим це відрізняється від yarn v1?

yarn v1 використовує yarn config set proxy / https-proxy. Yarn Berry (v2+) — ключі httpProxy і httpsProxy у .yarnrc.yml. Тримайтеся одного стилю на проєкт, не змішуйте їх.

У паролі спецсимволи, і проксі не працює — чому?

npm розбирає значення проксі як URL, тож символи на кшталт @, : чи # у паролі мають бути закодовані в URL-форматі (наприклад, @ стає %40). Після кодування облікові дані розбираються правильно.

Як залишити внутрішній реєстр поза проксі?

Додайте ім'я хоста внутрішнього реєстру до списку noproxy (npm) або no_proxy (змінна оточення). Тоді до цього хоста ходять напряму, а трафік до публічного реєстру й далі йде через проксі.

Розблокуйте встановлення пакетів Node

Пустіть npm і yarn через автентифікований HTTP-ендпоінт на proxy.s4m.online:3128. Оплата за спожите, а коли CI потрібна одна адреса для білого списку — виділений IP.

Цю сторінку знаходять за запитами

Реальні пошукові фрази, на які відповідає ця сторінка — за посиланнями відкриються матеріали, що розкривають тему глибше.