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 denpm run build. Doartest,start,stopșirestartmerg fărărun;npm buildnu 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ștecmd.exeși ele dau eroare. Pentru portabilitate scrie pasul în JavaScript (fs.rm) sau foloseștenode --env-file. - Te aștepți ca
node --run buildsă ruleze șiprebuild/postbuild: varianta din Node.js le ignoră intenționat, doarnpm runle 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.