npm run în Node.js

npm și pachete Toate versiunile npm

Rulează un script din câmpul "scripts" al package.json, cu node_modules/.bin în PATH și cu scripturile pre/post.

Sintaxă
npm run <script> [-- argumente]
npm run
npm test
npm start

Ce face npm run

În package.json, câmpul "scripts" dă nume unor comenzi de terminal: "build": "node build.mjs". npm run build rulează comanda din directorul în care se află package.json. Fără nume, npm run afișează lista scripturilor.

Înainte de rulare, npm adaugă node_modules/.bin la PATH. De aceea un script poate scrie doar prettier --write . sau vitest, fără cale, pentru unelte instalate cu -D.

Dacă există scripturi numite prebuild și postbuild, npm le rulează automat înainte și după build. Patru scripturi au scurtături fără run: npm test, npm start, npm stop, npm restart. Argumentele de după -- se adaugă la comanda scriptului.

Parametri

Parametru Descriere
<script> Numele scriptului din "scripts".
-- argumente Tot ce urmează după -- se adaugă la finalul comenzii.
--silent, -s Nu mai afișează antetul > proiect@versiune script, ci doar ieșirea scriptului.
--if-present Nu dă eroare dacă scriptul lipsește (util în spații de lucru).
-w <nume>, --workspaces Rulează scriptul într-un spațiu de lucru sau în toate.

Exemple

Exemplul 1: Scripturile proiectului

Un package.json cu un script de build care are pași înainte și după, plus scripturi obișnuite.

{
  "name": "catalog-note",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "prebuild": "node -e \"console.log('Șterg directorul dist')\"",
    "build": "node build.mjs",
    "postbuild": "node -e \"console.log('Gata, dist/ e actualizat')\"",
    "start": "node server.mjs",
    "test": "node --test",
    "salut": "node salut.mjs"
  }
}

Exemplul 2: Script cu pași pre și post

Un singur npm run build rulează trei scripturi, în ordine. Fiecare începe cu un antet care arată comanda.

npm run build

Ieșire în terminal

> catalog-note@1.0.0 prebuild
> node -e "console.log('Șterg directorul dist')"

Șterg directorul dist

> catalog-note@1.0.0 build
> node build.mjs

Construiesc 3 pagini

> catalog-note@1.0.0 postbuild
> node -e "console.log('Gata, dist/ e actualizat')"

Gata, dist/ e actualizat

Exemplul 3: Argumente după – și scurtătura npm start

Scriptul salut.mjs afișează process.argv.slice(2). Fără --, npm ar fi încercat să interpreteze --verbose ca opțiune a lui.

npm run salut -- --oras Iasi --verbose
npm start

Ieșire în terminal

> catalog-note@1.0.0 salut
> node salut.mjs --oras Iasi --verbose

Argumente: [ '--oras', 'Iasi', '--verbose' ]

> catalog-note@1.0.0 start
> node server.mjs

Server pornit pe portul 3000

Greșeli frecvente

  • Scrii npm build în loc de npm run build. Doar test, start, stop și restart merg fără run; npm build nu rulează scriptul tău.
  • Scrii în scripturi comenzi care merg doar în Bash (rm -rf dist, VAR=1 node app.js). Pe Windows npm folosește cmd.exe și ele dau eroare. Pentru portabilitate scrie pasul în JavaScript (fs.rm) sau folosește node --env-file.
  • Te aștepți ca node --run build să ruleze și prebuild/postbuild: varianta din Node.js le ignoră intenționat, doar npm run le rulează.

Comenzi înrudite

  • node --run: Rulează un script din câmpul „scripts” al package.json direct cu Node.js, mai repede decât npm run.
  • package.json: Fișierul de configurare al unui proiect Node.js: nume, versiune, tipul modulelor, scripturi, dependențe și versiunea Node cerută.
  • npm workspaces: Mai multe pachete într-un singur depozit (monorepo), cu un singur node_modules și comenzi rulate în toate deodată.
  • npx / npm exec: Rulează comanda unui pachet npm din proiect sau descărcat temporar, fără instalare globală.
  • process.argv: Tabloul cu argumentele din linia de comandă: process.argv.slice(2) dă ce a scris utilizatorul după numele scriptului.