webroad.online
  1. 1Web
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Unelte
  8. 8React
  9. 9State management
  10. 10Next.js
  11. 11Formulare
  12. 12Date și backend
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Animații
  16. 16Testare
  17. 17Arhitectură
Unelte · Lecția 1 din 4

npm și package.json

Dependențe vs devDependencies, semver și range-uri, lock file, comenzi.

Actualizat

Ce este npm

npm e două lucruri: un registru online cu peste 3 milioane de pachete JavaScript (librării scrise de alții) și programul din terminal cu care le instalezi. Când scrii npm i react, npm descarcă React și toate pachetele de care depinde React în folderul node_modules.

Alternative la programul npm, cu același registru: pnpm (rapid, economisește spațiu), yarn, bun. Alegi unul per proiect — fișierul lock arată care.

package.json — buletinul proiectului

{
  "name": "learn-js",
  "type": "module",
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "lint": "eslint"
  },
  "dependencies": {
    "next": "16.4.0",
    "react": "19.3.0"
  },
  "devDependencies": {
    "typescript": "^5",
    "eslint": "^9"
  }
}
Câmp Rol
scripts comenzi rulate cu npm run <nume> (dev, build, test)
dependencies pachete de care aplicația are nevoie ca să ruleze (react, next, zod)
devDependencies pachete necesare doar în dezvoltare / build (typescript, eslint, vitest, tipuri @types/*)
type: "module" fișierele .js sunt ES modules (import/export)
engines ce versiune de Node e necesară

Versiuni: semver și range-uri

Versiunile urmează semver: MAJOR.MINOR.PATCH. În package.json scrii un range — ce versiuni accepți:

Range Acceptă Exemplu pentru 1.4.2
1.4.2 exact această versiune doar 1.4.2
^1.4.2 același major — minor și patch noi 1.4.2 … 1.99.x, nu 2.0.0
~1.4.2 același minor — doar patch-uri 1.4.2 … 1.4.x
* / latest orice periculos

^ e implicit la npm i. Pentru aplicații, multe echipe preferă versiuni exacte (npm i -E) + actualizări controlate (Renovate, Dependabot).

Fișierul lock

package-lock.json (sau pnpm-lock.yaml) notează versiunea exactă a fiecărui pachet instalat, inclusiv a dependențelor indirecte. Rezultat: tu, colegii, CI-ul și Vercel instalează exact același lucru.

Regulă De ce
lock-ul intră în Git instalări identice peste tot
node_modules nu intră în Git se reconstruiește din lock
în CI folosești npm ci instalează strict din lock, eșuează dacă nu se potrivește

Comenzile de zi cu zi

Comandă Ce face
npm i instalează tot din package.json / lock
npm i zod / npm i -D vitest adaugă dependență / devDependency
npm run dev rulează scriptul dev
npx <pachet> rulează un program fără să-l instalezi global (npx create-next-app)
npm outdated ce pachete au versiuni noi
npm uninstall <pachet> șterge
npm audit vulnerabilități cunoscute

Cum alegi un pachet

Înainte de npm i, verifică: e întreținut (ultimul release recent)? câte descărcări săptămânale are? cât de mare e (bundlephobia / pkg-size)? are tipuri TypeScript? Și întrebarea cea mai bună: chiar am nevoie de el? — Intl, structuredClone, fetch, crypto.randomUUID sunt native.

Pe scurt

  • package.json = scripturi + dependențe; devDependencies doar pentru dezvoltare.
  • ^ acceptă minor și patch; ~ doar patch; exact = fără surprize.
  • Lock-ul în Git, node_modules niciodată; npm ci în CI.

Surse oficiale

Exerciții

Ți-a fost utilă pagina?

Un click — fără cont.