Ho bisogno sia di package-lock.json che di package.json?


149

Dopo aver aggiornato il mio NPM all'ultima versione (dalla 3.X alla 5.2.0) ed eseguito npm installsu un progetto esistente, ottengo un package-lock.jsonfile creato automaticamente .

Posso dire che package-lock.jsonmi dà un albero delle dipendenze esatto rispetto a package.json.

Da quelle sole informazioni, sembra package.jsonridondante e non più necessario.

Sono entrambi necessari per far funzionare NPM?
È sicuro o possibile utilizzare solo il package-lock.jsonfile?

I documenti su package-lock.json ( doc1 , doc2 ) non menzionano nulla al riguardo.

Modifica :

Dopo averci pensato un po 'di più, sono giunto alla conclusione che se qualcuno volesse usare il tuo progetto con una versione precedente di NPM (prima di 5.x), installerebbe comunque tutte le dipendenze, ma con versioni meno accurate (versioni di patch)


Risposte:


103

Hai bisogno di entrambi package-lock.jsone package.json? No .

Ti serve il package.json? .

Puoi avere un progetto con solo il package-lock.json? No .

La package.jsonsi usa per più di dipendenze - come definire le proprietà del progetto, descrizione, autore e licenza di informazione, script, ecc package-lock.jsonviene utilizzato esclusivamente per le dipendenze di blocco per un numero di versione specifica.


19

package-lock.json: registra la versione esatta di ciascun pacchetto installato che consente di reinstallarli. Le installazioni future saranno in grado di costruire un albero delle dipendenze identico.

package.json: registra la versione minima richiesta dall'app. Se aggiorni le versioni di un determinato pacchetto, la modifica non si rifletterà qui.


1
Se quanto sopra è vero e package.jsonregistra la versione minima richiesta dall'app e package-lock.json registra la versione esatta di ciascun pacchetto installato, allora ho una strana situazione in cui un modulo è impostato nella versione 0.112.1 nel pacchetto .json e 0.110.0 in package-lock.json ...
Jean-François Beauchamp

6

Se la tua domanda è se il file di blocco deve essere assegnato al controllo del codice sorgente, dovrebbe farlo. Sarà ignorato in determinate circostanze.

L'ho trovato richieste pull pull e commit cronologia, quindi se lo vedi cambiare, esegui un commit separato per esso.


1
No, non stavo chiedendo di impegnarsi per il controllo del codice sorgente. Solo se NPM ha bisogno di entrambi allo stesso tempo per funzionare. package-lock.jsonsembra una versione più dettagliata di package.json, quindi è sicuro o possibile usare solo il file di blocco.
Omri Luzon,

Vedo, ho lasciato package.json nei miei progetti, principalmente per avere un posto per gli script npm.
Stanley Kirdey,

1
C'è ora una domanda separata sull'opportunità di mettere package-lock.jsonsotto controllo delle versioni.
Adrian W,

0

Una spiegazione più accurata e dettagliata del motivo alla base del mantenimento di package-lock.json è disponibile qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.