Node.jsМодуль 2: Экосистема npm
Основы npm
package.json, установка пакетов, версионирование
Цель урока
В этом уроке ты научишься:
- Понимать структуру package.json
- Устанавливать и удалять пакеты
- Работать с версиями
package.json
Главный файл конфигурации Node.js проекта.
Создание
# Интерактивное создание
npm init
# Быстрое создание с настройками по умолчанию
npm init -yСтруктура
{
"name": "my-project",
"version": "1.0.0",
"description": "Описание проекта",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "jest"
},
"keywords": ["node", "api"],
"author": "Имя <email@example.com>",
"license": "MIT",
"dependencies": {
"express": "^4.18.2"
},
"devDependencies": {
"jest": "^29.7.0"
}
}Основные поля
| Поле | Описание |
|---|---|
name | Имя пакета (lowercase, без пробелов) |
version | Версия в формате semver |
main | Точка входа |
scripts | Команды npm |
dependencies | Зависимости для production |
devDependencies | Зависимости для разработки |
Установка пакетов
Локальная установка
# Установка в dependencies
npm install express
npm i express # сокращение
# Установка в devDependencies
npm install jest --save-dev
npm i jest -D # сокращение
# Установка конкретной версии
npm install express@4.17.1
# Установка из package.json
npm install
npm iГлобальная установка
# Установка глобально
npm install -g nodemon
# Проверка глобальных пакетов
npm list -g --depth=0
# Удаление глобального пакета
npm uninstall -g nodemonУдаление пакетов
# Удаление из dependencies
npm uninstall express
npm remove express # альтернатива
# Удаление из devDependencies
npm uninstall jest --save-devВерсионирование (SemVer)
Формат: MAJOR.MINOR.PATCH
| Часть | Когда увеличивается |
|---|---|
| MAJOR | Несовместимые изменения API |
| MINOR | Новая функциональность (обратно совместимая) |
| PATCH | Исправления багов |
Диапазоны версий
{
"dependencies": {
"exact": "4.18.2", // Точная версия
"caret": "^4.18.2", // 4.x.x (MINOR и PATCH)
"tilde": "~4.18.2", // 4.18.x (только PATCH)
"greater": ">4.0.0", // Больше 4.0.0
"range": ">=4.0.0 <5.0.0", // Диапазон
"any": "*", // Любая версия
"latest": "latest" // Последняя версия
}
}Рекомендация
Используй ^ (caret) — это баланс между стабильностью и обновлениями.
package-lock.json
Фиксирует точные версии всех зависимостей.
{
"name": "my-project",
"lockfileVersion": 3,
"packages": {
"node_modules/express": {
"version": "4.18.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
"integrity": "sha512-..."
}
}
}Важно:
- Всегда коммить
package-lock.jsonв Git - Используй
npm ciдля точной установки из lock-файла
# Установка точно по lock-файлу (для CI/CD)
npm ciПолезные команды
# Информация о пакете
npm info express
# Поиск пакетов
npm search express
# Проверка устаревших пакетов
npm outdated
# Обновление пакетов
npm update
# Обновление до последних версий
npm update express@latest
# Проверка уязвимостей
npm audit
# Исправление уязвимостей
npm audit fix
# Список установленных пакетов
npm list
npm list --depth=0 # только top-levelПрактика
Задание 1: Создание проекта
Задача: Создай проект и установи express.
Решение:
mkdir my-api
cd my-api
npm init -y
npm install expressЗадание 2: Анализ версий
Задача: Какие версии подходят под ^2.5.3?
Ответ: 2.5.3, 2.5.4, 2.6.0, 2.9.9 (любая 2.x.x >= 2.5.3)
Проверь себя
- Чем
dependenciesотличается отdevDependencies? - Что означает
^в версии? - Зачем нужен
package-lock.json?