package.json faylına ətraflı baxış
-
Node.js layihələri ilə işləyərkən ən önəmli fayllardan biri
package.json
faylıdır. Bu fayl layihə haqqında bütün əsas məlumatları, istifadə olunan asılılıqları (paketləri), skriptləri və digər konfiqurasiyaları ehtiva edir. Bir sözlə, layihənin idarəetmə mərkəzidir.1. Əsas sahələr
name
Layihənin adıdır. Kiçik hərflərlə yazılmalı və boşluq əvəzinə
-
(kəsik xətt) istifadə edilməlidir."name": "my-first-app"
version
Layihənin versiyası. Bu versiya SemVer (Semantic Versioning) standartına əsaslanır:
MAJOR.MINOR.PATCH
(məs:1.2.3
)"version": "1.0.0"
description
Layihənin qısa izahı.
"description": "Node.js ilə hazırlanmış API tətbiqi"
main
Node.js tərəfindən layihənin əsas giriş faylı kimi istifadə edilən yol.
"main": "index.js"
scripts
Terminalda
npm run
əmri ilə işlədilə bilən skriptlər. Layihənin işə düşməsi, test olunması və s. bu sahədə qeyd olunur."scripts": { "start": "node index.js", "dev": "nodemon index.js", "test": "jest" }
keywords
Layihənin axtarışda tapılması üçün açar sözlər siyahısıdır.
"keywords": ["nodejs", "api", "express"]
author
vəcontributors
Layihəni hazırlayan və ya ona töhfə verən şəxslərin siyahısı.
"author": "Elvin Huseynov", "contributors": [ { "name": "Aygün Məmmədova", "email": "aygun@example.com" } ]
license
Layihənin hüquqi istifadəsini müəyyən edən lisenziya tipi (məs: MIT, ISC, GPL-3.0 və s.)
"license": "MIT"
2. Asılılıqlar (Dependencies)
Node.js layihələrində istifadə etdiyimiz kitabxanalar 3 əsas qrupa bölünür:
dependencies
Layihənin işləməsi üçün zəruri olan əsas paketlər.
"dependencies": { "express": "^4.18.2", "mongoose": "~6.12.1" }
devDependencies
Yalnız inkişaf zamanı lazım olan paketlər – məsələn, test alətləri, linters, bundlers və s.
"devDependencies": { "jest": "^29.7.0", "nodemon": "^3.0.1" }
peerDependencies
Bu sahədəki paketlər layihəyə daxil edilmir. Əsasən plugin və ya kitabxananın müəyyən versiya ilə işləməsini tələb edir.
"peerDependencies": { "react": ">=17.0.0" }
optionalDependencies
Quraşdırılsa yaxşı olar, amma olmadan da işləyən paketlər. Quraşdırılarkən səhv olarsa, proses dayanmaz.
"optionalDependencies": { "fsevents": "^2.3.2" }
3. Versiya simvollarının mənası
Versiya nömrələrinin əvvəlində olan bəzi simvollar var ki, onlar versiyanın necə seçildiyini göstərir:
Simvol Mənası ^
Eyni əsas versiya daxilində olan ən son versiyanı qəbul et (default) ~
Eyni minor versiya daxilində ən son patch versiyanı qəbul et *
Hər hansı versiyanı qəbul et >=
Göstərilən versiyadan daha yuxarı olan versiyaları qəbul et <
,<=
Müvafiq olaraq daha kiçik və ya kiçik bərabər versiyaları göstər 1.2.x
1.2.0 – 1.2.99 aralığında olan versiyalar Nümunə:
"lodash": "^4.17.0"
Bu halda, 4.17.0-dan başlayaraq 4.x.x aralığında olan ən son versiya quraşdırıla bilər, lakin 5.x.x yox.
4. Digər faydalı sahələr
engines
Layihənin işləməsi üçün lazım olan Node.js və npm versiyasını göstərir.
"engines": { "node": ">=16.0.0", "npm": ">=8.0.0" }
type
Modul sistemini təyin edir:
"module"
(ESM) və ya"commonjs"
."type": "module"
files
Layihə
npm publish
ilə paylaşılarkən daxil ediləcək faylları göstərir."files": ["dist/", "index.js"]
private
Layihənin səhvən
npm publish
ilə yayımlanmasının qarşısını alır."private": true
5. Tam
package.json
nümunəsi{ "name": "codex-api", "version": "1.0.0", "description": "CodeX üçün REST API backend tətbiqi", "main": "server.js", "scripts": { "start": "node server.js", "dev": "nodemon server.js", "test": "jest" }, "keywords": ["nodejs", "api", "backend"], "author": "Elvin Huseynov", "license": "MIT", "dependencies": { "express": "^4.18.2", "mongoose": "~6.12.1" }, "devDependencies": { "jest": "^29.7.0", "nodemon": "^3.0.1" }, "engines": { "node": ">=16.0.0" }, "private": true }
Nəticə
package.json
– yalnız texniki fayl deyil, sizin layihənizin struktur kitabçasıdır. Onu düzgün qurmaq, həm layihənin idarə olunmasını asanlaşdırır, həm də digərlərinin onu rahat şəkildə başa düşməsini təmin edir. Versiya simvollarının mənasını anlamaq isə asılılıqların stabil və təhlükəsiz olmasında mühüm rol oynayır.
Bilik paylaşdıqca artan bir sərvətdir