NPM-muokkauksessa node_modules puussa tai minkä tahansa toiminnon package.json luodaan automaattisesti package-lock.json. Se kuvaa tarkan puun, joka tuotetaan, jotta myöhemmät asennukset voivat tuottaa saman puun riippumatta välivaiheen riippuvuuspäivityksistä.
Tämä tiedosto on tarkoitettu toimitettavaksi lähdekoodivarastoon ja se on käytettävissä eri tarkoituksiin:
Kuvaa yhden edustuksen riippuvuuspuusta varmistaakseen, että tiimikaverit, käyttöönotot ja jatkuva integraatio varmistavat, että samat riippuvuudet asennetaan.
Tarjoa käyttäjille työkalu "edetä" aiempaan node_modules-tilaan ilman, että hakemistoa tarvitsee sitoutua.
Mahdollista puumuutosten parempaa näkyvyyttä luettavien lähdekoodinhallintaerojen avulla.
Ja optimoi asennusprosessi sallimalla NPM:n ohittaa aiemmin asennettujen pakettien päällekkäiset metatietojen resoluutiot.
Keskeinen yksityiskohta package-lock.json on, että sitä ei voi julkaista ja se jätetään huomiotta, jos sitä löytyy muualta kuin huippupaketista. Se jakaa muodon npm-shrinkwrap.json:n kanssa, se on käytännössä sama tiedosto mutta sallii julkaisun. Tätä ei suositella, ellei käytössä ole CLI-työkalua tai muuten julkaisuprosessia tuotantopaketin tuottamiseen.
Jos sekä package-lock.json että npm-shrinkwrap.json ovat paketin juurihakemistossa, package-lock.json jätetään kokonaan huomiotta.
Alkuperäinen linkki: https://docs.npmjs.com/files/package-lock.json
npm 5.x:n julkaisun jälkeen 5.6.0-lukon rooli on muuttunut useaan otteeseen, ja nyt monet pienet valkoiset tekstit internetissä ovat jumissa aiemmassa asiakirjakäännöksessä.
Päivitin npm3.x:stä npm5:een, mutta huomasin, että ilmiö 'npm i':n suorittamisessa ei ollut yhdenmukainen internetin populaaritieteellisen artikkelin kanssa.
Mainitaan, että riippumatta siitä, miten package.json tiedostoa muokataan, jos npm i suoritetaan toistuvasti, npm ladataan lukitustiedostossa kuvattujen versiotietojen mukaisesti.
Mainitaan myös, että kun npm i toistuu, npm jättää lukitustiedot huomiotta ja lataa päivitysmoduulin paketin semanttisen version tietojen mukaisesti package.json:ssa (lukko vaikuttaa hyödyttömältä).
**Tietojen mukaan npm i:n säännöt ovat muuttuneet kolme kertaa npm 5.0:n julkaisun jälkeen. **
1. NPM 5.0.x -versio, riippumatta siitä, miten package.json muuttuu, NPM I ladataan lukitustiedoston mukaisesti
package-lock.json tiedostoa ei päivitetä package.json tiedoston vaihdon jälkeen · Numero #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Tämä ongelma valittaa tästä ongelmasta, tietenkin vaihdoin package.json manuaalisesti, mikset antaisi minulle päivityspakettia! Ja sitten se johtaa 5.1.0-ongelmaan...
2. Version 5.1.0 jälkeen npm-asennus ohittaa lukitustiedoston ladatakseen uusimman npm:n
Sitten joku nosti tämän kysymyksen, miksi pakettilukitus jätetään huomiotta? · Numero #17979 · NPM/NPM-https://github.com/npm/npm/issues/17979 Valitus kehittyi lopulta säännöiksi version 5.4.2 jälkeen.
3. Miksi pakettilukitus jätetään huomiotta version 5.4.2 jälkeen? · Numero #17979 · NPM/NPM-https://github.com/npm/npm/issues/17979
Karkeasti ottaen, jos package.json muuttuu ja package.json poikkeaa lukitustiedostosta, npm lataa uusimman paketin versionumeron ja semanttisen merkityksen mukaisesti suorittaessaan 'npm i':tä, ja päivittää sen lukituksi.
Jos molemmat ovat samassa tilassa, npm:n suorittaminen lataan lukituksen mukaisesti, riippumatta siitä, onko varsinainen pakettiversio uusi vai ei.
|