npm 5 julkaistiin tänään ja yksi uusista ominaisuuksista on deterministiset asennukset package-lock.json
-tiedoston luomisen avulla.
Onko tämä tiedosto tarkoitus säilyttää lähdekoodinhallinnassa?
Oletan, että se on samanlainen kuin yarn.lock
ja composer.lock
, jotka molemmat on tarkoitus säilyttää lähdekoodinhallinnassa.
Kyllä, package-lock.json
on tarkoitettu tarkistettavaksi lähdekoodinhallintaan. Jos käytät npm 5:tä, saatat nähdä tämän komentorivillä: Luotu lockfile nimellä package-lock.json. You should commit this file.
Mukaan npm help package-lock.json
:
package-lock.json
luodaan automaattisesti kaikille toiminnoille, joissa npm:n muuttaa jokonode_modules
-puuta taipackage.json
-tiedostoa. Se kuvaa tarkalleen luotu puu, jotta myöhemmät asennukset pystyvät tunnistamaan luoda identtisiä puita riippumatta riippuvuuksien päivityksistä.
Tämä tiedosto on tarkoitettu siirrettäväksi lähdekoodivarastoihin, ja se palvelee eri tarkoituksiin:
- Kuvaa riippuvuuspuun yhden esityksen siten, että tiimit, käyttöönotot ja jatkuva integrointi asentavat taatusti täsmälleen samat riippuvuudet.
- Tarjota käyttäjille mahdollisuus "aikamatkailla"
node_modules
:n aikaisempiin tiloihin ilman, että hakemistoa tarvitsee itse sitoa.
- Helpotetaan puun muutosten näkyvyyttä luettavien lähdekoodinhallinnan diffien avulla.
- Ja optimoida asennusprosessia sallimalla npm:n ohittaa aiemmin asennettujen pakettien toistuvat metatietojen resoluutiot.
Yksi keskeinen yksityiskohta
package-lock.json
:ssa on se, että sitä ei voi julkaista, ja se on jätetään huomiotta, jos se löytyy muualta kuin toplevel-paketista. Se jakaa muodon npm-shrinkwrap.json(5) kanssa, joka on periaatteessa sama tiedosto, mutta se on sallii julkaisemisen. Tätä ei suositella, ellei oteta käyttöön CLI-työkalua tai muuten käytä julkaisuprosessia tuotantopakettien tuottamiseen.
Jos sekä
package-lock.json
ettänpm-shrinkwrap.json
ovat läsnä juuritiedostossa paketin juuressa,package-lock.json
jätetään kokonaan huomiotta.
Kyllä, voit sitoa tämän tiedoston. npm's official docs:
package-lock.json
luodaan automaattisesti kaikissa operaatioissa, joissanpm
muuttaa jokonode_modules
-puuta taipackage.json
-puuta. Se kuvaa täsmälleen sen puun, joka luotiin, jotta myöhemmät asennukset voivat luoda identtisiä puita välivaiheen riippuvuuspäivityksistä riippumatta.Tämä tiedosto on tarkoitettu siirrettäväksi lähdekoodivarastoihin[.]