npx / npm exec în Node.js

npx, pnpm, yarn și versiuni Node.js npm 5.2 (npx), npm 7 (npm exec)

Rulează comanda unui pachet npm din proiect sau descărcat temporar, fără instalare globală.

Sintaxă
npx [--yes] <comandă> [argumente]
npx -p <pachet> <comandă>
npm exec -- <comandă> [argumente]

Ce face npx / npm exec

npx prettier cod.js caută întâi comanda prettier în node_modules/.bin al proiectului. Dacă nu o găsește, descarcă pachetul cu același nume într-un cache al npm (nu în proiect) și îl rulează. Așa folosești o unealtă o singură dată sau ai mereu ultima ei versiune fără npm install -g.

Înainte să descarce ceva, npx întreabă Ok to proceed? (y). --yes (-y) răspunde automat, util în scripturi și CI. Când numele comenzii diferă de numele pachetului, alegi pachetul cu -p: npx -p semver semver 1.2.3.

npm exec face același lucru; diferența este că opțiunile pentru npm vin înainte de --, iar cele pentru comandă după. Pentru o versiune anume scrii npx pachet@versiune.

Parametri

Parametru Descriere
<comandă> Comanda de rulat; dacă lipsește local, npx caută pachetul cu același nume.
-y, --yes Descarcă fără să mai întrebe.
--no Refuză descărcarea: rulează doar ce e deja instalat.
-p, --package <pachet> Pachetul care conține comanda (se poate repeta).

Exemple

Exemplul 1: O unealtă instalată în proiect

prettier este în devDependencies, deci npx îl găsește în node_modules/.bin și nu descarcă nimic.

printf 'const  x={a:1,b:"Iași"}\n' > cod.js
npx prettier cod.js

Ieșire în terminal

const x = { a: 1, b: "Iași" };

Exemplul 2: Un pachet descărcat doar pentru o rulare

Pachetul cowsay nu este instalat nicăieri; npx îl aduce în cache și îl rulează.

npx --yes cowsay "Salut, Iași!"

Ieșire în terminal

 ______________
< Salut, Iași! >
 --------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Exemplul 3: Pachet și comandă cu npm exec

Opțiunile lui npm (--yes, -p) stau înainte de --; după el vine comanda cu argumentele ei.

npm exec --yes -p semver -- semver -r "^1.2.0" 1.1.9 1.5.0 2.0.0

Ieșire în terminal

1.5.0

Greșeli frecvente

  • Scrii greșit numele unui pachet: npx poate descărca și rula un alt pachet, cu nume asemănător. Verifică numele pe npmjs.com, mai ales cu --yes.
  • Folosești npx pentru unelte de care depinde proiectul fără să le instalezi cu -D: fiecare coleg primește altă versiune. Instalează-le în proiect și fixează versiunea.
  • Pui opțiunile comenzii înainte de -- la npm exec: npm le ia drept ale lui.

Comenzi înrudite

  • npm run: Rulează un script din câmpul „scripts” al package.json, cu node_modules/.bin în PATH și cu scripturile pre/post.
  • npm install: Instalează pachete din registrul npm în node_modules și le trece în package.json și package-lock.json.
  • npm init: Creează fișierul package.json al unui proiect nou; cu -y acceptă valorile implicite fără întrebări.
  • pnpm și yarn (comparație cu npm): Comenzile npm și echivalentele lor în pnpm și Yarn, plus ce trebuie să știi despre Corepack în Node.js 25+.
  • Versiuni semver (^, ~, >=): Cum citește npm versiunile MAJOR.MINOR.PATCH și intervalele ^, ~, >=, x din package.json.