WisarWisar
Dasturlash kitobi/5-QISM — Nodejs15 daqiqa

5.2-bob: npm, package.json, dependencies, scripts, semver

5-QISM — Node.js Backend · 2-mavzu


1. Kirish va motivatsiya

Node.js'ning ishlash mexanizmini 5.1-bob bildik. Endi uning ekotizimini — Node'ni dunyodagi eng katta dasturlash platformasiga aylantirgan narsani — npmni chuqur o'rganamiz. 0.7-bobda npm'ni qisqacha ko'rgandik; endi uni professional darajada, har detali bilan ochamiz.

npm (Node Package Manager) — dunyodagi eng katta dasturlash kutubxonalari ombori (millionlab paket). U tufayli siz "g'ildirakni qaytadan ixtiro qilmaysiz" (0.6, 0.7): sana formatlash, server, validatsiya, autentifikatsiya — bularning hammasini minglab dasturchi yozib, sinab, sayqal bergan; siz bir buyruq bilan olasiz. Lekin bu kuchning mas'uliyati ham bor: dependency'larni boshqarish, versiyalarni tushunish, xavfsizlik.

package.json — har bir Node va frontend (React, Next) loyihaning yuragi. Uni chuqur tushunmasdan, "nega loyiham buzildi?", "nega versiya mos kelmadi?", "qaysi paket xavfli?" degan savollar bilan kurashasiz. Bu bob — butun ekotizimni boshqarish bilimi.

O'xshatish: npm — dasturchilar uchun ulkan omborxona + yetkazib berish xizmati. package.json — loyihangning "buyurtma ro'yxati va pasporti": qaysi qismlar (paketlar), qaysi versiyada, qanday yig'iladi. npm install — buyurtmani yetkazib beradi. Yaxshi quruvchi omborni ham, buyurtmani ham yaxshi boshqaradi.

Nega muhim?

  • Har loyiha — npm bilan boshlanadi (npm init — 0.7); minglab paket.
  • Dependency boshqaruvi — versiya muammolari, xavfsizlik (14) — real ish.
  • semver — "nega yangilanish kodimni buzdi?" javobi.
  • scripts — loyihani ishga tushirish/build/test (10.5: CI/CD ham shu).

2. Nazariya — chuqur tushuntirish

2.1. npm nima — uch ma'no

"npm" uch narsani anglatadi (chalkashmaslik uchun):

  1. CLI vositasi — terminalingda (npm install, npm run — 0.3).
  2. Registry (ombor) — registry.npmjs.org — millionlab paket saqlanadigan bulut.
  3. Kompaniya/sayt — npmjs.com (paketlarni qidirish).

Node bilan birga keladi 0.7-bob. Muqobillar: yarn, pnpm (tezroq, samaraliroq) — lekin npm — standart va eng keng tarqalgan.

2.2. package.json — loyiha pasporti (har maydon)

package.json — loyiha haqidagi barcha ma'lumot (JSON — 2.8). To'liq misol va har maydon izohi:

json
{
  "name": "mening-loyiham",          // loyiha nomi (majburiy, kichik harf)
  "version": "1.0.0",                // versiya (majburiy, semver — 2.6)
  "description": "Backend API",      // qisqa tavsif
  "main": "index.js",                // kirish nuqtasi (asosiy fayl)
  "type": "module",                  // "module" (ESM) yoki "commonjs" (2.14)
  "scripts": {                       // nomlangan buyruqlar (2.7)
    "start": "node index.js",
    "dev": "node --watch index.js",
    "test": "jest"
  },
  "dependencies": {                  // ISHLASH uchun kerak (2.4)
    "express": "^4.19.2"
  },
  "devDependencies": {               // faqat ISHLAB CHIQISHDA (2.4)
    "nodemon": "^3.1.0",
    "jest": "^29.7.0"
  },
  "engines": {                       // qaysi Node versiyasi (2.10)
    "node": ">=18"
  },
  "keywords": ["api", "backend"],    // qidiruv uchun (nashr qilinsa)
  "author": "Ali Valiyev",
  "license": "MIT"                   // litsenziya (2.11)
}

2.3. package.json yaratish

bash
npm init                 # savollar bilan (interaktiv)
npm init -y              # barchasiga default — tez (0.7)
npm init -y && npm pkg set type="module"   # ESM bilan (2.14)

2.4. Dependencies vs devDependencies — muhim farq

Ikki asosiy dependency turi:

  • dependencies — ilova ishlashi uchun kerak (production'da ham): Express, Mongoose, Axios. Foydalanuvchi ishlatadigan kod.
  • devDependencies — faqat ishlab chiqishda kerak (production'da emas): nodemon 5.1-bob, Jest (test — 8.11), ESLint 15.3-bob, TypeScript (7).

Uchinchi tur — peerDependencies (asosan kutubxona/plugin yozayotganda): paketingiz qaysi versiyadagi "mezbon" paketga muhtojligini bildiradi, lekin uni o'zi o'rnatmaydi — buni foydalanuvchi loyihasi ta'minlaydi. Masalan React plugin'i "peerDependencies": { "react": ">=18" } deb yozadi: React'ni o'zi ikkilantirib o'rnatmaydi, foydalanuvchi loyihasidagi React'dan foydalanadi (bitta nusxa — chalkashlik bo'lmaydi). Oddiy ilova (kutubxona emas) yozsangiz, buni odatda ishlatmaysiz.

bash
npm install express              #  dependencies (ishlash uchun)
npm install -D nodemon           #  devDependencies (faqat dev; --save-dev qisqasi)
npm install --save-dev jest      # to'liq shakli

Nega farq muhim: production serverga deploy qilganda (10) npm install --production faqat dependenciesni o'rnatadi (devDependencies'siz — yengilroq, tezroq, xavfsizroq). Test/lint vositalari production'da kerak emas. To'g'ri ajratish — professional loyihaning belgisi.

2.5. node_modules va package-lock.json (0.7 chuqurroq)

  • node_modules/ — barcha o'rnatilgan paketlar va ularning dependency'lari (transitive — dependency'ning dependency'si). Juda katta (minglab fayl). Hech qachon git'ga qo'yilmaydi (4.5: .gitignore); package.jsondan npm install bilan tiklanadi.

  • package-lock.json — o'rnatilgan aniq versiyalarni (transitive bilan) qayd etadi. Bu — reproducibility (takrorlanuvchanlik): har dasturchida, har serverda aynan bir xil versiyalar o'rnatiladi. Git'ga qo'shiladi.

text
  package.json:        "express": "^4.19.2"   (oraliq — 2.6)
  package-lock.json:   express 4.19.2 (ANIQ) + uning barcha dependency'lari aniq
   har joyda bir xil daraxt o'rnatiladi

package-lock.jsonni o'chirmang/e'tiborsiz qoldirmang va commit qiling. Usiz har kim har xil versiya olishi mumkin "menda ishlaydi, sizda yo'q" 0.2-bob. npm ci (CI uchun — 10.5) aynan lock fayldan o'rnatadi.

2.6. Semantic Versioning (semver) — chuqur

Har paket versiyasi MAJOR.MINOR.PATCH (semver.org — 0.7):

text
   4    .   19   .   2
  MAJOR    MINOR    PATCH
  • PATCH (2) — xato tuzatish; orqaga mos (eski kod ishlaydi).
  • MINOR (19) — yangi imkoniyat; orqaga mos (eski kod buzilmaydi).
  • MAJOR (4) — buzuvchi (breaking) o'zgarish (eski kod buzilishi mumkin — 4.5).

package.jsondagi oraliq belgilari (eng muhim):

Belgi Ma'nosi Misol ^4.19.2 da
^ (caret) MAJOR sobit, MINOR/PATCH yangilanadi 4.x.x (≥4.19.2, <5.0.0) — default, eng ko'p
~ (tilde) MAJOR.MINOR sobit, faqat PATCH 4.19.x (≥4.19.2, <4.20.0)
(belgisiz) aniq shu versiya faqat 4.19.2
* / latest istalgan eng yangi xavfli
>=4.0.0 oraliq shartli
bash
npm install express          # ^4.19.2 (caret — default)
npm install express@4.19.2   # aniq versiya
npm install express@latest   # eng yangi
npm install express@4        # eng yangi 4.x

Nega ^ default: xato tuzatish va yangi imkoniyatlar (PATCH/MINOR) avtomatik olinadi (orqaga mos — xavfsiz), lekin MAJOR (buzuvchi) olinmaydi. Bu — xavfsizlik va yangilanish o'rtasidagi muvozanat. package-lock.json 2.5-bob aniqlikni kafolatlaydi.

2.7. Scripts — buyruqlarni avtomatlashtirish

scripts — uzun terminal buyruqlariga 0.3-bob qisqa nom (0.7 chuqurroq):

json
{
  "scripts": {
    "start": "node index.js",                    // npm start
    "dev": "node --watch index.js",              // npm run dev
    "test": "jest",                              // npm test
    "lint": "eslint .",                          // npm run lint
    "build": "tsc",                              // npm run build (7)
    "prestart": "npm run build",                 // start'dan OLDIN avtomatik
    "format": "prettier --write ."               // npm run format (15.3)
  }
}
bash
npm run dev              # ixtiyoriy script
npm start               # maxsus (run'siz)
npm test                # maxsus

pre/post hook'lar: prestartstartdan oldin, poststart — keyin avtomatik ishlaydi. Masalan prebuild, pretest. Hayot tsiklini avtomatlashtiradi.

2.8. npm buyruqlari (to'liq)

bash
npm install                 # package.json'dagi HAMMA paketni o'rnat
npm install <paket>         # paket o'rnat + dependencies'ga
npm install -D <paket>      # devDependencies'ga
npm install -g <paket>      # GLOBAL (CLI vositalari — ehtiyot, 5-bo'lim)
npm uninstall <paket>       # o'chirish
npm update                  # semver oraliqda yangilash (2.6)
npm outdated                # eskirgan paketlarni ko'rsatish
npm ls                      # o'rnatilgan paketlar daraxti
npm run                     # mavjud scriptlar ro'yxati
npm ci                      # lock fayldan TOZA o'rnatish (CI/CD — 10.5)

2.9. npx — paketni o'rnatmasdan ishlatish

npx — paketni global o'rnatmasdan, bir martalik ishlatish 0.7-bob:

bash
npx create-react-app my-app    # React loyiha yaratish (o'rnatmasdan — 11)
npx prettier --write .         # bir martalik format
npx jest                       # lokal paketni ishlatish

npx — global "ifloslanish"ni oldini oladi: create-react-appni global o'rnatib qo'yish o'rniga, kerak bo'lganda npx orqali eng yangi versiyani ishlatasiz.

2.10. Xavfsizlik va audit (14 ga bog'liq)

Paketlar — boshqalarning kodi; ularda zaiflik (vulnerability) bo'lishi mumkin:

bash
npm audit               # zaifliklarni tekshirish (xavfsizlik hisoboti)
npm audit fix           # avtomatik tuzatish (mumkin bo'lganlarini)
npm audit fix --force   # MAJOR yangilanish ham (ehtiyot — buzishi mumkin)

Supply chain xavfi (14): har paket — ishonch. Mashhur paket xakerlanishi yoki zararli paket (typosquatting — expres vs express) bo'lishi mumkin. Yangi paket o'rnatishdan oldin tekshiring: yuklab olishlar soni, oxirgi yangilanish, GitHub yulduzlari. npm audit ni muntazam ishlating.

2.11. Litsenziyalar (qisqacha)

Har paketning litsenziyasi bor (huquqiy ruxsat): MIT (eng erkin — istalgan ishlatish), Apache-2.0, ISC, GPL (kodingni ham ochiq qilishni talab qilishi mumkin). Tijoriy loyihada litsenziyaga e'tibor bering (odatda MIT — xavfsiz).

2.12. Monorepo va workspaces (qisqacha — 15.4)

Bir necha paketni bitta repo'da boshqarish — workspaces (npm/yarn/pnpm). Katta loyihalar uchun (frontend + backend + umumiy kod). 15.4-bobda (Turborepo/Nx) chuqur.

2.13. Paketni nashr qilish (publish — qisqacha)

Endi siz iste'molchi emas, muallif tomonida: o'z paketingizni registry'ga 2.1-bob chiqarish — publish. Asosiy oqim:

bash
npm login                 # npmjs.com hisobiga kirish (bir marta)
npm publish               # paketni registry'ga chiqarish
npm version patch         # keyingi reliz oldidan versiyani oshirish (2.6)
  • Versiya — yagona. Bir marta chiqarilgan 1.0.0 ni qayta yozolmaysiz (immutable); har reliz uchun versiyani oshiring (npm version — Misol 5).
  • .npmignore / filespackage.jsondagi "files" maydoni (yoki .npmignore) qaysi fayllar paketga kirishini belgilaydi (test/manba emas, faqat kerakli build). Aks holda keraksiz fayllar ham yuklanadi.
  • Scoped paket — nom oldida tashkilot/foydalanuvchi prefiksi: @mening-tashkilotim/utils. Yagona nom kafolatlaydi (chunki oddiy nomlar band bo'lib ketgan). Scoped paket default — private; ommaviy qilish uchun:
bash
npm publish --access public       # scoped paketni ochiq qilish

Maslahat: chiqarishdan oldin npm pack bilan paketni sinab ko'ring — u haqiqiy .tgz arxiv yasaydi (yuklamasdan), ichida nimalar borligini tekshiring. "private": true esa paketni tasodifan chiqarib yuborishdan saqlaydi (ilovalarda — har doim yoqing).


3. Sintaksis — tez ma'lumotnoma

bash
# Boshlash
npm init -y

# O'rnatish
npm install              # hammasini (package.json'dan)
npm i <paket>            # dependencies (i — install qisqasi)
npm i -D <paket>         # devDependencies
npm i -g <paket>         # global
npm ci                   # lock fayldan toza (CI — 10.5)

# Boshqarish
npm update   npm outdated   npm uninstall <p>   npm audit

# Ishlatish
npm run <script>   npm start   npm test   npx <paket>
text
SEMVER: MAJOR.MINOR.PATCH
  ^4.19.2  4.x.x (default)   ~4.19.2  4.19.x   4.19.2  aniq

4. Batafsil kod namunalari

Misol 1 — Loyihani noldan sozlash (2.3, 2.4)

bash
mkdir backend-api && cd backend-api      # (0.3)
npm init -y                               # package.json (2.3)
npm pkg set type="module"                 # ESM (2.14)

# Ishlash uchun (dependencies — 2.4)
npm install express mongoose dotenv

# Faqat dev uchun (devDependencies — 2.4)
npm install -D nodemon eslint

# Natija: package.json'da dependencies va devDependencies ajratilgan
# node_modules/ va package-lock.json yaratildi (2.5)

Misol 2 — Scripts sozlash (2.7)

json
{
  "scripts": {
    "start": "node src/index.js",
    "dev": "node --watch src/index.js",
    "lint": "eslint src/",
    "lint:fix": "eslint src/ --fix",
    "prestart": "npm run lint",
    "test": "jest --coverage"
  }
}
bash
npm run dev      # ishlab chiqishda (avtomatik qayta ishga tushadi — 5.1)
npm start        # prestart (lint) avtomatik ishlaydi, keyin start (2.7)

Misol 3 — Semver oraliqlarini tushunish (2.6)

json
{
  "dependencies": {
    "express": "^4.19.2",     // 4.x.x — yangi MINOR/PATCH avtomatik (default)
    "lodash": "~4.17.21",     // 4.17.x — faqat PATCH (ehtiyotkor)
    "react": "18.2.0",        // ANIQ — hech qanday avtomatik yangilanish
    "axios": ">=1.0.0 <2.0.0" // oraliq (^1.0.0 ga teng)
  }
}
bash
# Versiyani tekshirish va yangilash
npm outdated                  # qaysi paket eskirgan (joriy/wanted/latest)
npm update express            # semver oraliqda yangilaydi (^4 ichida)
npm install express@latest    # MAJOR ham (^ ni yangilaydi — ehtiyot)

Misol 4 — Dependency tahlili va xavfsizlik (2.8, 2.10)

bash
npm ls --depth=0          # to'g'ridan-to'g'ri paketlar (transitive'siz)
npm ls express            # express qayerdan kelganini ko'rsatadi

npm audit                 # zaifliklar hisoboti
# found 3 vulnerabilities (1 moderate, 2 high)
npm audit fix             # xavfsiz tuzatishlar (2.10)

npm outdated              # eskirganlar
# Package   Current  Wanted  Latest
# express   4.18.0   4.19.2  5.0.0    (Wanted — semver ichida; Latest — eng yangi)

Misol 5 — package.json'ni dasturiy boshqarish (npm pkg)

bash
# package.json'ni CLI orqali o'zgartirish (qo'lda tahrirsiz)
npm pkg set scripts.dev="node --watch src/index.js"
npm pkg set engines.node=">=18"          # (2.10)
npm pkg get version                        # versiyani o'qish
npm version patch                          # versiyani oshirish (1.0.0  1.0.1)
npm version minor                          # 1.0.0  1.1.0 (2.6)
# npm version git tag ham yaratadi (4.5: reliz)

5. To'g'ri va noto'g'ri holatlar

1) node_modules'ni git'ga qo'shish

bash
#  minglab fayl, juda katta (2.5)
git add node_modules/

#  .gitignore'da node_modules/ 4.5-bob; package.json + lock yetadi

2) Dev va prod dependency'larni aralashtirish

bash
#  test/lint vositasini dependencies'ga (production'ga keraksiz — 2.4)
npm install jest eslint

#  -D bilan devDependencies'ga
npm install -D jest eslint

3) Loyiha kutubxonasini global o'rnatish

bash
#  global — versiya chalkashligi, loyihaga bog'lanmaydi (0.7)
npm install -g express

#  lokal (loyihaga); global faqat CLI vositalari (nodemon, vercel)
npm install express

4) package-lock.jsonni e'tiborsiz qoldirish

bash
#  commit qilmaslik/o'chirish  har kim har xil versiya (2.5)
#  commit qiling; CI'da npm ci (lock fayldan — 10.5)

5) * yoki latest versiya

json
//  har install'da har xil  kutilmagan buzilish (2.6)
"express": "*"
//  semver oraliq (^ default)
"express": "^4.19.2"

6. Keng tarqalgan xatolar va yechimlari

Xato 1 — Cannot find module 'x'

Sababi: paket o'rnatilmagan yoki node_modules yo'q (0.7, 5.1). Yechimi: npm install (hammasini tiklash); npm install x (aynan).

Xato 2 — npm ERR! code ERESOLVE (dependency conflict)

Sababi: ikki paket bir-biriga zid versiya talab qiladi 2.6-bob. Yechimi: versiyalarni moslash; npm install --legacy-peer-deps (vaqtinchalik); paketlarni yangilash.

Xato 3 — "Menda ishlaydi, sizda yo'q"

Sababi: har xil versiyalar (lock fayl yo'q/eski — 2.5). Yechimi: package-lock.jsonni commit qiling; npm ci bilan o'rnating.

Xato 4 — npm WARN deprecated

Sababi: paket eskirgan (qo'llab-quvvatlanmaydi). Yechimi: muqobil paketga o'ting; odatda ogohlantirish — darrov shoshilmang, lekin rejalashtiring.

Xato 5 — EACCES: permission denied (global o'rnatishda)

Sababi: global papka ruxsati (0.2, 0.7). Yechimi: sudo o'rniga nvm/fnm 0.7-bob; yoki lokal o'rnating.

Xato 6 — Katta xavfsizlik zaifligi (npm audit)

Sababi: zaif paket 2.10-bob. Yechimi: npm audit fix; bo'lmasa muqobil paket yoki versiya; muntazam tekshiring (14).


7. Integratsiya — bu mavzu stack'ning qayerida uchraydi

  • Node 5.1-bob, modullar 2.14-bob: npm — Node ekotizimi.
  • Har loyiha (5–13): Express, Mongoose, React, Next — npm paketlari.
  • Scripts 10.5-bob: CI/CD — npm ci, npm run build, npm test.
  • TypeScript (7): npm i -D typescript; build script.
  • Conventional commits/semver (4.5, 0.7): npm version — reliz.
  • Xavfsizlik (14): npm audit, supply chain.
  • Monorepo 15.4-bob: workspaces.

8. Eng yaxshi amaliyotlar (best practices)

  • dependencies va devDependenciesni to'g'ri ajrating (-D dev uchun — 2.4).
  • package-lock.jsonni commit qiling; CI'da npm ci (2.5, 10.5).
  • node_modulesni .gitignore 4.5-bob.
  • ^ (default) semver*/latest ishlatmang 2.6-bob.
  • Loyiha kutubxonasi — lokal, CLI — global 0.7-bob.
  • npm audit ni muntazam — xavfsizlik (2.10, 14).
  • Yangi paketdan oldin tekshiring — yuklab olishlar, yangilanish, GitHub (supply chain — 2.10).
  • scripts bilan avtomatlashtiring — start/dev/test/lint/build 2.7-bob.
  • Kam dependency — har paket — xavf va og'irlik; haqiqatan kerakmi, o'ylang.

9. Amaliy loyiha: "Professional Loyiha Ekotizimini Qurish"

npm va package.json'ni professional darajada boshqarishni mustahkamlash.

Maqsad

package.json'ning har qismini, dependency turlarini, semver'ni va scripts'ni amalda qo'llab, mustahkam, xavfsiz loyiha asosini qurish.

Talablar (requirements)

  1. Loyiha sozlash: npm init -y, ESM (type: module); to'liq package.json (name, version, description, main, author, license — 2.2).
  2. Dependency ajratish: kamida 3 dependencies (express, dotenv, ...) va 3 devDependencies (nodemon, eslint, jest) to'g'ri ajratilgan 2.4-bob.
  3. Scripts: start, dev (--watch), lint, test, va kamida bitta pre/post hook (2.7, Misol 2).
  4. Semver tahlili: har dependency uchun ^/~/aniq farqini izohlang; bittasini har xil oraliq bilan sozlab, npm outdated bilan ko'ring (2.6, Misol 3).
  5. Lock va gitignore: package-lock.json commit; node_modules ignore (2.5, 4.5).
  6. Xavfsizlik: npm audit ishlatib, hisobotni o'qing; zaiflik bo'lsa npm audit fix 2.10-bob.
  7. npx: biror vositani npx bilan o'rnatmasdan ishlating (Misol/2.9).
  8. npm version: versiyani patch/minor oshiring; o'zgarishni ko'ring (Misol 5).
  9. engines: Node versiyasini cheklab qo'ying 2.10-bob.

Maslahatlar (hint)

  • npm pkg set bilan package.json'ni CLI orqali boshqaring (Misol 5).
  • npm ls --depth=0 — to'g'ridan-to'g'ri paketlar 2.8-bob.
  • npm outdated — Current/Wanted/Latest farqini tushuning 2.6-bob.
  • -D — devDependencies 2.4-bob; production'da npm install --production.
  • npm audit hisobotini o'qib, har zaiflik nima ekanini tushuning (14).
  • .gitignoreda node_modules, .env 4.5-bob.

"Tayyor" mezonlari (acceptance criteria)

  • To'liq package.json (barcha asosiy maydonlar).
  • dependencies va devDependencies to'g'ri ajratilgan.
  • Kamida 5 script + bitta pre/post hook ishlaydi.
  • Har dependency semver oralig'i izohlangan.
  • package-lock.json commit, node_modules ignore.
  • npm audit ishlatilgan va hisobot tushunilgan.
  • npx bilan vosita ishlatilgan.
  • npm version bilan versiya oshirilgan.

Yechim kodi ataylab berilmagan — bu loyihani o'zingiz yozib ko'ring.


10. Xulosa va keyingi bobga ko'prik

Bu bobda Node ekotizimini boshqaruvchi — npmni chuqur o'rgandik:

  • npm — CLI + registry + sayt; millionlab paket.
  • package.json — loyiha pasporti: name/version/scripts/dependencies/engines.
  • dependencies (ishlash) vs devDependencies (-D, faqat dev).
  • node_modules (ignore) + package-lock.json (commit — reproducibility); npm ci.
  • Semver (MAJOR.MINOR.PATCH): ^ (default, MINOR/PATCH) / ~ (PATCH) / aniq.
  • scripts (avtomatlashtirish, pre/post hook); npx (o'rnatmasdan); npm audit (xavfsizlik — 14).

Keyingi bob — 5.3-bob: Core modullar (fs, path, os, util, crypto). npm paketlarini bildik; endi Node'ning o'rnatilgan (built-in) modullarini — paketsiz, darrov mavjud kuchli vositalarini — chuqur o'rganamiz: fs (fayl — 0.2), path (yo'l — 0.2), os (tizim — 0.2), crypto (xavfsizlik/hash — 3.5, 5.15), util. Bular real backend'ning kunlik quroli.


Foydalanilgan rasmiy/ishonchli manbalar

  • docs.npmjs.com — package.json, dependencies, scripts, npm CLI, npm audit
  • semver.org — Semantic Versioning 2.0.0 (MAJOR.MINOR.PATCH, oraliqlar)
  • nodejs.org/learn — npm package manager kirish

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
5.2-bob: npm, package.json, dependencies, scripts, semver — Wisar