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 перед запуском.
# --- 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; перевірити його можна інструментами.
Відповіді на питання
Чому 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.
Цю сторінку знаходять за запитами
- npm і yarn за проксі
- curl через SOCKS5-проксі
- як перевірити npm і yarn за проксі
- npm і yarn за проксі для парсингу
- npm і yarn за проксі налаштування
- методи автентифікації SOCKS5 (RFC 1929)
- vpn kill switch інструкція
- http проксі з оплатою криптою
- як сконфігурувати wireguard
- openvpn
- wireguard
- FAQ про VPN і проксі
Реальні пошукові фрази, на які відповідає ця сторінка — за посиланнями відкриються матеріали, що розкривають тему глибше.