Это продолжение моего последнего блога Зачем нужны файлы блокировки. В предыдущем блоге мы видели, насколько важны файлы блокировки, этот пост посвящен тому, как мы можем эффективно их поддерживать.
Прежде чем перейти к самой теме, я хочу пролить свет на исследование «Закон убывающей отдачи».

Закон гласит, что в каждом жизненном цикле разработки наступает момент, когда усилия превышают объем выпуска, в основном ROI отрицателен. Как разработчики, мы несем ответственность за то, чтобы наш проект не вышел на стадию раньше. Текущий пост — один из таких способов отсрочить процесс убывающей отдачи во фронтенд-проектах.
Управление yarn.lock заключается в том, чтобы файл блокировки был тонким и обновленным, чтобы убедиться в отсутствии уязвимостей, а также чтобы не возникали проблемы с зависимостями при добавлении какого-либо нового пакета.
Это следующие способы, которыми мы можем обновлять наш файл блокировки. Я написал этот пост, предполагая, что в качестве менеджера пакетов используется пряжа, те же или эквивалентные функции доступны и в npm.
1.
Аудит пряжи
Дает четкое табличное представление установленных пакетов с проблемами безопасности. Существует пять уровней уязвимостей безопасности, и те, которые требуют немедленного внимания, — это ВЫСОКИЙ и КРИТИЧЕСКИЙ.

Их можно исправить, обновив его вручную или используя приведенную ниже команду, предоставленную npm. Yarn этого не предоставляет, поэтому это нужно делать вручную.
npm audit:fix
2.
пряжа устарела
Это очень полезная команда для получения установленных, требуемых и последних версий зависимостей в проекте. Иногда у нас могут быть установленные версии зависимостей, отличные от требуемых из-за разрешений.

Мы можем вручную просмотреть список и выбрать обновление пакетов по отдельности.
3.
yarn upgrade
Эта команда используется для обновления пакетов на основе диапазона, указанного в package.json. ~ установит последнюю версию исправления, тогда как ^ установит последнюю дополнительную версию. Это удалит существующий файл yarn.lock и создаст новый файл yarn.lock.
4.
yarn upgrade-interactive
Это очень интересная функция, предоставляемая пряжей, которая дает интерактивный способ обновления зависимостей. Это комбинация двух приведенных выше команд yarn old и yarn upgrade с некоторой интерактивной функцией для выбора зависимостей, которые необходимо обновить.

5.
Dependabot & Renovate
Это инструменты управления зависимостями, доступные в различных инструментах для совместной работы над кодом, таких как Github и т. д.
Эти инструменты создают автоматические PR для обновлений зависимостей. Мы можем запланировать зависимости для проверки инструментов. Самое приятное то, что оба этих инструмента бесплатны.
Dependabot создает PR для каждого обновления версии, и его очень легко настроить, что делает его простым в использовании. Тем не менее, каждый PR должен быть проверен, и, поскольку создается один PR для каждого обновления, это трудоемкий и громоздкий процесс.
Renovate, с другой стороны, решает вышеуказанные проблемы и обеспечивает отличный набор функций тоже. Проверку обновлений можно запланировать, и автоматические PR будут генерироваться в соответствии с предоставленной конфигурацией. Он также имеет функцию, при которой автоматический PR будет объединен с конвейером CI/CD.
Renovate имеет больше возможностей для адаптации и лучший набор функций, чем Dependabot.
6.
Snyk
Snyk — это облачный инструмент безопасности, созданный разработчиками впервые. Он охватывает несколько областей безопасности приложений.
Он имеет интерфейс командной строки, который можно интегрировать в любой конвейер CI/CD для сканирования проектов на наличие обновлений и уязвимостей безопасности. Однако это платный инструмент с моделью лицензирования freemium.

7.
Решения
В проекте может возникнуть ситуация, когда Зависимости A требуется последняя версия Зависимость B, однако проекту требуется более старая версия Зависимости B. Обычно наличие двух версий зависимостей не является проблемой, но такие библиотеки, как react, не рекомендуют использовать две версии в одном проекте. В этих случаях работают резолюции.
Разрешения должны использоваться только как последнее решение. Наличие большого количества разрешений может привести к аду зависимостей.
"resolutions": {
"react": "16.14.0",
"react-dom": "16.14.0",
},
Рекомендации
- Интегрируйте Renovate в свой инструмент для совместной работы над кодом. Это действительно полезно и не отнимает много времени у разработчика.
- Если вам не нужен Renovate, запускайте аудит пряжи и обновление пряжи каждые 30 дней либо вручную, либо интегрируйте его в конвейер CI/CD.
- Запустите yarn upgrade-interactive, чтобы проверить основные обновления и обновить пакеты.
- Используйте разрешение только в крайнем случае.