Один общий прокси может не подойти для каждого источника пакетов. Современный Yarn поддерживает сетевые настройки по имени хоста, позволяя выбранному хосту использовать маршрут, отличный от стандартного.

Например, проект может сохранить общий маршрут и выбрать другой для внутреннего реестра:

httpsProxy: "http://203.0.113.10:8080"
networkSettings:
  "registry.example.internal":
    httpsProxy: "http://203.0.113.20:8080"

Оба адреса — примеры. Для общего маршрута к публичным источникам пакетов список HTTP-прокси предлагает кандидатов, когда публичные прокси разрешены. Оставьте переопределение внутреннего реестра на его одобренном прокси. Поместите конфигурацию в подходящий .yarnrc.yml для современной версии Yarn. Этот пример выбирает два прокси; он не означает, что внутренний хост должен подключаться напрямую.

Сопоставьте запрошенное имя хоста

Запись networkSettings применяется к шаблону имени хоста, а не к области пакета или произвольному пути URL. Оставляйте правило для одного хоста точным, если имеется в виду именно это. Подстановочный знак полезен только тогда, когда вы действительно хотите, чтобы дополнительные хосты использовали ту же конфигурацию.

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

Проследите весь путь загрузки

Если метаданные используют один хост, а загрузка архива — другой, они могут соответствовать разным сетевым настройкам. Запишите URL, который действительно завершается ошибкой, прежде чем расширять правило. «Реестр работал» не устанавливает, какой маршрут выбрал последующий запрос.

Настройки Yarn для отдельных хостов могут также включать CA и другую конфигурацию TLS. Держите эти решения отдельно: выбор адреса прокси сам по себе не даёт доверия, необходимого для среды инспекции.

Сделайте переопределение заметным

Проверьте действующую конфигурацию проекта инструментами, поддерживаемыми используемой версией Yarn, затем протестируйте нужный запрос. Не делитесь полным дампом конфигурации, если в нём есть учётные данные.

Эта функция полезна, когда хосты действительно требуют разных маршрутов. Если все запросы должны использовать одну и ту же конечную точку, одна общая настройка проще в поддержке, чем растущий список одинаковых переопределений имён хостов.

Похожие статьи