npm va package.json
Node.js darsida muhit o’rnatildi. Endi savol: serverni noldan o’zingiz yozasizmi? Yo’q — dasturchilar tayyor kutubxonalardan foydalanadi. npm o’sha kutubxonalarni loyihangizga olib keladi, package.json esa qaysi biri kerakligini yozib qo’yadi.
npm nima
Node.js o’rnatilganda npm ham birga keladi — alohida yuklash shart emas.
Tekshirib ko’ring:
npm --version
10.9.0
Loyihani boshlash: npm init
Yangi papka yarating va ichiga kiring:
mkdir my-server
cd my-server
Endi loyihani ishga tushiramiz:
npm init -y
-y — “hamma savolga ha” degani: npm savol bermay standart javoblar
bilan fayl yaratadi. Natijada papkada package.json paydo bo’ladi:
{
"name": "my-server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
-y siz npm init yozsangiz, npm har maydonni navbat bilan so’raydi.
Boshlash uchun -y qulayroq: keyin faylni qo’lda tahrirlaysiz.
Paket o’rnatish
Sinov uchun kichik paket o’rnatamiz:
npm install dayjs
added 1 package, and audited 2 packages in 2s
found 0 vulnerabilities
Uch narsa o’zgaradi:
node_modules/papkasi yaratiladi — paket kodi shu yerda;package.jsongadependenciesbo’limi qo’shiladi;package-lock.jsonfayli paydo bo’ladi.
package.json endi shunday ko’rinadi:
{
"name": "my-server",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"dayjs": "^1.11.13"
}
}
Paketni ishlatib ko’ramiz. index.js faylini yarating:
const dayjs = require("dayjs");
// Bugungi sanani kerakli formatda chiqaramiz
const today = dayjs().format("DD.MM.YYYY");
console.log("Bugun:", today);
Ishga tushirish:
node index.js
Bugun: 16.09.2026
O’zingiz yozmagan kod loyihangizda ishladi — npm’ning butun mohiyati shu.
dependencies va devDependencies
Hamma paket ham serverda kerak emas. Ba’zilari faqat kod yozish paytida ishlatiladi.
npm install express # dependencies ga tushadi
npm install --save-dev nodemon # devDependencies ga tushadi
--save-dev o’rniga qisqa -D ham yozish mumkin.
{
"dependencies": {
"express": "^4.21.2"
},
"devDependencies": {
"nodemon": "^3.1.9"
}
}
| Bo’lim | Qachon kerak | Misol |
|---|---|---|
dependencies |
Dastur ishlashi uchun | express, dayjs |
devDependencies |
Faqat yozish paytida | nodemon, testlar |
Farqni tekshirish usuli oddiy savol: “bu paket serverda, foydalanuvchi
so’rov yuborganda kerakmi?” Ha bo’lsa — dependencies.
Versiya belgilari
^4.21.2 dagi ^ belgisi nimani anglatadi?
Versiya uch qismdan iborat: KATTA.O'RTA.KICHIK.
| Yozuv | Ruxsat etadi | Ma’nosi |
|---|---|---|
^4.21.2 |
4.21.2 dan 5.0.0 gacha |
Mos yangilanishlar |
~4.21.2 |
4.21.2 dan 4.22.0 gacha |
Faqat xato tuzatishlari |
4.21.2 |
Faqat 4.21.2 |
Aynan shu versiya |
^ — standart tanlov: xavfsiz yangilanishlarni oladi, kodni buzadigan
katta o’zgarishni olmaydi.
node_modules va .gitignore
node_modules/ ichiga qarang — o’rnatgan paketingiz bitta bo’lsa ham,
u yerda o’nlab papka bo’lishi mumkin. Sabab: har paket o’z paketlariga
tayanadi.
Bu papka juda katta bo’lib ketadi. Shuning uchun u git’ga
qo’shilmaydi. Loyiha papkasida .gitignore fayli yarating:
node_modules/
.env
package-lock.json nima uchun kerak
package.json da ^4.21.2 yozilgan — demak 4.22.0 ham, 4.25.1 ham
mos keladi. Bugun o’rnatsangiz bir versiya, olti oydan keyin boshqa
versiya tushadi.
Bu muammo tug’diradi: sizda ishlagan kod hamkasbingizda ishlamasligi mumkin. package-lock.json shu muammoni yechadi — unda har paketning aniq versiyasi qayd etiladi.
| Fayl | Nimani saqlaydi | Git’ga qo’shiladimi |
|---|---|---|
package.json |
Qaysi paket kerak (oraliq bilan) | Ha |
package-lock.json |
Aynan qaysi versiya o’rnatilgan | Ha |
node_modules/ |
Paket kodining o’zi | Yo’q |
scripts — o’z buyruqlaringiz
Uzun buyruqlarni har safar yozmaslik uchun scripts bo’limiga qisqartma
qo’yiladi:
{
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
}
}
Ishga tushirish:
npm start
npm run dev
Bugun: 16.09.2026
start va test maxsus nomlar — ular run so’zisiz ishlaydi. Qolgan
hamma nom npm run <nom> shaklida chaqiriladi.
require va import
Yuqorida require yozdik, modullar darsida esa
import ishlatgan edingiz. Ikkalasi ham modulni olib kiradi, lekin ular
ikki xil tizim.
CommonJS — Node.js’ning eski, keng tarqalgan tizimi:
// math.js
function add(a, b) {
return a + b;
}
module.exports = { add };
// index.js
const { add } = require("./math");
console.log(add(2, 3));
5
ES modul — brauzerda ham ishlatiladigan zamonaviy tizim:
// math.js
export function add(a, b) {
return a + b;
}
// index.js
import { add } from "./math.js";
console.log(add(2, 3));
ES modulni Node.js’da ishlatish uchun package.json ga bitta qator
qo’shiladi:
{
"type": "module"
}
| Jihat | CommonJS | ES modul |
|---|---|---|
| Olib kirish | require() |
import |
| Chiqarish | module.exports |
export |
| Sozlash | Standart | "type": "module" |
| Fayl kengaytmasi | Ixtiyoriy | Majburiy (./math.js) |
Bu bo’limda CommonJS (require) ishlatamiz: Express hujjatlari va
internetdagi misollarning ko’pchiligi shu ko’rinishda yozilgan.
Paketni o’chirish va tekshirish
npm uninstall dayjs # paketni olib tashlash
npm list --depth=0 # o'rnatilgan paketlar ro'yxati
npm outdated # eskirgan paketlar
Amaliy mashq
O’z kompyuteringizda bajaring:
my-serverpapkasini yaratib, ichidanpm init -ybuyrug’ini bering;package.jsonni oching vanamehamdamainmaydonlarini o’qing;npm install dayjsbilan paket o’rnatib,index.jsda sanani chiqaring;npm install --save-dev nodemonbering vapackage.jsonda paket qaysi bo’limga tushganini tekshiring;scriptsga"start": "node index.js"qo’shib,npm startbilan ishga tushiring;.gitignoreyaratib, ichiganode_modules/yozing.
4-qadam eng muhimi: dependencies va devDependencies farqini o’z
ko’zingiz bilan ko’rasiz.
Qisqacha xulosa
- npm — Node.js bilan birga keladigan paket menejeri.
npm init -yloyiha pasporti — package.json ni yaratadi.npm install <nom>paketni o’rnatadi,-DbilandevDependenciesga qo’yadi.node_modules/git’ga qo’shilmaydi,package-lock.json— qo’shiladi.package-lock.jsonaniq versiyani qayd etadi: hammada bir xil kod ishlaydi.scriptsuzun buyruqlarga qisqa nom beradi:npm start,npm run dev.- CommonJS
requireishlatadi, ES modulimport— bir loyihada bittasi tanlanadi.
Keyingi darsda modul tizimi — kodni bir nechta
faylga bo’lish va module.exports ning shakllari.