Skip to main content
Практика завдань

Що таке package.json і як працює npm?

package.json та npm

npm (Node Package Manager) є стандартним менеджером пакетів для Node.js. package.json — це файл маніфесту кожного проекту Node.js, який описує його залежності, скрипти, метадані та конфігурацію.


Структура package.json

json
{ "name": "my-app", "version": "1.0.0", "description": "Мій чудовий додаток Node.js", "main": "src/index.js", "scripts": { "start": "node src/index.js", "dev": "nodemon src/index.js", "test": "jest", "build": "tsc" }, "dependencies": { "express": "^4.18.2", "dotenv": "^16.0.0" }, "devDependencies": { "nodemon": "^3.0.0", "jest": "^29.0.0", "typescript": "^5.0.0" }, "engines": { "node": ">=18.0.0" } }

Основні поля

ПолеОпис
nameНазва пакету (повинна бути унікальною в npm)
versionSemVer: major.minor.patch
mainТочка входу для пакету
scriptsCLI скорочення, які виконуються з npm run
dependenciesПакети, необхідні в продакшені
devDependenciesПакети, необхідні тільки для розробки
peerDependenciesПакети, які споживач повинен надати
enginesНеобхідні версії Node.js/npm

Діапазони версій (SemVer)

json
"express": "4.18.2" // точна версія "express": "^4.18.2" // сумісна: >=4.18.2 <5.0.0 "express": "~4.18.2" // тільки патч: >=4.18.2 <4.19.0 "express": "*" // будь-яка версія (небезпечна!) "express": ">=4.0.0" // діапазон

package-lock.json

package-lock.json фіксує точні версії всіх встановлених пакетів (включаючи транзитивні залежності). Завжди комітте його!

package.json → вказує діапазони версій package-lock.json → фіксує точні вирішені версії node_modules/ → встановлені пакети (ніколи не комітте це)

Загальні команди npm

bash
# Встановити всі залежності npm install # Встановити пакет npm install express npm install --save-dev jest # dev залежність npm install -g nodemon # глобально # Видалити пакет npm uninstall express # Запустити скрипт npm run dev npm test # скорочення для npm run test npm start # скорочення для npm run start # Оновити пакети npm update npm outdated # переглянути застарілі пакети # Аудит безпеки npm audit npm audit fix # Переглянути інформацію про пакет npm info express npm list # дерево встановлених пакетів

npm Скрипти

json
{ "scripts": { "start": "node dist/index.js", "dev": "nodemon src/index.ts", "build": "tsc", "test": "jest --coverage", "lint": "eslint src/**/*.ts", "prestart": "npm run build", // виконується перед "start" "posttest": "echo 'Тести завершено'" // виконується після "test" } }

Хуки pre та post виконуються автоматично перед/після скриптів.


.npmrc

ini
# .npmrc — конфігурація npm registry=https://registry.npmjs.org/ save-exact=true # зберігати точні версії engine-strict=true # забезпечити поле engines

npm vs yarn vs pnpm

npmyarnpnpm
ШвидкістьДобраШвидкаНайшвидша
Використання дискаВисокеВисокеНизьке (жорсткі посилання)
Lockfilepackage-lock.jsonyarn.lockpnpm-lock.yaml
Робочі простори

Підсумок

package.json є дескриптором проекту для додатків Node.js. npm керує вашими залежностями, скриптами та версіями. Завжди комітте package-lock.json і додайте node_modules/ до .gitignore.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань