npm 5 tika izlaists šodien un viena no jaunajām funkcijām ietver deterministisku instalēšanu ar package-lock.json
faila izveidi.
Vai šis fails ir jāglabā avota kontrolē?
Es pieņemu, ka tas ir līdzīgi kā yarn.lock
un composer.lock
, kuriem abiem ir jābūt avota kontrolē.
Jā, package-lock.json
ir paredzēts pārbaudei avota kontrolē. Ja izmantojat npm 5, komandrindā var parādīties šāds paziņojums: created a lockfile as package-lock.json. Saskaņā ar [
npm help package-lock.json`](https://github.com/npm/npm/blob/v5.0.0/doc/files/package-lock.json.md):
package-lock.json
tiek automātiski ģenerēts visām operācijām, kurās npm maina vai nunode_modules
koku, vaipackage.json
. Tas apraksta precīzu ģenerēto koku, lai turpmākās instalācijas varētu ģenerēt identiskus kokus neatkarīgi no starpposma atkarību atjauninājumiem.
Šis fails ir paredzēts iesūtīšanai avota repozitorijos, un tas kalpo dažādiem mērķiem:
- Aprakstīt vienotu atkarību koka attēlojumu tā, lai komandas biedri, izvietošana un nepārtrauktā integrācija garantētu, ka tiks instalētas tieši tādas pašas atkarības.
- Nodrošināt iespēju lietotājiem "ceļot laikā" uz iepriekšējiem
node_modules
stāvokļiem, neveicot paša kataloga nodošanu.
- Veicināt koku izmaiņu labāku pamanāmību, izmantojot lasāmus avota kontroles atšķirības.
- Un optimizēt instalēšanas procesu, ļaujot npm izlaist atkārtotu metadatu izšķiršanu iepriekš instalētām paketēm.
Viena no galvenajām
package-lock.json
detaļām ir tā, ka to nevar publicēt, un tas tiks ignorēts, ja tiks atrasts jebkurā citā vietā, nevis paketes pakotnē. Tā ir koplietojama formātu ar npm-shrinkwrap.json(5), kas būtībā ir tas pats fails, bet atļauj publicēšanu. Tas nav ieteicams, ja vien neizvietojat CLI rīku vai citādi neizmantojat publicēšanas procesu ražošanas paku izveidei.
Ja gan
package-lock.json
, gannpm-shrinkwrap.json
ir atrodami datubāzes saknē. pakotnē,package-lock.json
tiks pilnībā ignorēts.
Jā, šo failu var izdarīt. No npm's oficiālajiem dokumentiem:
package-lock.json
tiek automātiski ģenerēts visām operācijām, kurās npm
maina vai nu node_modules
koku, vai package.json
. Tas apraksta precīzu ģenerēto koku, lai turpmākās instalācijas varētu ģenerēt identiskus kokus neatkarīgi no starpposma atkarību atjauninājumiem.
Šis fails ir paredzēts iesaiņošanai avota repozitorijos[.]