Per modifiche npm node_modules albero o qualsiasi azione package.json, verrà generato automaticamente un package-lock.json. Descrive esattamente l'albero generato in modo che le installazioni successive possano generare lo stesso albero, indipendentemente dagli aggiornamenti intermedi delle dipendenze.
Questo file è destinato a essere inviato al repository del codice sorgente ed è disponibile per vari scopi:
Descrive una singola rappresentazione dell'albero delle dipendenze per garantire che i compagni di squadra, le implementazioni e l'integrazione continua garantiscano che le stesse dipendenze siano installate.
Fornire agli utenti uno strumento per "avanzare" a uno stato node_modules precedente senza dover fare il commit della directory stessa.
Facilitare una maggiore visibilità delle modifiche all'albero attraverso differenze di controllo del contenuto leggibili.
E ottimizzare il processo di installazione permettendo a npm di saltare la risoluzione duplicata dei metadati dei pacchetti precedentemente installati.
Un dettaglio chiave di package-lock.json è che non può essere rilasciato e verrà ignorato se trovato in qualche parte al di fuori del pacchetto di fascia alta. Condivide il formato con npm-shrinkwrap.json, è fondamentalmente lo stesso file ma permette la pubblicazione. Questo non è raccomandato a meno che tu non implementi uno strumento CLI o non utilizzi il processo di rilascio per produrre un pacchetto di produzione.
Se sia package-lock.json che npm-shrinkwrap.json esistono nella directory radice di un pacchetto, package-lock.json verranno completamente ignorati.
Link originale: https://docs.npmjs.com/files/package-lock.json
Dal rilascio di npm 5.x, il ruolo del blocco 5.6.0 è cambiato molte volte, e ora molti piccoli testi bianchi su Internet sono bloccati nella precedente traduzione dei documenti.
Ho aggiornato da npm3.x a npm5, ma ho scoperto che il fenomeno durante l'esecuzione di 'npm i' non era coerente con l'articolo di divulgazione scientifica su Internet.
Si menziona che, indipendentemente da come package.json file venga modificato, se npm i viene eseguito ripetutamente, npm verrà scaricato secondo le informazioni di versione descritte nel file di blocco.
Viene anche menzionato che, ripetendo npm i, npm ignora le informazioni di blocco e scarica il modulo di aggiornamento secondo le versioni semantiche del pacchetto nel package.json (il blocco sembra inutile).
**Secondo le informazioni, le regole di NPM I sono cambiate tre volte dall'uscita di NPM 5.0. **
1. Versione NPM 5.0.x, indipendentemente da come cambi i package.json, NPM I verrà scaricato in base al file di blocco
package-lock.json file non aggiornato dopo che package.json file è stato modificato · Numero #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Questo problema si lamenta di questo problema, ovviamente ho cambiato il package.json manualmente, perché non mi dai un pacchetto di upgrade! E poi porta al problema della 5.1.0...
2. Dopo la versione 5.1.0, l'installazione di npm ignorerà il file di blocco per scaricare l'ultimo npm
Poi qualcuno ha sollevato questa questione: perché il blocco del pacchetto viene ignorato? · Numero #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 Il reclamo si è poi evoluto nelle regole dopo la versione 5.4.2.
3. Dopo la versione 5.4.2, perché il blocco dei pacchetti viene ignorato? · Numero #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
In termini generali, se il package.json viene modificato e il package.json è diverso dal file di blocco, npm scaricherà l'ultimo pacchetto in base al numero di versione e al significato semantico del pacchetto quando esegui 'npm i', e lo aggiornerà in lock.
Se entrambi sono nello stesso stato, allora eseguendo npm scaricherò secondo il lock, indipendentemente dal fatto che la versione effettiva del pacchetto sia nuova o meno.
|