Pentru modificarea npm node_modules arbore sau orice package.json de acțiune, un package-lock.json va fi generat automat. Descrie exact arborele care este generat, astfel încât instalările ulterioare să poată genera același arbore, indiferent de actualizările intermediare ale dependențelor.
Acest fișier este destinat să fie trimis în depozitul de cod sursă și este disponibil pentru diverse scopuri:
Descrie o singură reprezentare a arborelui de dependențe pentru a garanta că colegii, implementările și integrarea continuă asigură că aceleași dependențe sunt instalate.
Oferă utilizatorilor un instrument pentru a "avansa" către o stare node_modules anterioară fără a fi nevoie să dea commit direct pentru director.
Facilitarea unei vizibilități mai mari a modificărilor arborelui prin diferențe lizibile în controlul versiunii.
Și optimizează procesul de instalare permițând NPM să sară peste rezoluția duplicată de metadate a pachetelor instalate anterior.
Un detaliu cheie despre package-lock.json este că nu poate fi lansat și va fi ignorat dacă este găsit în afara pachetului de top. Împarte formatul cu npm-shrinkwrap.json, este practic același fișier, dar permite publicarea. Acest lucru nu este recomandat decât dacă implementezi un instrument CLI sau folosești procesul de lansare pentru a produce un pachet de producție.
Dacă atât package-lock.json, cât și npm-shrinkwrap.json există în directorul rădăcină al unui pachet, package-lock.json vor fi ignorate complet.
Link original: https://docs.npmjs.com/files/package-lock.json
De la lansarea npm 5.x, rolul blocării 5.6.0 s-a schimbat de multe ori, iar acum multe texte albe mici de pe Internet sunt blocate în traducerea anterioară a documentelor.
Am actualizat de la npm3.x la npm5, dar am constatat că fenomenul la executarea 'npm i' nu era în concordanță cu articolul de știință populară de pe Internet.
Se menționează că, indiferent cât de mult este modificat package.json fișier, dacă npm i este executat în mod repetat, npm va fi descărcat conform informației de versiune descrise în fișierul de blocare.
Se menționează, de asemenea, că atunci când se repetă npm i, npm va ignora informațiile despre blocare și va descărca modulul de actualizare conform informațiilor despre versiunea semantică a pachetului din package.json (blocarea pare inutilă).
**Conform informațiilor, regulile NPM I s-au schimbat de trei ori de la lansarea NPM 5.0. **
1. Versiunea NPM 5.0.X, indiferent cum se schimbă package.json, NPM I va fi descărcat conform fișierului de blocare
package-lock.json fișier neactualizat după ce fișierul package.json este modificat · Numărul #16866 · Npm/NPM https://github.com/npm/npm/issues/16866 Această problemă se plângă de această problemă, evident că am schimbat package.json manual, de ce nu-mi dai un pachet de upgrade! Și apoi ajunge la problema 5.1.0...
2. După versiunea 5.1.0, instalarea npm va ignora fișierul de blocare pentru a descărca cel mai recent npm
Atunci cineva a ridicat această problemă: de ce este ignorat blocarea pachetelor? · Numărul #17979 · Npm/NPM https://github.com/npm/npm/issues/17979 Plângerea a evoluat în cele din urmă în reguli după versiunea 5.4.2.
3. După versiunea 5.4.2, de ce se ignoră blocarea pachetului? · Numărul #17979 · Npm/NPM https://github.com/npm/npm/issues/17979
Pe scurt, dacă package.json este modificat și package.json este diferit de fișierul de blocare, npm va descărca cel mai recent pachet conform numărului de versiune și semnificației semantice al pachetului când rulează 'npm i' și îl va actualiza la blocare.
Dacă ambele sunt în aceeași stare, atunci executarea npm i va descărca conform blocării, indiferent dacă versiunea efectivă a pachetului este nouă sau nu.
|