Мы используем npm за брандмауэром компании и, таким образом, используем настройки прокси и https-прокси в конфигурации npm. Это работает отлично, пока все модули npm загружаются из внешнего реестра. Но на самом деле у нас также есть внутренние модули на внутреннем github. Доступ к этим модулям, конечно, не должен использовать прокси. Мой вопрос: могу ли я указать список доменов в конфигурации npm, для которых прокси не должен использоваться? Что-то вроде переменной среды no_proxy в оболочке unix?
Как исключить определенные домены из прокси-сервера npm
Ответ 1
Предполагая, что ваша среда выглядит следующим образом:
- Создайте сервер с доступом в Интернет только через прокси: your.proxy.host:3128
- Локальный реестр Nexus: https://your.local.nexus.registry/nexus/content/groups/npm/
NPM должен использовать локальный реестр Nexus. Файл конфигурации:.npmrc
registry = https://your.local.nexus.registry/nexus/content/groups/npm/
Вы можете указать npm использовать прокси-сервер, установив переменные среды
http_proxy=http://your.proxy.host:3128
https_proxy=http://your.proxy.host:3128
но затем npm также попытается связаться с вашим (локальным) реестром Nexus с помощью прокси.
Вам нужно иметь одну из последних версий npm (npm 2.14.7 отлично работает) и установить дополнительную переменную среды, чтобы исключить ваш реестр Nexus из прокси:
no_proxy=your.local.nexus.registry
Ответ 2
Как указано adiesner, вы не можете установить noproxy
/no_proxy
в npm config
, поэтому единственный способ сделать это - через переменные среды:
npm config set registry "your.local.nexus.registry/nexus/content/groups/npm/"
export http_proxy="http://your.proxy.host:3128"
export https_proxy=$http_proxy
export no_proxy="your.local.nexus.registry"
Ответ 3
Начиная с NPM 6.4.1, выпущенного 2018-08-22, вы можете использовать опцию noproxy
даже с настроенным настраиваемым реестром.
Пример:
npm config set registry "http://<my-npm-registry-host>:<registry-port>"
npm config set proxy "http://<my-proxy-host>:<proxy-port>"
npm config set https-proxy "http://<my-proxy-host>:<proxy-port>"
npm config set noproxy "my-proxy-host"
(принимает шаблон как *.domain)
Проверьте конфигурацию:
npm config list