npm: bazele, managerul de pachete pentru React Native și Node.js

Autor: IT Sectr Publicat: 2026-02-13 Timp de citire: 10 min

npm (Node Package Manager) — managerul standard de pachete pentru platforma Node.js, inclus în pachetul de instalare Node.js. npm gestionează dependențele proiectelor JavaScript și TypeScript: instalează biblioteci în node_modules, actualizează versiunile pachetelor, rezolvă conflicte de versiuni. package.json — fișierul central de configurare cu metadate și lista de dependențe. npm Registry — cel mai mare registru de pachete. Mai multe pe npm Registry.

Principalele puncte

  • npm — managerul standard de pachete Node.js, inclus în Node.js de la versiunea 0.6.3
  • package.json — fișier de configurare a proiectului cu dependențe, scripturi și metadate
  • npm install — comanda de bază pentru instalarea dependențelor din package.json în folderul node_modules
  • package-lock.json — fișier de fixare a versiunilor exacte pentru instalări reproductibile în toate mediile
  • npm ci — comandă pentru CI/CD care instalează pachetele strict conform fișierului lock fără actualizarea acestuia

Ce este npm — managerul de pachete Node.js?

npm a fost creat în 2010 de Isaac Schlueter ca soluție pentru gestionarea dependențelor Node.js. Din 2014 npm este gestionat de compania npm, Inc., achiziționată de Microsoft/GitHub în 2020. Instrumentul constă din două părți: CLI (linie de comandă) pentru instalarea și gestionarea pachetelor, și Registry — depozitul central al tuturor modulelor publicate la adresa registry.npmjs.org.

npm Registry — cel mai mare registru de pachete: peste 2 milioane de pachete și peste 10 miliarde de descărcări lunar. Fiecare pachet are versiune SemVer, descriere, dependențe, licență și autor. Publicarea propriului pachet se face prin npm publish. npm suportă pachete scoped pentru organizații (@scope/package), registre private și audit de securitate încorporat.

Node.js versiunea 18+ include npm 9+ cu performanță îmbunătățită, workspaces pentru monorepozitorii și mecanism reproiectat de peer dependencies. Ecosistemul npm acoperă JavaScript pe server, frontend (React, Vue, Angular), dezvoltare mobilă (React Native), instrumente de build (Webpack, Vite) și utilitare CLI. npm este canalul principal de distribuție a bibliotecilor JavaScript.

Principalele funcționalități npm

npm install — comanda principală care citește package.json și package-lock.json pentru a instala toate dependențele în node_modules. La prima rulare, npm calculează graful de dependențe, rezolvă conflictele de versiuni și generează package-lock.json. Comanda npm install <package> instalează un pachet specific; flagul --save-dev adaugă în devDependencies, --global — global.

npx — executantul de pachete, inclus în npm de la versiunea 5.2. npx permite rularea utilitarelor CLI fără instalare globală: npx react-native init sau npx create-react-app my-app. npx descarcă pachetul într-un cache temporar și îl rulează, iar după finalizare îl curăță. npx este util și pentru rularea unor versiuni specifice de instrumente.

npm audit scanează arborele de dependențe pentru vulnerabilități cunoscute din baza npm. Comanda afișează un raport cu niveluri de severitate (critical, high, moderate) și recomandă npm audit fix pentru actualizarea automată a pachetelor vulnerabile. npm cache stochează pachetele descărcate local. npm cache clean --force curăță cache-ul la probleme de instalare. npm outdated arată pachetele învechite.

bash
# Comenzile principale npm
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Rulare fără instalare globală
$ npx react-native init MyApp
# Audit de securitate
$ npm audit --fix

Structura package.json și gestionarea dependențelor

package.json — este un fișier JSON în rădăcina proiectului care descrie metadatele, dependențele și configurația acestuia. Câmpuri obligatorii: name (numele unic al pachetului) și version (versiune SemVer, de exemplu 1.0.0). Fișierul se creează cu comanda npm init -y pentru inițializare rapidă sau manual.

Semantic Versioning (SemVer) — standardul de versionare MAJOR.MINOR.PATCH. Versiunea majoră se schimbă la modificări incompatibile ale API, minoră — la adăugarea de funcționalități (compatibilă invers), patch — la corectarea erorilor. Simbolul ^ înaintea versiunii permite actualizări ale versiunii minore și patch, ~ — doar patch.

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"
  }
}
CâmpDestinațieValoare exemplu
scriptsComenzi de rulare pentru npm run"start": "node index.js"
dependenciesDependențe de producție ale aplicației"react": "^18.3.0"
devDependenciesInstrumente de dezvoltare și testare"jest": "^29.7.0"
peerDependenciesDependențe gazdă pentru biblioteci"react": ">=17.0.0"
enginesCerințe de versiune Node.js{"node": ">=18.0.0"}

npm în dezvoltarea React Native

React Native proiectele utilizează activ npm pentru gestionarea dependențelor. Setul standard include react, react-native, biblioteci de navigație (React Navigation), cereri HTTP (axios), gestionare stare (Redux, Zustand) și componente UI. npm permite instalarea a mii de pachete compatibile din registru.

npx pod-install — comandă obligatorie după instalarea modulelor native în React Native pentru iOS. npm generează automat Podfile.lock pe baza package-lock.json. În proiectele Expo se folosește expo install în loc de npm install, deoarece selectează versiuni compatibile cu versiunea curentă a Expo SDK.

Conflicte de versiuni — problemă frecventă în React Native: react-native-reanimated, react-native-gesture-handler și react-native-safe-area-context necesită versiuni compatibile. Soluție — actualizarea tuturor pachetelor la ultimele versiuni compatibile sau utilizarea --legacy-peer-deps. package-lock.json este critic pentru modulele native compilate prin CocoaPods și Gradle.

Comparația npm cu manageri alternativi

npm — managerul standard de pachete, inclus în Node.js. Principalele alternative: yarn (creat de Facebook în 2016) și pnpm (rapid, cu legături hard). Începând cu npm 5, diferența de viteză și funcționalitate între npm și yarn este minimă. npm 7+ a adăugat workspaces, făcându-l competitiv pentru monorepozitorii.

Caracteristicănpmyarnpnpm
Anul creării201020162017
Fișier lockpackage-lock.jsonyarn.lockpnpm-lock.yaml
InstalareSecvențială (npm 5+)ParalelăParalelă
Spațiu pe discStandardStandardMinim (legături)
WorkspacesDa (npm 7+)DaDa
Plug'n'PlayNuDaNu

Conform datelor State of JS 2025: npm este folosit de 62% dintre developeri, yarn — 35% (în principal proiecte vechi și fani PnP), pnpm — 3%. Pentru proiecte React Native ambele instrumente sunt echivalente, dar npm apare mai frecvent în proiecte pe Expo SDK 50+ și inițializări noi React Native.

yarn păstrează avantajul în monorepozitorii extrem de mari (100+ pachete) datorită implementării mai mature a workspaces și Plug'n'Play. pnpm câștigă la economisirea spațiului pe disc prin legături hard către magazinul global. Alegerea managerului depinde de preferințele echipei și infrastructură.

Întrebări frecvente

Care este diferența dintre npm install și npm ci?

npm install actualizează package-lock.json și poate instala versiuni minore noi în intervalul semantic. npm ci (Clean Install) șterge node_modules și instalează pachetele strict conform package-lock.json fără actualizarea acestuia. npm ci este mai rapid, utilizat în CI/CD și garantează un mediu identic pe toate mașinile. Dacă package-lock.json lipsește, npm ci returnează o eroare.

Cum se rezolvă conflictele de peer dependencies în npm?

Începând cu npm 7, conflictele de peer dependencies cauzează erori de build. Soluții: actualizarea tuturor pachetelor la versiuni compatibile prin npm update, utilizarea flagului --legacy-peer-deps pentru modul npm 6, sau adăugarea secțiunii overrides în package.json pentru fixarea forțată a versiunii unui pachet specific. Cea mai bună opțiune — actualizarea dependențelor la versiuni compatibile.

Ce este npm audit și de ce este necesar?

npm audit scanează arborele de dependențe pentru vulnerabilități cunoscute din baza npm Security Advisory. Comanda afișează un raport cu nivel de severitate (critical, high, moderate, low) și recomandă npm audit fix pentru actualizarea automată a pachetelor vulnerabile la versiuni sigure. Rularea regulată a npm audit — o practică de bază de securitate în proiectele JavaScript.

Cum simplifică npm workspaces monorepozitoriile?

npm workspaces permit gestionarea mai multor pachete într-un singur repozitoriu. Adăugați câmpul "workspaces": ["packages/*"] în package.json rădăcină. Avantaje: instalare unică a tuturor dependențelor într-un node_modules comun, linkuri simbolice automate între pachetele locale, rularea scripturilor pentru toate pachetele din rădăcină, eliminarea duplicării versiunilor.

De ce să comiți package-lock.json în repozitoriu?

package-lock.json fixează versiunile exacte ale tuturor dependențelor și pachetelor tranzitive. Fără el, diferiți developeri și servere CI pot primi versiuni diferite de biblioteci în intervalul semantic, ceea ce duce la erori de tip „pe mașina mea funcționează”. Comiterea fișierului lock garantează builduri reproductibile și comportament identic în toate mediile.

Rezumat

  • npm — managerul standard de pachete Node.js, inclus în Node.js de la versiunea 0.6.3
  • package.json — fișier de configurare a proiectului cu dependențe, scripturi și metadate
  • npm install — instalarea dependențelor, npm ci — fixare conform package-lock.json pentru CI/CD
  • package-lock.json — fixare a versiunilor exacte, obligatoriu pentru builduri reproductibile
  • npm Registry — cel mai mare registru de pachete cu peste 2 milioane de module
  • npm audit — verificarea securității dependențelor cu remediere automată a vulnerabilităților
  • npm workspaces — mecanism de gestionare a monorepozitoriilor cu node_modules comune

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și