Stack

npm ci non è npm install

npm ci pretende il lock, cancella node_modules e non scrive nulla. npm install, se i range non tornano, aggiorna package-lock.json. yarn.lock non è nella lista obbligatoria di npm ci.

4 min di lettura

npm ci non è npm install
In questa guida (5)
  1. 1Le cinque differenze scritte sulla pagina ci
  2. 2Quando install riscrive il lock
  3. 3yarn.lock non è nella lista di ci
  4. 4Errori da evitare
  5. 5In sintesi

npm ci non aggiorna il lockfile. npm install, quando i range di package.json non tornano, sì. Le due pagine della documentazione npm, etichetta «Version 11.21.0 (Legacy)», rilette il 20 ottobre 2026, non descrivono lo stesso comando. Non ho lanciato i comandi: riporto quello che scrivono npm-ci e npm-install.

In breve: npm ci pretende un package-lock.json o uno npm-shrinkwrap.json, cancella node_modules se c’è, e si ferma se il lock non coincide con package.json. Non scrive né il json né i lock. npm install senza argomenti, se i range non coincidono, risolve versioni nuove e aggiorna il lock. yarn.lock sta nella pagina di install, non tra i file che npm ci dichiara di esigere.

Le cinque differenze scritte sulla pagina ci

La pagina di npm ci dice che il comando somiglia a npm install ed è pensato per ambienti automatici: test, continuous integration, deploy, o qualunque caso in cui si voglia un’installazione pulita. Poi elenca le differenze. Non sono un mio riassunto.

Sulla pagina npm ciConseguenza
Deve esistere package-lock.json o npm-shrinkwrap.jsonSenza uno dei due, il comando non è quello descritto
Se il lock non coincide con package.json, esce con erroreNon aggiorna il lock per farli tornare
Installa solo l’intero progettoNon si aggiunge una dipendenza singola con questo comando
Se node_modules c’è, lo rimuove prima di installareNon è un incremento sulla cartella già presente
Non scrive package.json né i package-lockLa pagina dice: le installazioni sono «essentially frozen»

C’è una nota accanto. Se il lock è nato da npm install con flag che cambiano l’albero, per esempio --legacy-peer-deps o --install-links, gli stessi flag vanno passati a npm ci, altrimenti gli errori sono probabili. La pagina suggerisce di fissarli in un .npmrc di progetto, con npm config set … --location=project, e di committare quel file. Non è un flag decorativo.

Gli alias stampati sulla stessa pagina sono clean-install, ic, install-clean e isntall-clean. L’ultimo è scritto così, con la t mancante. Non lo correggo: è nella lista ufficiale. Il parallelo con composer install e composer update è solo questo: due comandi vicini non fanno la stessa scrittura sul file di lock.

Quando install riscrive il lock

La pagina di npm install, stessa etichetta di versione, descrive il caso senza argomenti. npm confronta package.json e package-lock.json. Se le versioni risolte nel lock soddisfano i range del json, usa le versioni esatte del lock. Se i range non coincidono, risolve versioni nuove che soddisfano package.json e aggiorna package-lock.json. L’esempio sulla pagina è modificare un range, per esempio ^7.0.0.

È il punto in cui i due comandi si separano. npm ci, sulla sua pagina, in quel disallineamento esce con errore. npm install, sulla sua, aggiorna il lock. Mettere npm ci in una pipeline e npm install sul portatile non è lo stesso gesto ripetuto due volte.

yarn.lock non è nella lista di ci

La pagina di install dice che, se esistono un package-lock, uno shrinkwrap o un yarn lock, l’installazione delle dipendenze segue quell’ordine: prima npm-shrinkwrap.json, poi package-lock.json, poi yarn.lock. La pagina di npm ci non nomina yarn.lock tra i file che il progetto «must» avere. Nomina solo package-lock o shrinkwrap. Non deduco che npm ci legga yarn.lock: la pagina che ho letto non lo scrive.

Errori da evitare

  • Lanciare npm ci per aggiungere un pacchetto. La pagina dice che il comando installa solo l’intero progetto.

  • Aspettarsi che npm ci sistemi un lock vecchio. Il disallineamento, lì, è un errore. Chi aggiorna il lock, sulla pagina gemella, è npm install.

  • Credere che node_modules venga riusato. Se c’è, npm ci lo cancella prima.

  • Omettere su npm ci i flag con cui è stato generato il lock. La nota cita --legacy-peer-deps e --install-links.

  • Trattare yarn.lock come sostituto del package-lock per npm ci. Non è nella lista dei file obbligatori di quella pagina.

In sintesi

Sulle docs npm etichettate Version 11.21.0 (Legacy), il 20 ottobre 2026, npm ci è un’installazione congelata: lock o shrinkwrap già presenti, niente scritture, errore se non coincidono, node_modules rimosso, niente dipendenze singole. npm install senza argomenti, se i range non tornano, aggiorna package-lock.json. L’alias isntall-clean è stampato così. Non ho eseguito i due comandi su un progetto.

Foto di copertina: Solijon Solayev, aggiornamento di Arch Linux con pacman su un portatile Acer, Wikimedia Commons, CC BY-SA 4.0. È pacman, non npm ci, e non è un diagramma del lockfile.

Domande frequenti

No, sulla pagina npm ci etichettata Version 11.21.0 (Legacy), letta il 20 ottobre 2026. Non scrive package.json né i lock. Se il lock non coincide con package.json, esce con errore.
Senza argomenti, la pagina gemella dice che se i range di package.json non sono soddisfatti dal lock, npm risolve versioni nuove e aggiorna package-lock.json.
No. La pagina dice che il comando installa solo l’intero progetto. Serve package-lock.json oppure npm-shrinkwrap.json.
La pagina di npm ci non lo elenca tra i file obbligatori. La pagina di npm install sì, per terzo, dopo shrinkwrap e package-lock. Non deduco un comportamento che la pagina di ci non scrive.
No. È uno degli alias stampati sulla pagina di npm ci, insieme a clean-install, ic e install-clean.

Potrebbe interessarti anche...

Hai bisogno di scegliere una webagency per il tuo progetto?

Abbiamo la soluzione giusta

Parliamone
  • Consulenza specializzata
  • Soluzioni su misura
  • Risultati concreti

Tecnologialiberaper tutti

Hai bisogno d'aiuto?

Parla con noi. Il nostro supporto è attivo tutti i giorni dalle 9 alle 18

+390835239514 Chiamaci

Crea il tuo eCommerce

Creiamo eCommerce su misura senza farti spendere un patrimonio

info@roxxoitalia.com Scopri il nostro CMS

Crea il tuo sito web

Siti web già pronti per andare online. Vuoi saperne di più? Contattaci

info@roxxoitalia.com Scrivici