StudyCode
К практике
Начальныйnpmpipзависимости
📦Juniornpmpipзависимостиsemverpackage.json

Пакетные менеджеры и зависимости

npm, pip, semver, lock-файлы — как управлять чужим кодом в проекте.

Пакетные менеджеры — flow, semver, lock-файлы

Как npm install скачивает пакет:

npm install express

📦 npmjs.com (Registry)

2+ миллиона пакетов

↓ скачивает express + зависимости

node_modules/

├── express

│ ├── body-parser

│ ├── qs

│ ├── path-to-regexp

└── ...

node_modules в .gitignore! — не коммить (сотни МБ). Вместо этого коммить package.json + lock-файл.
Язык примеров:
Шаг 1 из 3
1

Зачем пакетный менеджер

Жизнь без пакетного менеджера

Тебе нужна библиотека для парсинга дат:

  1. Найти сайт библиотеки
  2. Скачать архив
  3. Распаковать в проект
  4. Обновить — повторить всё с начала
  5. Зависимость этой библиотеки — ещё раз всё с начала...

Пакетный менеджер — это удобно

Одна команда:

bash
npm install dayjs          # JavaScript
pip install requests       # Python
cargo add serde            # Rust

Менеджер скачивает пакет со всеми его зависимостями (transitive dependencies) из реестра.

Популярные реестры

javascript
npm (npmjs.com)    ← JavaScript/Node.js (2M+ пакетов)
PyPI (pypi.org)    ← Python
crates.io          ← Rust
Maven Central      ← Java
NuGet              ← .NET/C#

package.json / requirements.txt

Каждый проект описывает свои зависимости в файле:

json
{
  "name": "my-app",
  "dependencies": {
    "express": "^4.18.0",
    "dayjs": "^1.11.0"
  },
  "devDependencies": {
    "jest": "^29.0.0"
  }
}

dependencies — нужны в продакшне. devDependencies — только для разработки (тесты, линтер).

JavaScript
// package.json — манифест проекта
{
  "name": "my-api",
  "version": "1.0.0",
  "scripts": {
    "start": "node server.js",
    "dev":   "nodemon server.js",
    "test":  "jest"
  },
  "dependencies": {
    "express": "^4.18.2",
    "dotenv":  "^16.0.0"
  },
  "devDependencies": {
    "jest":     "^29.6.0",
    "nodemon":  "^3.0.0"
  }
}

// Команды npm:
// npm install            — установить все зависимости
// npm install express    — добавить пакет
// npm install -D jest    — добавить devDependency
// npm run dev            — запустить скрипт "dev"