npm modifikācijai node_modules kokam vai jebkurai darbībai package.json automātiski tiks ģenerēta package-lock.json. Tajā aprakstīts precīzs koks, kas tiek ģenerēts, lai nākamās instalācijas varētu ģenerēt to pašu koku neatkarīgi no starpposma atkarības atjauninājumiem.
Šo failu ir paredzēts iesniegt pirmkoda repozitorijā, un tas ir pieejams dažādiem mērķiem:
Apraksta vienu atkarības koka attēlojumu, lai garantētu, ka komandas biedri, izvietojumi un nepārtraukta integrācija nodrošina tieši to pašu atkarību instalēšanu.
Nodrošiniet lietotājiem rīku, lai "pāriet" uz iepriekšējo node_modules stāvokli, neveicot pašu direktoriju.
Veiciniet labāku koku izmaiņu redzamību, izmantojot lasāmas avota vadības atšķirības.
Un optimizējiet instalēšanas procesu, ļaujot npm izlaist iepriekš instalēto pakotņu metadatu dublikātu izšķirtspēju.
Galvenā detaļa par package-lock.json ir tā, ka to nevar izlaist un tiks ignorēts, ja tas tiks atrasts kaut kur ārpus augstākā līmeņa paketes. Tas dalās formātā ar npm-shrinkwrap.json, tas būtībā ir tas pats fails, bet ļauj publicēt. Tas nav ieteicams, ja vien neizvietojat CLI rīku vai citādi neizmantojat izlaišanas procesu, lai izveidotu ražošanas pakotni.
Ja pakotnes saknes direktorijā ir gan package-lock.json, gan npm-shrinkwrap.json, package-lock.json tiks pilnībā ignorēti.
Oriģinālā saite: https://docs.npmjs.com/files/package-lock.json
Kopš npm 5.x izlaišanas 5.6.0 bloķēšanas loma ir mainījusies daudzas reizes, un tagad daudzi mazi balti teksti internetā ir iestrēguši iepriekšējā dokumenta tulkojumā.
Es atjaunināju no npm3.x uz npm5, bet atklāju, ka parādība, izpildot "npm i", neatbilst populārzinātniskajam rakstam internetā.
Tiek minēts, ka neatkarīgi no tā, kā package.json fails tiek modificēts, ja npm i tiek atkārtoti izpildīts, npm tiks lejupielādēts saskaņā ar bloķēšanas failā aprakstīto versijas informāciju.
Tiek arī minēts, ka, atkārtojot npm i, npm ignorēs bloķēšanas informāciju un lejupielādēs atjaunināšanas moduli saskaņā ar pakotnes semantisko versiju informāciju package.json (bloķēšana šķiet bezjēdzīga).
** Saskaņā ar informāciju, npm i noteikumi ir mainījušies trīs reizes kopš npm 5.0 izlaišanas. **
1. npm 5.0.x versija, neatkarīgi no tā, kā mainās package.json, npm i tiks lejupielādēts saskaņā ar bloķēšanas failu
package-lock.json fails nav atjaunināts pēc package.json faila izmaiņām · Nr. #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Šis jautājums sūdzas par šo problēmu, acīmredzot es nomainīju package.json manuāli, kāpēc jūs man nedodat jaunināšanas paketi! Un tad tas noved pie jautājuma par 5.1.0 ...
2. Pēc versijas 5.1.0 npm instalēšana ignorēs bloķēšanas failu, lai lejupielādētu jaunāko npm
Tad kāds izvirzīja šo jautājumu, kāpēc tiek ignorēta paketes bloķēšana? · Nr. #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 Sūdzība galu galā attīstījās noteikumos pēc versijas 5.4.2.
3. Kāpēc pēc versijas 5.4.2 tiek ignorēta pakotnes bloķēšana? · Nr. #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
Aptuveni runājot, ja package.json tiek mainīts un package.json atšķiras no bloķēšanas faila, npm lejupielādēs jaunāko pakotni atbilstoši pakotnes versijas numuram un semantiskai nozīmei, izpildot "npm i", un atjauninās to uz bloķēšanu.
Ja abi ir vienā stāvoklī, tad izpildot npm i lejupielādēs saskaņā ar bloķēšanu, neatkarīgi no tā, vai faktiskā pakotnes versija ir jauna vai nē.
|