[en-Portuguese] Проблемы с пакетами npm? Вердаччо может стать решением

Это адаптированный контент из видео Vienna.js, Введение в Verdaccio, январь 2019 года. Для получения дополнительной информации см. раздел «Что такое Verdaccio? | Verdaccio


Verdaccio — это частный и легкий реестр прокси npm для пакетов NodeJs.

  • Конфигурация очень проста и выполняется локально через файл config.yaml, и позволяет изменять поведение по умолчанию, активировать плагины и внешние функции.

  • Он совместим со всеми менеджерами пакетов, такими как npm, yarn или pnpm.

  • Все публикуемые вами пакеты являются приватными и доступны только на основе вашей конфигурации.

  • Он кэширует все зависимости по требованию и ускоряет установку в локальных или частных сетях.

Реестр NPM

Реестр NPM — это коллекция публично зарегистрированных пакетов NodeJS, используемых разработчиками back-end и front-end. Эти пакеты можно загрузить и установить с помощью менеджеров пакетов, таких как: npm (npm Inc), yarn (Facebook, Google, Exponent, Tidle), pnpm (Zoltan Kochan). Независимо от того, какой менеджер мы используем для установки пакетов Node, они будут делать одно и то же: запросы к реестру NPM.

Когда мы устанавливаем пакет, мы ожидаем получить только один пакет, верно? Но правда в том, что когда мы устанавливаем пакет, мы получаем гораздо больше пакетов, чем ожидали.

В контексте javascript количество опубликованных пакетов превышает 100 тысяч и растет с каждым днем. Кори Хаус, эксперт по React и JavaScript, опубликовал в своем Twitter следующее заявление: «[…] в настоящее время 97% кода веб-приложений поступает из npm. Только 3% кода написано вами».

Другими словами, мы полностью зависим от реестра NPM и должны относиться к этому серьезно, поскольку этот реестр может дать сбой — как это уже произошло в августе 2018 года, когда сотрудник npm Inc случайно удалил некоторые пакеты.

Мы можем перечислить другие проблемы, которые могут возникнуть при использовании npm, например: задержки и проблемы с подключением, цены и безопасность вне нашего контроля, а также автономная разработка, которая имеет ряд ограничений.

Offline

Npm создает кэш, но не позволяет вам поделиться им (если вы не создадите прокси-запись); он не позволяет вам использовать некоторые команды CLI, такие как publish и info; изолированные рабочие области строгой политикой безопасности в некоторых компаниях, где необходимо обращаться в операционную команду за разрешениями.

Подключение

Медленное интернет-соединение снижает скорость загрузки. Некоторые пакеты могут быть повреждены из-за блокировки брандмауэра (например, в Китае), или интернет-планы очень ограничены (в России могут взимать 60 евро за отправку только 1 письма).

Безопасность

Доверяйте свой код сторонним компаниям; конфиденциальные данные могут попасть в npm.

Решение Вердаччо

Наличие журналов необходимо для масштабирования новых проектов, но частные источники — дорогая привилегия для небольших групп или стартапов. Verdaccio — это доступное решение всех проблем, которые мы видели до сих пор.

Его установка очень проста, просто установите его глобально, выполнив: npm install -global verdaccio@latest , и запустите его CLI командой verdaccio. Его также можно использовать с docker. Некоторые особенности Вердаччо:

Частная регистрация

Мы можем пользоваться всеми преимуществами и контролем реестра npm, не выставляя свой код на всеобщее обозрение, потому что все делается локально. Кроме того, если вы хотите использовать модифицированную версию какого-либо стороннего пакета, вы можете опубликовать свою версию локально с тем же именем.

Клиентские инструменты работают только с одной записью за раз, но мы можем связать все записи с ресурсом npm scope (~/.npmrc), как показано в примере ниже:

registry=https://registry.npmjs.org
@mycompany:registry=http://verdaccio-domain:4873
Войдите в полноэкранный режим Выход из полноэкранного режима

Однако этот способ сложен в обслуживании и несколько небезопасен, поскольку после случайной публикации на github токены могут попасть в открытый доступ.

Verdaccio — это приложение прокси-сервера npm, которое действует как посредник между клиентом и запросом ресурса с сервера npm.

Если вы используете несколько журналов в своей организации и вам необходимо получать пакеты из нескольких источников в одном проекте, Verdaccio позволяет вам объединить несколько журналов и получать пакеты из одной конечной точки.

Uplinks — это функция Verdacio для объединения нескольких записей. Пакет может быть получен несколькими записями в качестве запасного варианта, если одна из них не работает, у вас есть другая.

Кэш-пакет

Cache состоит из кучи зависимостей, организованных по именам. Зависимость, состоит из файла метаданных с пачкой tarballs, который представляет собой бинарную версию пакета. Кэш подстрахует вас в случае сбоя соединения с реестром или при полном отключении от сети.

Для хранения verdaccio используется файловая система, но вы можете использовать что-то другое, если вам нужно масштабирование, например, использовать Amazon s3 bucket для использования verdaccio в облаке.

Кэширование важно, особенно для непрерывной интеграции (CI), поскольку вы хотите избежать сбоев из-за внешних проблем. С помощью кэширования мы можем экономить пропускную способность и сокращать внешний трафик, особенно когда мы запускаем CI в облаке, ведь каждый мегабайт стоит денег.

Verdaccio очень рекомендуется использовать между сервером сборки и внешним протоколированием.

В нем есть плагины

С verdaccio можно использовать бесплатные плагины, например, плагины аутентификации (gitlab, LDAP), плагины хранения данных (AWS, GCP), а поскольку это приложение nodejs express, вы можете добавлять свои конечные точки или перехватывать запросы с помощью плагинов промежуточного ПО (npm audit).

Веб-интерфейс пользователя

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

Тесты E2E

Если вы используете monorepo, рекомендуется тестировать все пакеты перед их публикацией.


Как установить и настроить verdaccio

Установите вердаччо в глобальном масштабе:

$ yarn global add verdaccio
Войдите в полноэкранный режим Выход из полноэкранного режима

Запустите verdaccio для создания файла конфигурации по умолчанию config.yaml:

$ verdaccio
Войдите в полноэкранный режим Выход из полноэкранного режима

Откройте config.yaml в VSCode:

$ code ~/.config/verdaccio/config.yaml
Войдите в полноэкранный режим Выход из полноэкранного режима

Добавьте github в uplinks, и включите свой личный токен доступа в auth.token:

uplinks:
  npmjs:
    url: https://registry.npmjs.org/
  github:
    url: https://npm.pkg.github.com/
    auth:
      type: bearer
      token: <GITHUB_PERSONAL_TOKEN>
Войдите в полноэкранный режим Выход из полноэкранного режима

Добавьте пакеты, которые вы хотите запускать локально, в пакеты:

packages:
  '@belezanaweb/*':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: github
Войдите в полноэкранный режим Выход из полноэкранного режима

🙌🏼 Готово! Вердаччо настроен для использования!

Оцените статью
Procodings.ru
Добавить комментарий