Pitäisikö sinun sitoa node_modules-kansio Gitiin?

Vuoden 2021 JavaScript Full-Stack Bootcamp on NYT AVOIMENA ILMOITTAUTUMISILLE!

Pitäisikö sinun sitoa node_modules-kansio Gitiin?

Mainitsen Gitin, mutta sama pätee mihin tahansa käyttämääsi versiohallintajärjestelmään,

Tämä on hyvä kysymys. On hyviä ja huonoja puolia.

Ehdotan, että oletusarvoisesti node_modules-kansiota ei toimiteta, vaan se lisätään .gitignore-tiedostoon.

Sinulla saattaa olla erityistarpeita, jotka kumoavat tämän päätöksen.

Keskustelen aiheesta, jotta voit muodostaa oman mielipiteesi.

Tässä on muutamia argumentteja, jotka puoltavat sitä, että node_modules-kansiota ei kannata toimittaa.

Pitäydyt siistinä Git-historiassa. Kun lisäät uuden paketin, tallennat package.json– ja package-lock.json-tiedostomuutokset.Kun päätät päivittää paketin version, tallennat vain package-lock.json-tiedostomuutoksen.

package-lock.json on npm:n suhteellisen uusi ominaisuus, joka korvaa aiemmin käytetyn shrinkwrap-komennon

Välttelet mahdollisesti satojen megatavujen suuruisen määrän riippuvuuksia arkistoosi, mikä tarkoittaa, että ajan mittaan arkistossasi työskennellään nopeammin. Haarojen vaihtaminen ja koodin tarkistaminen ovat 2 operaatiota, joihin arkiston koko vaikuttaa valtavasti.

Työskennellessäsi haarojen kanssa sinulla saattaa olla yhdistämisristiriitoja, jotka ulottuvat oman koodisi ulkopuolelle ja sen sijaan koskevat riippuvuuksien koodia. Tätä ei ole mukava käsitellä ja saatat menettää paljon aikaa. Vältä laittamasta

Pullipyyntöä tai yhdistämistä, jos muutat riippuvuuksia, tulee paljon enemmän tiedostoja mukaan prosessiin. Työkalut muuttuvat hitaammiksi tai jopa päättävät olla näyttämättä koko diffiä (esimerkiksi GitHub)

Natiivit node-moduulit täytyy kääntää uudelleen, jos otat käyttöön eri alustalle kuin kehityskoneesi (yleinen käyttötapaus: kehität Macilla, otat käyttöön Linuxilla). Sinun täytyy kutsua npm rebuild, mikä vie palvelimen pois synkronoinnista.

Node_modulesin sitouttamatta jättäminen tarkoittaa, että sinun täytyy listata kaikki moduulisi package.json:ssa (ja package-lock.json:ssa) pakollisena vaiheena. Tämä on hyvä, koska sinulla ei välttämättä ole ahkeruutta tehdä niin, ja jotkut npm-operaatiot saattavat rikkoutua, jos et tee niin.

Vinkki: package.json-tiedostossa ei tarvitse käyttää tiettyä versiota, ei enää package-lock.json-tiedoston käyttöönoton jälkeen.

Jos käytät erillisiä dependencies– ja devDependencies-joukkoja, komittamalla node_modules-kansion komitoit periaatteessa devDependencies-kansion, eikä tuotantokehityksessä ole mitään (helppoa) tapaa päästä niistä eroon.

syyt, jotka saattavat johtaa node_modulesin komittamiseen, ja miten lieventää niitä

Tekijä saattaa poistaa npm-paketin npm-rekisteristä. Näin tapahtui kuuluisan left-pad-tapauksen yhteydessä vuonna 2016 (lue lisää). Tämä tapahtuu hyvin harvoin suosituille paketeille. Jos näin tapahtuu, et ehkä enää pääse käyttämään kyseistä toiminnallisuuden osaa.

Voit myös väittää, että npm ei taatusti pysy olemassa loputtomiin, se saattaa kadota, joten helppo tapa taata, että sovelluksesi koko koodi on käytettävissäsi tulevaisuudessa, on commitata se yhdessä sovelluksesi kanssa.

Luo haarautuminen GitHubiin aina, kun käytät pakettia. Pidä se silloin tällöin ajan tasalla alkuperän kanssa (voidaan automatisoida).

Tämä ei ole aina käytännöllistä, koska paketeilla voi olla kymmeniä omia riippuvuuksiaan.

Voit käyttää projektillesi yksityistä arkistopalvelinta ja käyttää sitä kaikkien riippuvuuksiesi isännöintiin.

Vaihtoehdot ovat

  • sinopia
  • npm_lazy
  • npm-lazy-mirror
  • artifactory
  • npm Enterprise, npm-yhtiöltä

Toinen syy sitouttaa riippuvuudet on mahdollisuus muokata koodia nopeasti, jos löydät bugin tai haluat lisätä jotain kirjastoon.

Tämä on kaksiteräinen miekka: jos teet näin, menetät mahdollisuuden päivittää paketin, jos uusia julkaisuja tehdään, ja se on hyvä vain nopeisiin, väliaikaisiin korjauksiin.

Optimaalinen ratkaisu on joko lähettää PR, joka tekee haluamasi alkuperäiseen projektiin, tai haarauttaa se ja käyttää haarautumistasi riippuvuutena.

Lataa ilmainen Node.js-käsikirjani

The 2021 JavaScript Full-Stack Bootcamp IS NOW OPEN FOR SIGNUPS UNTILAISUUKSILLE UNTILANNE SEURAAVAAN TORSTAIIN KESKEYTTÄMÄTTÄ! Älä missaa tätä tilaisuutta, ilmoittaudu TÄNÄÄN!

Lisää Node-tutoriaalia:

  • Kuinka käytät lupauksia ja awaitia Node.js:n callback-pohjaisten funktioiden kanssa
  • Noden ydinmoduulit
  • JSON:n pilkkominen Node.js
  • Tiedoston kuvaajien kanssa työskentely Nodessa
  • Node.js Streams
  • How to get the last updated date of a file using Node.js
  • The Pug Guide
  • Get the current folder in Node
  • How to use the Node.js REPL

Vastaa

Sähköpostiosoitettasi ei julkaista.