How to update a published NPM package
If you want to update a dependency…
You may be able to run npm install and it will update the latest version, if the package.json file uses caret syntax.
For example, consider the following dependency configuration:
- {
- "dependencies": {
- "some_module": "^1.0.0"
- }
- }
Semplicemente eseguendo npm install si può aggiornare all'ultima versione. Dipende dalla versione di npm che avete. Comunque; nelle versioni più recenti di npm, leggerà il file del pacchetto e aggiornerà solo se il modulo soddisfa già i requisiti. Per esempio, fate finta che l'ultima versione sia la 1.5.0. Se si esegue npm install su un progetto nuovo senza la directory node_modules, installerà la versione 1.5.0. Tuttavia, quando uscirà la versione 1.6.0, si potrebbe pensare "eseguirò semplicemente npm install di nuovo". Questo non funzionerà necessariamente perché hai già installato la 1.5.0 e soddisfa già i requisiti specificati nel file package.json. Se vuoi forzare almeno la versione 1.6.0, dovresti modificare il file package.json di conseguenza, o cancellare la directory node_modules e lanciare nuovamente npm install.
Se vuoi aggiornare un pacchetto esistente che hai pubblicato...
Sei sfortunato. Le versioni esistenti non possono essere sovrascritte. Questa è una linea guida rigorosa di npm, che è progettata per fornire affidabilità. Considera l'idea che tu, come utente, hai eseguito la 1.5.0 in sviluppo. Tutto sembra pronto per la produzione. Poi costruisci in produzione, ma lo sviluppatore ha ri-rilasciato la 1.5.0. Ora hai distribuito codice non testato/sconosciuto in produzione. Per prevenire questo, npm non permette modifiche alle versioni esistenti.
Il workaround è semplice. Create una nuova "versione". Per i piccoli aggiornamenti incrementali, si dovrebbe modificare il numero di versione minore (ad esempio 1.0.x dove x è la versione minore). Per le corrette linee guida sul versioning di npm, vedere Semantic Versioning 2.0.0.
npm ha un comando di aiuto per fare questo. Vedere npm-version | npm Documentation per i dettagli.