Node.jsМодуль 2: Экосистема npm
Работа с зависимостями
dependencies, devDependencies, lock-файлы
Цель урока
В этом уроке ты научишься:
- Различать типы зависимостей
- Работать с lock-файлами
- Обновлять зависимости безопасно
Типы зависимостей
dependencies
Пакеты, необходимые для работы приложения в production.
npm install express{
"dependencies": {
"express": "^4.18.2",
"mongoose": "^8.0.0"
}
}devDependencies
Пакеты для разработки и тестирования.
npm install jest --save-dev
npm install typescript -D{
"devDependencies": {
"jest": "^29.7.0",
"typescript": "^5.3.0",
"eslint": "^8.55.0"
}
}peerDependencies
Зависимости, которые должен установить пользователь пакета.
{
"peerDependencies": {
"react": ">=16.8.0"
}
}optionalDependencies
Необязательные зависимости.
{
"optionalDependencies": {
"fsevents": "^2.3.0"
}
}Сравнение
| Тип | Установка | Когда использовать |
|---|---|---|
| dependencies | npm i | Runtime зависимости |
| devDependencies | npm i -D | Тесты, сборка, линтеры |
| peerDependencies | Пользователь | Плагины, библиотеки |
| optionalDependencies | npm i | Платформо-зависимые |
Lock-файлы
package-lock.json
Фиксирует точные версии всех зависимостей.
# Установка точно по lock-файлу
npm ci
# Обычная установка (может обновить lock)
npm installВажно
Всегда коммить package-lock.json в Git. Это гарантирует одинаковые версии у всех разработчиков.
npm ci vs npm install
| Команда | Поведение |
|---|---|
npm install | Обновляет lock-файл при необходимости |
npm ci | Строго следует lock-файлу, удаляет node_modules |
# Для CI/CD всегда используй npm ci
npm ciОбновление зависимостей
Проверка устаревших
npm outdatedВывод:
Package Current Wanted Latest Location
express 4.17.1 4.18.2 4.18.2 my-project
lodash 4.17.20 4.17.21 4.17.21 my-projectОбновление
# Обновить в пределах semver
npm update
# Обновить конкретный пакет
npm update express
# Обновить до последней версии
npm install express@latestnpm-check-updates
# Установка глобально
npm install -g npm-check-updates
# Проверка обновлений
ncu
# Обновление package.json
ncu -u
# Установка обновлений
npm installБезопасность
Аудит
# Проверка уязвимостей
npm audit
# Автоматическое исправление
npm audit fix
# Принудительное исправление (может сломать)
npm audit fix --forceSnyk
npm install -g snyk
snyk test
snyk monitorПрактика
Задание 1: Типы зависимостей
Задача: Установи express в dependencies и jest в devDependencies.
Решение:
npm install express
npm install jest --save-devЗадание 2: Обновление
Задача: Найди устаревшие пакеты и обнови их.
Решение:
npm outdated
npm updateПроверь себя
- Когда использовать devDependencies?
- Чем
npm ciотличается отnpm install? - Как проверить уязвимости?