Перейти к содержимому

6. npm и управление пакетами

Иллюстрация к уроку

npm (Node Package Manager) — крупнейший реестр пакетов в мире. Более 2 миллионов пакетов.

Окно терминала
# Создание нового проекта
npm init # интерактивно
npm init -y # с дефолтными значениями
{
"name": "my-api",
"version": "1.0.0",
"description": "REST API на Node.js",
"main": "src/index.js",
"type": "module",
"scripts": {
"start": "node src/index.js",
"dev": "nodemon src/index.js",
"test": "vitest",
"lint": "eslint src/"
},
"dependencies": {
"express": "^4.18.2",
"dotenv": "^16.0.3"
},
"devDependencies": {
"nodemon": "^3.0.0",
"vitest": "^1.0.0"
},
"engines": {
"node": ">=18.0.0"
}
}
Окно терминала
# Установка всех зависимостей из package.json
npm install # или npm i
# Установка конкретного пакета
npm install express
npm install [email protected] # конкретная версия
npm install express@latest # последняя версия
# Dev зависимости (только для разработки)
npm install --save-dev nodemon
npm install -D nodemon # сокращение
# Глобальная установка (для CLI инструментов)
npm install -g nodemon
npm install -g typescript
# Удаление пакета
npm uninstall express
npm uninstall -g nodemon
# Обновление пакетов
npm update # все пакеты
npm update express # конкретный пакет
npm outdated # список устаревших
# Аудит безопасности
npm audit
npm audit fix # автоисправление
# Просмотр информации о пакете
npm info express
npm list # список установленных
npm list --depth=0 # только топ-уровень
1.2.3
│ │ └── Patch — исправления багов
│ └──── Minor — новый функционал (обратно совместимый)
└────── Major — breaking changes
В package.json:
"express": "4.18.2" — точная версия
"express": "^4.18.2" — 4.x.x (minor и patch обновления)
"express": "~4.18.2" — 4.18.x (только patch обновления)
"express": "*" — любая (опасно!)
"express": ">=4.0.0" — 4.0.0 и выше
Окно терминала
# package-lock.json — фиксирует ТОЧНЫЕ версии всех зависимостей
# Всегда коммить в git!
# Если package-lock.json есть — npm ci быстрее и надёжнее
npm ci # точно воспроизводит lock файл (для CI/CD)
npm i # может обновлять в рамках semver
Окно терминала
# HTTP фреймворки
npm install express # самый популярный
npm install fastify # быстрее Express
npm install koa # минималистичный
npm install hono # edge-ready, современный
# База данных
npm install prisma # ORM (PostgreSQL, MySQL, SQLite)
npm install mongoose # MongoDB ODM
npm install pg # PostgreSQL
npm install better-sqlite3 # SQLite
# Утилиты
npm install dotenv # переменные окружения
npm install axios # HTTP запросы
npm install lodash # утилиты для данных
npm install date-fns # работа с датами
npm install uuid # генерация UUID
npm install zod # валидация данных
# Аутентификация
npm install jsonwebtoken # JWT
npm install bcryptjs # хэширование паролей
npm install passport # стратегии аутентификации
# Разработка
npm install -D nodemon # перезапуск при изменениях
npm install -D typescript # TypeScript
npm install -D eslint # линтер
npm install -D prettier # форматирование кода
{
"scripts": {
"start": "node src/index.js",
"dev": "nodemon src/index.js --watch src",
"build": "tsc -p tsconfig.json",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"lint": "eslint src/ --ext .js,.ts",
"lint:fix": "eslint src/ --ext .js,.ts --fix",
"format": "prettier --write src/",
"db:migrate": "prisma migrate dev",
"db:seed": "node prisma/seed.js",
"docker:up": "docker-compose up -d",
"docker:down": "docker-compose down"
}
}
Окно терминала
npm run dev # запуск dev
npm run test # тесты
npm run lint:fix # исправить lint ошибки
# pre и post хуки
npm run prebuild # выполнится до build
npm run build
npm run postbuild # выполнится после build
# .npmrc в корне проекта
registry=https://registry.npmjs.org/
save-exact=true # фиксировать точные версии
engine-strict=true # ошибка если не подходит engines
# Для приватных пакетов
@mycompany:registry=https://npm.mycompany.com/
Окно терминала
# Запустить package без глобальной установки
npx create-react-app my-app
npx prisma init
npx eslint --init
npx nodemon server.js
# Запустить конкретную версию
npx node@18 -e "console.log(process.version)"
Окно терминала
# pnpm — быстрее, экономит место (hard links)
npm install -g pnpm
pnpm install
pnpm add express
# yarn — популярная альтернатива от Facebook
npm install -g yarn
yarn install
yarn add express
# bun — всё-в-одном: runtime + package manager
# bun install (намного быстрее npm)
bun add express
Окно терминала
# Регистрация на npmjs.com, затем:
npm login
npm publish # публичный пакет
npm publish --access=public # для scoped (@name/pkg)
# Обновление версии
npm version patch # 1.0.0 → 1.0.1
npm version minor # 1.0.0 → 1.1.0
npm version major # 1.0.0 → 2.0.0
npm publish
  1. Создай новый проект npm init -y, добавь скрипты start, dev, test
  2. Установи express, dotenv как зависимости; nodemon как dev-зависимость
  3. Настрой nodemon для автоперезапуска при изменении файлов в src/
  4. Запусти npm audit — изучи отчёт о безопасности
  5. Попробуй npx для запуска команды без глобальной установки