npm: əsaslar, React Native və Node.js üçün paket meneceri

Müəllif: IT Sectr Dərc olunub: 2026-02-13 Oxuma vaxtı: 10 dəq

npm (Node Package Manager) — Node.js platforması üçün standart paket meneceri, Node.js quraşdırmasına daxildir. npm JavaScript və TypeScript layihələrinin asılılıqlarını idarə edir: kitabxanaları node_modules qovluğuna quraşdırır, paket versiyalarını yeniləyir, versiya konfliktlərini həll edir. package.json — metadata və asılılıq siyahısı ilə mərkəzi konfiqurasiya faylı. npm Registry — ən böyük paket reyestri. Ətraflı npm Registry saytında.

Əsas məqamlar

  • npm — Node.js üçün standart paket meneceri, 0.6.3 versiyasından Node.js quraşdırmasına daxildir
  • package.json — layihənin asılılıqlar, skriptlər və metadata ilə konfiqurasiya faylı
  • npm install — package.json-dan asılılıqları node_modules qovluğuna quraşdırmaq üçün əsas əmr
  • package-lock.json — bütün mühitlərdə təkrarlanan quraşdırmalar üçün dəqiq versiyaların təsbit faylı
  • npm ci — CI/CD üçün əmr, paketləri lock-faylına uyğun olaraq yeniləmədən quraşdırır

npm nədir — Node.js paket meneceri?

npm 2010-cu ildə Isaac Schlueter tərəfindən Node.js asılılıqlarının idarə edilməsi üçün yaradılmışdır. 2014-cü ildən npm, Inc. şirkəti tərəfindən idarə olunur, 2020-ci ildə Microsoft/GitHub tərəfindən satın alınmışdır. Alət iki hissədən ibarətdir: paketləri quraşdırmaq və idarə etmək üçün CLI (komanda sətri) və bütün nəşr olunmuş modulların mərkəzi deposu olan Registry — registry.npmjs.org ünvanında.

npm Registry — ən böyük paket reyestri: 2 milyondan çox paket və aylıq 10 milyarddan çox yükləmə. Hər paketin SemVer versiyası, təsviri, asılılıqları, lisenziyası və müəllifliyi var. Öz paketinizi nəşr etmək npm publish vasitəsilə həyata keçirilir. npm təşkilatlar üçün scoped paketləri (@scope/package), özəl reyestrləri və daxili təhlükəsizlik auditi dəstəkləyir.

Node.js 18+ versiyası təkmilləşdirilmiş performans, monorepolarlar üçün workspaces və yenidən işlənmiş peer dependencies mexanizmi ilə npm 9+ daxildir. npm ekosistemi server tərəfi JavaScript, frontend (React, Vue, Angular), mobil inkişaf (React Native), qurma alətləri (Webpack, Vite) və CLI yardımçı proqramlarını əhatə edir. npm JavaScript kitabxanalarının əsas paylama kanalıdır.

npm-in əsas imkanları

npm install — bütün asılılıqları node_modules qovluğuna quraşdırmaq üçün package.json və package-lock.json-ı oxuyan əsas əmr. İlk işə salındıqda npm asılılıq qrafını hesablayır, versiya konfliktlərini həll edir və package-lock.json yaradır. npm install <package> əmri konkret paketi quraşdırır; --save-dev bayrağı devDependencies-ə, --global isə qlobal olaraq əlavə edir.

npx — npm-in 5.2 versiyasından daxil olan paket icraçısı. npx CLI alətlərini qlobal quraşdırma olmadan işə salmağa imkan verir: npx react-native init və ya npx create-react-app my-app. npx paketi müvəqqəti keşə endirir, işə salır və bitdikdən sonra təmizləyir. npx həmçinin alətlərin konkret versiyalarını işə salmaq üçün faydalıdır.

npm audit asılılıq ağacını npm bazasındakı məlum zəifliklər üçün skan edir. Əmr kritiklik səviyyələri (critical, high, moderate) ilə hesabat verir və həssas paketlərin avtomatik yenilənməsi üçün npm audit fix tövsiyə edir. npm cache endirilmiş paketləri lokal olaraq saxlayır. npm cache clean --force quraşdırma problemlərində keşi təmizləyir. npm outdated köhnəlmiş paketləri göstərir.

bash
# npm-in əsas əmrləri
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Qlobal quraşdırma olmadan işə salma
$ npx react-native init MyApp
# Təhlükəsizlik auditi
$ npm audit --fix

package.json strukturu və asılılıqların idarə edilməsi

package.json — layihənin kök qovluğunda metadata, asılılıqlar və konfiqurasiyanı təsvir edən JSON faylıdır. Məcburi sahələr: name (paketin unikal adı) və version (SemVer versiyası, məs. 1.0.0). Fayl sürətli inisializasiya üçün npm init -y əmri ilə və ya əl ilə yaradılır.

Semantic Versioning (SemVer) — MAJOR.MINOR.PATCH versiyalaşdırma standartı. Əsas versiya API-də uyğun olmayan dəyişikliklər zamanı, kiçik versiya — funksionallıq əlavə edildikdə (geri uyğun), yamaq — səhvlər düzəldildikdə dəyişir. Versiyadan əvvəl ^ simvolu kiçik və yamaq versiyalarının yenilənməsinə, ~ isə yalnız yamaq versiyasına icazə verir.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios"
  },
  "dependencies": {
    "react": "^18.3.0",
    "react-native": "^0.76.0"
  },
  "devDependencies": {
    "typescript": "^5.5.0",
    "@types/react": "^18.3.0"
  }
}
SahəMəqsədNümunə dəyəri
scriptsnpm run üçün işə salma əmrləri"start": "node index.js"
dependenciesTətbiqin istehsalat asılılıqları"react": "^18.3.0"
devDependenciesİnkişaf və test alətləri"jest": "^29.7.0"
peerDependenciesKitabxanalar üçün host asılılıqları"react": ">=17.0.0"
enginesNode.js versiya tələbləri{"node": ">=18.0.0"}

React Native inkişafında npm

React Native layihələri asılılıqların idarə edilməsi üçün npm-dən fəal istifadə edir. Standart dəstə react, react-native, naviqasiya kitabxanaları (React Navigation), HTTP sorğuları (axios), vəziyyət idarəetməsi (Redux, Zustand) və UI komponentləri daxildir. npm reyestrdən minlərlə uyğun paket quraşdırmağa imkan verir.

npx pod-install — iOS üçün React Native-də yerli modulların quraşdırılmasından sonra məcburi əmr. npm package-lock.json əsasında Podfile.lock-u avtomatik yaradır. Expo layihələrində npm install əvəzinə expo install istifadə olunur, çünki o, cari Expo SDK versiyasına uyğun versiyaları seçir.

Versiya konfliktləri — React Native-də tez-tez rast gəlinən problem: react-native-reanimated, react-native-gesture-handler və react-native-safe-area-context uyğun versiyalar tələb edir. Həll yolu — bütün paketləri son uyğun versiyalara yeniləmək və ya --legacy-peer-deps istifadə etməkdir. package-lock.json CocoaPods və Gradle vasitəsilə kompilyasiya olunan yerli modullar üçün vacibdir.

npm-in alternativ menecerlərlə müqayisəsi

npm — Node.js-ə daxil olan standart paket meneceri. Əsas alternativlər: yarn (2016-cı ildə Facebook tərəfindən yaradılıb) və pnpm (sürətli, sərt keçidlərlə). npm 5-dən etibarən npm və yarn arasında sürət və funksionallıq fərqi minimaldır. npm 7+ workspaces əlavə edib, bu da onu monorepolarlar üçün rəqabətədavamlı edir.

Xüsusiyyətnpmyarnpnpm
Yaradılma ili201020162017
Lock-faylpackage-lock.jsonyarn.lockpnpm-lock.yaml
QuraşdırmaArdıcıl (npm 5+)ParalelParalel
Disk sahəsiStandartStandartMinimal (keçidlər)
WorkspacesBəli (npm 7+)BəliBəli
Plug'n'PlayXeyrBəliXeyr

State of JS 2025 məlumatlarına görə: npm-dən 62% tərtibatçı istifadə edir, yarn — 35% (əsasən köhnə layihələr və PnP pərəstişkarları), pnpm — 3%. React Native layihələri üçün hər iki alət ekvivalentdir, lakin npm Expo SDK 50+ və yeni React Native inisializasiyalarında daha çox rast gəlinir.

yarn workspaces və Plug'n'Play-in daha yetkin həyata keçirilməsi sayəsində həddindən artıq böyük monorepolarlarda (100+ paket) üstünlüyünü qoruyur. pnpm qlobal anbara sərt keçidlər hesabına disk sahəsinə qənaətdə qalib gəlir. Menecer seçimi komanda üstünlüklərindən və infrastrukturdan asılıdır.

Tez-tez verilən suallar

npm install npm ci-dən nə ilə fərqlənir?

npm install package-lock.json-ı yeniləyir və semantik diapazon daxilində yeni kiçik versiyalar quraşdıra bilər. npm ci (Clean Install) node_modules-ı silir və paketləri package-lock.json-a uyğun olaraq yeniləmədən quraşdırır. npm ci daha sürətlidir, CI/CD-də istifadə olunur və bütün maşınlarda eyni mühiti təmin edir. package-lock.json yoxdursa, npm ci xəta verir.

npm-də peer dependencies konfliktlərini necə düzəltmək olar?

npm 7-dən etibarən peer dependencies konfliktləri qurma xətasına səbəb olur. Həll yolları: bütün paketləri uyğun versiyalara npm update vasitəsilə yeniləmək, npm 6 rejimi üçün --legacy-peer-deps bayrağından istifadə etmək və ya konkret paketin versiyasını məcburi təsbit etmək üçün package.json-a overrides bölməsi əlavə etmək. Ən yaxşı variant — asılılıqları uyğun versiyalara yeniləməkdir.

npm audit nədir və nə üçün lazımdır?

npm audit asılılıq ağacını npm Security Advisory bazasındakı məlum zəifliklər üçün skan edir. Əmr kritiklik səviyyəsi (critical, high, moderate, low) ilə hesabat verir və həssas paketlərin təhlükəsiz versiyalara avtomatik yenilənməsi üçün npm audit fix tövsiyə edir. Müntəzəm npm audit işə salmaq JavaScript layihələrinin əsas təhlükəsizlik təcrübəsidir.

npm workspaces monorepolarları necə sadələşdirir?

npm workspaces bir repozitoridə çoxsaylı paketləri idarə etməyə imkan verir. Kök package.json-a "workspaces": ["packages/*"] sahəsini əlavə edin. Üstünlükləri: bütün asılılıqların ümumi node_modules qovluğuna vahid quraşdırılması, lokal paketlər arasında avtomatik simlinklər, bütün paketlər üçün skriptlərin kökdən işə salınması, versiyaların təkrarlanmasının aradan qaldırılması.

Niyə package-lock.json repozitoriya əlavə edilməlidir?

package-lock.json bütün asılılıqların və onların tranzitiv paketlərinin dəqiq versiyalarını təsbit edir. Olmadan müxtəlif tərtibatçılar və CI serverləri semantik diapazon daxilində müxtəlif kitabxana versiyaları ala bilər ki, bu da «mənim maşınımda işləyir» səhvlərinə səbəb olur. Lock-faylın commit-i təkrarlanan qurma və bütün mühitlərdə eyni davranışı təmin edir.

Nəticə

  • npm — Node.js üçün standart paket meneceri, 0.6.3 versiyasından Node.js quraşdırmasına daxildir
  • package.json — layihənin asılılıqlar, skriptlər və metadata ilə konfiqurasiya faylı
  • npm install — asılılıqların quraşdırılması, npm ci — CI/CD üçün package-lock.json təsbiti
  • package-lock.json — dəqiq versiyaların təsbiti, təkrarlanan qurma üçün məcburidir
  • npm Registry — 2 milyondan çox modulla ən böyük paket reyestri
  • npm audit — asılılıqların təhlükəsizlik yoxlaması və zəifliklərin avtomatik düzəldilməsi
  • npm workspaces — ümumi node_modules ilə monorepolarların idarə edilməsi mexanizmi

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun