JavaRush /Курсы /Модуль 4: Node.js, Next.js и Angular /Управление зависимостями: установка, удаление, обновление...

Управление зависимостями: установка, удаление, обновление

Модуль 4: Node.js, Next.js и Angular
1 уровень , 4 лекция
Открыта

1. Что такое зависимости и зачем ими управлять

Любой современный проект на Node.js редко обходится без сторонних библиотек — будь то Express, lodash, chalk или даже что-то экзотичное вроде left-pad (да, это реальная библиотека, которая добавляет пробелы в начало строки — программисты иногда бывают очень ленивыми). Все эти библиотеки называются зависимостями (dependencies), потому что ваш проект зависит от них для своей работы.

npm (Node Package Manager) — это как огромный склад с миллионами пакетов, который позволяет быстро добавить в ваш проект нужную библиотеку, обновить её, удалить или заменить на другую.

2. Установка зависимостей: npm install

Основной синтаксис

Чтобы установить новую зависимость, используйте команду:

npm install <название_пакета>
# или коротко:
npm i <название_пакета>

Например, чтобы добавить популярную библиотеку chalk (для красивой раскраски текста в консоли):

npm install chalk

Что происходит после этого?

  • В папке node_modules/ появляется папка с библиотекой chalk и всеми её зависимостями.
  • В файле package.json в раздел dependencies добавляется запись:
{
  "dependencies": {
    "chalk": "^5.3.0"
  }
}
  • Создаётся или обновляется файл package-lock.json — он фиксирует точные версии всех установленных пакетов (и их зависимостей), чтобы у всех разработчиков был одинаковый набор библиотек.

Установка нескольких зависимостей

Можно установить сразу несколько пакетов, перечислив их через пробел:

npm install express morgan cors

Локальные и глобальные зависимости

Локальная установка (по умолчанию):

  • Библиотека устанавливается только для текущего проекта.
  • Хранится в папке node_modules/ рядом с вашим проектом.
  • Запись появляется в package.json.

Глобальная установка (редко нужна новичку):

  • Используйте ключ -g или --global.
  • Пакет устанавливается для всей системы, а не для конкретного проекта.
  • Пример: установка create-react-app или nodemon для запуска из любой папки.
npm install -g nodemon

Внимание: Не устанавливайте обычные зависимости глобально — это приведёт к путанице. Обычные библиотеки (Express, chalk и т.д.) всегда ставьте локально.

Установка devDependencies (зависимости только для разработки)

Иногда нужны библиотеки только для разработки — например, eslint, prettier, jest. Чтобы npm знал, что эти пакеты не нужны на продакшене, используйте флаг --save-dev или коротко -D:

npm install --save-dev eslint
# или
npm i -D jest

В package.json появится раздел:

{
  "devDependencies": {
    "eslint": "^8.0.0"
  }
}

Установка конкретной версии

Иногда нужно установить не последнюю, а определённую версию пакета. Например, если новая версия сломала ваш проект (такое бывает чаще, чем хотелось бы):

npm install express@4.18.2

3. Удаление зависимостей: npm uninstall

Иногда приходится признавать: "Эта библиотека была ошибкой". Или просто больше не нужна.

Удалить зависимость можно так:

npm uninstall <название_пакета>
# или коротко:
npm remove <название_пакета>

Пример:

npm uninstall chalk

Что произойдёт:

  • Папка с библиотекой исчезнет из node_modules/.
  • Запись исчезнет из package.json (из раздела dependencies или devDependencies).
  • Обновится package-lock.json.

Внимание: Если вы удалили пакет, но продолжаете пытаться его использовать в коде (например, require('chalk')), получите ошибку "Cannot find module".

Удаление из devDependencies

Если пакет был установлен как devDependency, удалять его нужно точно так же:

npm uninstall --save-dev eslint
# или
npm remove -D jest

Удаление нескольких пакетов

Можно удалить сразу несколько зависимостей:

npm uninstall express cors morgan

4. Обновление зависимостей: npm update

Мир npm не стоит на месте — новые версии библиотек выходят постоянно. Иногда это хорошо (исправляют баги, добавляют фичи), иногда — не очень (ломают обратную совместимость).

Обновление всех зависимостей

Чтобы обновить все зависимости до последних совместимых версий (с учётом ограничений в package.json):

npm update

npm посмотрит на версии в package.json (например, "^4.18.0") и обновит до самой свежей версии, подходящей под это ограничение (например, до 4.18.2, но не до 5.0.0).

Обновление одной зависимости

Можно обновить только одну библиотеку:

npm update <название_пакета>

Обновление до последней версии (игнорируя ограничения)

Если хотите обновить пакет до самой последней версии (даже если это major update — например, с 4.x.x на 5.x.x):

npm install <название_пакета>@latest

Пример:

npm install express@latest

Проверка устаревших пакетов

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

npm outdated

Вы увидите таблицу:

Package Current Wanted Latest Location
express 4.18.2 4.18.2 5.0.0 my-app
chalk 5.3.0 5.3.0 5.4.0 my-app
  • Current — текущая установленная версия
  • Wanted — максимальная версия, которую можно поставить без изменения ограничений в package.json
  • Latest — самая свежая версия на npm

Автоматическое обновление package.json

Если хотите, чтобы в package.json сразу прописалась самая свежая версия:

npm install <название_пакета>@latest --save

5. Удаление всех зависимостей (жесткая чистка)

Иногда проект превращается в "npm-болото": слишком много лишних библиотек, или кто-то случайно удалил папку node_modules/, и всё сломалось. Не беда!

Чтобы полностью пересобрать зависимости, просто удалите папку node_modules/ и файл package-lock.json, затем выполните:

npm install

npm прочитает ваш package.json и установит все нужные библиотеки заново.

6. Практика: пример установки, обновления и удаления

Давайте попробуем на практике. Представим, что вы разрабатываете To-Do приложение и решили добавить библиотеку для красивых логов.

1. Установка

npm install chalk

Теперь можно использовать chalk в коде:

// index.js
const chalk = require('chalk');
console.log(chalk.green('Task completed!'));

2. Обновление

Через месяц вышла новая версия chalk. Проверяем:

npm outdated

Видим, что есть новая версия. Обновляем:

npm install chalk@latest

3. Удаление

Решили, что зелёный цвет — это слишком. Удаляем chalk:

npm uninstall chalk

Пробуем запустить проект — получаем ошибку. Убираем все вызовы chalk из кода.

7. Особые случаи и нюансы

Случай 1: Установка пакета только для разработки

Например, для тестирования:

npm install --save-dev jest

Теперь в package.json:

{
  "devDependencies": {
    "jest": "^29.0.0"
  }
}

Случай 2: Установка глобального пакета

Часто используют для утилит, которые нужны во всех проектах:

npm install -g nodemon

Теперь можно запускать nodemon из любой папки.

Случай 3: Пакеты, которые не нужны в package.json

Иногда вы хотите просто поиграться с библиотекой, не записывая её в зависимости. Используйте флаг --no-save:

npm install chalk --no-save

8. Типичные ошибки при управлении зависимостями

Ошибка №1: Удалили зависимость вручную из node_modules, забыли про package.json.
Результат: при следующем запуске npm install она снова появится. Удаляйте зависимости только через npm uninstall.

Ошибка №2: Установили пакет глобально, а пытаетесь использовать его как локальный.
Результат: require не найдёт пакет, если он не установлен локально.

Ошибка №3: Не обновили package-lock.json.
Если вручную редактировать package.json и не запустить npm install, структура зависимостей может "поехать". Всегда используйте npm-команды для управления зависимостями.

Ошибка №4: Удалили пакет, но забыли убрать его из кода.
Результат — ошибка "Cannot find module". После удаления обязательно чистите код.

Ошибка №5: Обновили зависимости, а проект перестал работать.
Major-обновления могут быть несовместимы с вашим кодом. Перед обновлением читайте changelog и делайте бэкап (или используйте git).

Ошибка №6: Установили пакет без флага --save-dev, хотя он нужен только для разработки.
В итоге dev-зависимости попадают в production, увеличивая размер сборки.

Ошибка №7: Сломали package-lock.json вручную.
Этот файл лучше не трогать руками — npm сам всё сделает правильно.

1
Задача
Модуль 4: Node.js, Next.js и Angular, 1 уровень, 4 лекция
Недоступна
Установка зависимости для проекта
Установка зависимости для проекта
1
Задача
Модуль 4: Node.js, Next.js и Angular, 1 уровень, 4 лекция
Недоступна
Установка, обновление и удаление dev-зависимости
Установка, обновление и удаление dev-зависимости
3
Опрос
Введение в Node.js, 1 уровень, 4 лекция
Недоступен
Введение в Node.js
Введение в Node.js
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ