npm publish în Node.js

npm și pachete Toate versiunile npm

Publică un pachet în registrul npm; cu npm pack --dry-run vezi înainte exact ce fișiere pleacă.

Sintaxă
npm login
npm pack --dry-run
npm publish [--access public] [--tag <etichetă>] [--dry-run]

Ce face npm publish

Ca să publici, ai nevoie de un cont pe npmjs.com și de autentificare în terminal cu npm login (verifici cu npm whoami). npm publish împachetează directorul curent într-o arhivă .tgz și o urcă în registru, sub numele și versiunea din package.json.

Ce fișiere intră în pachet decide câmpul "files" din package.json (o listă de fișiere și directoare permise) sau, dacă lipsește, fișierul .npmignore. package.json, README și LICENSE intră mereu. Verifică lista cu npm pack --dry-run sau npm publish --dry-run, care nu urcă nimic.

Pachetele cu scop (@ana-pop/formatare-lei) sunt private implicit; prima publicare publică cere --access public. O versiune publicată nu mai poate fi republicată: pentru orice schimbare crești versiunea cu npm version.

Parametri

Parametru Descriere
--access public Publică public un pachet cu scop (@utilizator/pachet).
--tag <etichetă> Altă etichetă decât latest, de exemplu next sau beta.
--dry-run Arată ce s-ar publica, fără să publice.
--otp <cod> Codul de autentificare în doi pași, dacă contul îl cere.

Exemple

Exemplul 1: package.json pentru un pachet mic

Câmpul "files" lasă în pachet doar directorul src (plus fișierele incluse mereu). Testele și configurările locale rămân pe calculatorul tău.

{
  "name": "@ana-pop/formatare-lei",
  "version": "1.2.0",
  "description": "Formatează sume în lei",
  "type": "module",
  "exports": "./src/index.js",
  "files": ["src"],
  "license": "MIT"
}

Exemplul 2: Verifici conținutul pachetului

Directorul conține și test.js, dar acesta nu apare în listă: "files" și-a făcut treaba.

npm pack --dry-run

Ieșire în terminal

npm notice
npm notice package: @ana-pop/formatare-lei@1.2.0
npm notice Tarball Contents
npm notice 16B README.md
npm notice 197B package.json
npm notice 83B src/index.js
npm notice Tarball Details
npm notice name: @ana-pop/formatare-lei
npm notice version: 1.2.0
npm notice filename: ana-pop-formatare-lei-1.2.0.tgz
npm notice package size: 360 B
npm notice unpacked size: 296 B
npm notice shasum: 1f611104f5bbdc5278f18be7e5f48e2bdfff7e45
npm notice integrity: sha512-ak03qUu/RIXqW[...]BuX48FYcJUm3A==
npm notice total files: 3
npm notice
ana-pop-formatare-lei-1.2.0.tgz

Exemplul 3: Autentificare și publicare

Din ieșirea publicării sunt arătate doar ultimele rânduri (înainte apare aceeași listă de fișiere ca la npm pack --dry-run). Rândul cu + confirmă numele și versiunea urcate. După câteva minute pachetul se instalează cu npm install @ana-pop/formatare-lei.

npm login
npm whoami
npm publish --access public

Ieșire în terminal

ana-pop
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
+ @ana-pop/formatare-lei@1.2.0

Greșeli frecvente

  • Publici fără "files" sau .npmignore: în pachet ajung fișierul .env, datele de test sau directoare mari. Rulează mereu npm pack --dry-run înainte.
  • Încerci să publici din nou aceeași versiune după o corectură: registrul refuză. Crește versiunea cu npm version patch.
  • Uiți --access public la primul pachet cu scop: publicarea eșuează, pentru că pachetele private cer un plan plătit.

Comenzi înrudite

  • npm version: Crește versiunea din package.json după regulile semver și, într-un depozit Git, face commit și etichetă vX.Y.Z.
  • package.json: Fișierul de configurare al unui proiect Node.js: nume, versiune, tipul modulelor, scripturi, dependențe și versiunea Node cerută.
  • package.json "exports" și "imports": Alege ce fișiere ale unui pachet pot fi importate din afară (exports) și definește alias-uri interne cu # (imports).
  • npm link: Leagă un pachet aflat pe disc de un proiect, prin legături simbolice, ca să-l testezi fără să-l publici.
  • Versiuni semver (^, ~, >=): Cum citește npm versiunile MAJOR.MINOR.PATCH și intervalele ^, ~, >=, x din package.json.