Как обновить NPM зависимости

Менеджер пакетов Node (npm) предоставляет различные функции, помогающие вам устанавливать и поддерживать зависимости вашего проекта.

Зависимости могут устаревать со временем из-за исправлений ошибок, новых функций и других обновлений. Чем больше у вас зависимостей проекта, тем сложнее следить за обновлениями.

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

Как поддерживать зависимости в актуальном состоянии

Теперь вы можете по очереди просматривать каждый отдельный пакет в package.json, чтобы изменить версию и запустить npm install <package>@latest, чтобы получить последнюю версию. Но это будет не самый эффективный метод.

Представьте, что у вас 20 или более пакетов, которым не помешало бы изменение версии. Вместо этого вам следует разработать рабочий процесс для периодической проверки наличия новых версий, пока количество устаревших зависимостей не выросло и обновлять их становится все труднее.

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

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

В этой статье я подробно рассмотрю методы проверки и обновления зависимостей.

Как использовать команду npm outdated

npm outdated

Эта команда проверит каждую установленную зависимость и сравнит текущую версию с последней версией в реестре npm. Результат будет выведен в виде таблицы с указанием доступных версий.

Она встроена в npm, поэтому не требуется скачивать дополнительные пакеты. npm outdated - это хорошее место для начала, чтобы получить представление о количестве необходимых обновлений зависимостей.

  • Current - текущая установленная версия.
  • Wanted - максимальная версия пакета в соответствии с диапазоном semver.
  • Latest - версия пакета, помеченная как последняя в реестре npm.

С помощью этого метода для установки обновлений для каждого пакета достаточно выполнить:

npm update

Помните, что при использовании npm update никогда не произойдет обновление до версии, содержащей серьезные изменения. Он обновляет зависимости в package.json и package-lock.json. Будет использоваться "желаемая" версия.

Для получения "последней" версии добавьте @latest к отдельным установкам, например, npm install react@latest.

Как использовать npm-check-updates

Для более продвинутого и настраиваемого обновления я бы рекомендовал использовать npm-check-updates. Этот пакет может делать все то же самое, что и npm outdated и npm upgrade, с некоторыми дополнительными опциями настройки. Однако он требует установки пакета.

Чтобы начать работу, установите пакет npm-check-updates глобально:

npm install -g npm-check-updates

Затем запустите ncu, чтобы отобразить пакеты для обновления. Как и npm outdated, он не будет применять никаких изменений.

ncu
# Проверка package.json
[====================] 12/12 100%

@testing-library/user-event ^13.5.0 → ^14.2.1
@types/jest ^27.5.2 → ^28.1.4
@types/node ^16.11.42 → ^18.0.1

# Запустите ncu -u для обновления package.json

Чтобы обновить зависимости, вам нужно просто выполнить:

ncu --upgrade

# или
ncu -u

  • Красный = мажор
  • Голубой = минор
  • Зеленый = патч

Это обновляет зависимости только в файле package.json и выбирает последнюю версию, даже если она содержит разрушающие изменения. При использовании этого метода npm install не запускается автоматически, поэтому обязательно запустите его после обновления package-lock.json.

Чтобы выбрать желаемый тип версии, выполните ncu --target [patch, minor, latest, newest, greatest].

Как использовать интерактивный режим с npm-check-updates

ncu --interactive

# или
ncu -i

Интерактивный режим позволяет выбрать определенные пакеты для обновления. По умолчанию выбираются все пакеты.

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

Есть несколько способов повысить интерактивность npm-check-updates.

ncu --interactive --format group

Эта команда группирует и упорядочивает пакеты по основным, второстепенным и патч-релизам.

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

Я настоятельно рекомендую ознакомиться с документацией, чтобы узнать больше обо всем, что может предложить этот пакет. Проект хорошо поддерживается, и на момент написания этой статьи еженедельная скорость загрузки составляла ~294,467.

Резюме

Регулярное обновление зависимостей поможет повысить безопасность и производительность ваших приложений.

npm outdated и npm-check-updates - полезные инструменты для проверки пакетов, которым не помешает обновление версии.

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

Надеюсь, эти методы помогут вам на пути к обновлению!


Если вы сталкиваетесь с трудностями в работе с NPM и ищете профессиональную помощь, Teacher Army может быть вашим идеальным партнером. Просто перейдите по ссылке и оставьте заявку, чтобы мы могли подобрать для вас опытного ментора по программированию.

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

Оригинальная статья

Перевела Дарья Крещёнова

04.12.2023