Az npm módosítás esetén node_modules fa vagy bármilyen művelet package.json automatikusan generálnak egy package-lock.json. Pontosan leírja azt a fát, amelyet generálnak, hogy a következő telepítések ugyanazt a fát hozhassák létre, függetlenül a köztes függőségi frissítésektől.
Ez a fájl a forráskód tárolóba való beküldésre készült, és különböző célokra elérhető:
Leírja a függőségi fa egyetlen reprezentációját, hogy garantálja, hogy a csapattársak, telepítések és folyamatos integráció biztosítsa, hogy pontosan ugyanazok a függőségek legyenek telepítve.
Biztosíts a felhasználóknak egy eszközt, amellyel "előrehaladhatnak" egy korábbi node_modules állapotba anélkül, hogy magára a könyvtárra kellene kötniük.
Elősegítse a fa változások jobb láthatóságát olvasható forrásvezérlési különbségek révén.
És optimalizálja a telepítési folyamatot azzal, hogy az npm áthagyhatja a korábban telepített csomagok duplikált metaadat-felbontását.
package-lock.json egyik kulcsfontosságú részlete, hogy nem lehet kiadni, és figyelmen kívül hagyják, ha a felső kategórián kívül találják. Ugyanaz a formátum a npm-shrinkwrap.json-vel, lényegében ugyanaz a fájl, de lehetővé teszi a publikálást. Ez nem ajánlott, hacsak nem telepítel egy CLI eszközt, vagy más módon a kiadási folyamatot használod gyártási csomag elkészítéséhez.
Ha mind a package-lock.json, mind a npm-shrinkwrap.json létezik egy csomag gyökérkönyvtárában, package-lock.json teljesen figyelmen kívül hagyják.
Eredeti link: https://docs.npmjs.com/files/package-lock.json
Az npm 5.x megjelenése óta az 5.6.0 zár szerepe sokszor változott, és most sok kis fehér szöveg az interneten ragadt meg a korábbi dokumentumfordításban.
Frissítettem npm3.x-ről npm5-re, de azt tapasztaltam, hogy az 'npm i' futtatása során történt jelenség nem egyezik az interneten megjelenő népszerű tudományos cikkekkel.
Megemlítik, hogy bármilyen módon is módosítják package.json fájlt, ha az npm i ismétlődően lefuttatják, az npm a zárolási fájlban leírt verzióinformációk szerint töltődik le.
Azt is említik, hogy amikor ismétlik az npm i-t, az npm figyelmen kívül hagyja a zárolási információkat, és letölti a frissítő modult a package.json csomag szemantikai verziójának információi szerint (a zár haszontalannak tűnik).
**Az információk szerint az npm i szabályai háromszor változtak az npm 5.0 megjelenése óta. **
1. NPM 5.0.x verzió, függetlenül attól, hogyan változik a package.json, az NPM I a lock fájl szerint lesz letöltve
package-lock.json fájl nem frissül, miután package.json fájlt megváltoztattak · Szám #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Ez a probléma panaszkodik erről a problémáról, nyilván manuálisan cseréltem ki a package.json, miért nem adsz egy frissítő csomagot! És aztán az 5.1.0 problémájához vezet...
2. Az 5.1.0 verzió után az npm telepítése figyelmen kívül hagyja a zárolási fájlt, hogy letöltse a legfrissebb npm-t
Aztán valaki felvetette ezt a kérdést, miért hagyják figyelmen kívül a csomag-zárolást? · Szám #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 A panasz végül a 5.4.2-es verzió után kialakult szabályokká.
3. Az 5.4.2 verzió után miért hagyják figyelmen kívül a csomag-zárolást? · Szám #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
Nagyjából ha a package.json megváltozik, és a package.json eltér a zárolt fájltól, az npm letölti a legújabb csomagot a verziószám és a csomag szemantikai jelentése alapján az 'npm i' futtatásakor, majd frissíti zárolására.
Ha mindkettő ugyanabban az állapotban van, akkor az npm futtatása a zárolás szerint tölt le, függetlenül attól, hogy a tényleges csomagverzió új-e vagy sem.
|