Ce face npm ci
npm ci (de la „clean install”) instalează exact versiunile din package-lock.json. Spre deosebire de npm install, nu modifică niciodată package.json sau package-lock.json: dacă cele două fișiere nu se potrivesc (cineva a adăugat o dependență și nu a actualizat lock-ul), comanda se oprește cu eroare.
Dacă există deja un director node_modules, îl șterge și îl reface de la zero. Rezultatul este același pe orice calculator, așa că npm ci este comanda potrivită în GitHub Actions, în Dockerfile și pe serverul de producție.
Fără package-lock.json (sau npm-shrinkwrap.json) comanda refuză să ruleze. Nu poate instala un pachet anume: npm ci lodash nu există.
Parametri
| Parametru | Descriere |
|---|---|
--omit=dev |
Sare peste devDependencies. |
--ignore-scripts |
Nu rulează scripturile pachetelor (preinstall, postinstall). |
Exemple
Exemplul 1: Instalare curată
npm ci
Ieșire în terminal
added 3 packages, and audited 4 packages in 706ms
1 package is looking for funding
run `npm fund` for details
found 0 vulnerabilities
Exemplul 2: Proiect fără package-lock.json
Primele rânduri ale erorii. Rezolvarea: rulează o dată npm install și pune în Git fișierul package-lock.json generat.
npm ci
Ieșire în terminal
npm error code EUSAGE
npm error
npm error The `npm ci` command can only install with an existing package-lock.json or
npm error npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or
npm error later to generate a package-lock.json file, then try again.
Exemplul 3: În GitHub Actions
Un pas tipic dintr-un fișier .github/workflows/teste.yml: instalare exactă, apoi testele.
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm test
Greșeli frecvente
- Folosești
npm installîn CI: poate actualiza lock-ul în timpul build-ului și primești alte versiuni decât pe calculatorul tău. - Modifici
package.jsonde mână și nu rulezinpm installdupă: lock-ul rămâne în urmă șinpm cispune că fișierele nu sunt sincronizate. - Rulezi
npm cilocal doar ca să adaugi un pachet: comanda nu primește nume de pachete și ștergenode_modulesla fiecare rulare.
Comenzi înrudite
npm install: Instalează pachete din registrul npm în node_modules și le trece în package.json și package-lock.json.package-lock.json: Fișierul în care npm notează versiunea exactă a fiecărui pachet instalat, ca toată lumea să primească același node_modules.npm audit: Verifică dependențele în baza de vulnerabilități cunoscute și le actualizează automat cu npm audit fix.npm run: Rulează un script din câmpul „scripts” al package.json, cu node_modules/.bin în PATH și cu scripturile pre/post.