Ответ
Файл package.json — это фундаментальный манифест любого проекта Node.js. Он содержит метаданные о проекте и, что критически важно, управляет его зависимостями.
Основные разделы файла package.json:
-
Идентификация проекта:
name: Уникальное имя пакета (для публикации в npm).version: Текущая версия, следующая правилам семантического версионирования (SemVer) (MAJOR.MINOR.PATCH).
-
Управление зависимостями:
dependencies: Пакеты, необходимые для работы приложения в production. Устанавливаются командойnpm install <package>.devDependencies: Пакеты, необходимые только во время разработки (линтеры, тест-раннеры, инструменты сборки). Устанавливаются с флагом--save-dev.peerDependencies: Указывает, с какими версиями хост-пакетов (например, фреймворков) ваш пакет совместим.
-
Скрипты (Scripts):
scripts: Объект с пользовательскими командами, которые можно запускать черезnpm run <script-name>. Это основа автоматизации в Node.js.
-
Прочее:
engines: Может ограничивать версии Node.js и npm, необходимые для проекта (например,"node": ">=18.0.0").main: Точка входа в пакет (по умолчаниюindex.js).type: Может быть"module"для использования нативных ES-модулей.
Пример package.json для типичного Express-приложения:
{
"name": "my-express-api",
"version": "1.0.0",
"description": "A simple REST API",
"main": "src/index.js",
"type": "commonjs",
"scripts": {
"start": "node src/index.js",
"dev": "nodemon src/index.js",
"test": "jest",
"lint": "eslint .",
"lint:fix": "eslint . --fix"
},
"dependencies": {
"express": "^4.18.2",
"dotenv": "^16.3.1"
},
"devDependencies": {
"nodemon": "^3.0.1",
"jest": "^29.7.0",
"eslint": "^8.56.0"
},
"engines": {
"node": ">=18.0.0"
}
}
Пояснения к символам версий:
^4.18.2(каретка): Разрешает обновления до следующей мажорной версии (т.е. любые4.x.x, но не5.0.0). Наиболее распространённый префикс.~4.18.2(тильда): Разрешает только патч-обновления (т.е.4.18.x).4.18.2(точная версия): Фиксирует версию без возможности обновления.
Файл создаётся командой npm init и является отправной точкой для установки зависимостей (npm install), которая генерирует package-lock.json.