Vahvistanko npm 5:n luoman package-lock.json-tiedoston?

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.

Ratkaisu

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 joko node_modules-puuta tai package.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.

Kommentit (23)

Kyllä, se'on tarkoitettu sisäänkirjautumiseen. Haluan ehdottaa, että se saa oman yksilöllisen sitoumuksen. Huomaamme, että se lisää paljon kohinaa diffeihimme.

Kommentit (8)

Kyllä, voit sitoa tämän tiedoston. npm's official docs:

package-lock.json luodaan automaattisesti kaikissa operaatioissa, joissa npm muuttaa joko node_modules-puuta tai package.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[.]

Kommentit (2)