Deliver us from dependence hell

Deliver us from dependence hell

useimmissa nykyaikaisissa palveluissa ja sovelluksissa on joukko riippuvuuksia, jotka elävät alati kasvavassa node-modules-kansiossa. Yleensä monia näistä kirjastoista ylläpidetään, muutetaan ja päivitetään aktiivisesti. Jos riippuvuuksiasi hallitaan huonosti, voit nopeasti joutua riippuvuushelvettiin.

jos et tunne npm: ää, katso se tästä ennen lukemista

🛒 Ruokakauppa

solmusovellusta käynnistettäessä yksi ensimmäisistä vaiheista on käynnissä npm install. Kun suoritat tämän, solmu tarkistaa tiedoston package.json projektin pohjalta. Jos kyseinen tiedosto löytyy, se käyttää dependency – osiota eräänlaisena ”päivittäistavarakauppalistana”, jonka avulla voit käydä keräämässä hakemuksesi vaatimia” ainesosia ” (koodibittejä).
Alt-teksti
”päivittäistavarakauppa” on tässä tapauksessa jotain, mitä npm kutsuu nimellä registry. Oletusarvoisesti solmusovelluksesi etsii näitä paketteja julkisesta npm-rekisteristä, jossa suurin osa kaikesta mitä tarvitset (Yksityiset rekisterit voidaan luoda omistusoikeudelliselle koodille ja sellaiselle). Jos paketti löytyy rekisteristä, node laittaa kyseisen ”ainesosan” node_modules – hakemistoon projektisi pohjalle.

on tärkeää huomata, että vaadittavilla paketeilla voi olla oma ”ostoslista” (paketti.json), ja kaikki nämä sisäkkäiset riippuvuudet on ratkaistava ennen kuin sovelluksesi siirtyy seuraavaan riippuvuuteen omassa paketissaan.json.

Alt-teksti

⬆️ versiot, 🥕 Karetit ja 🃏 Jokerit

riippuvuuksien versiot ovat yleensä jotain v1.3.5. Tätä kutsutaan semanttiseksi versioinniksi eli semveriksi. Semverillä numerot kuvaavat koodin muutoksia vaihtelevalla vakavuudella – MAJOR.MINOR.PATCH.
asiakirjoistaan –

suuri versio, kun teet yhteensopimattomia API-muutoksia,
MINOR-versio, kun lisäät toimintoja taaksepäin yhteensopivalla tavalla, ja
PAIKKAVERSIO, kun teet taaksepäin yhteensopivia virheenkorjauksia.

tätä silmällä pitäen monet ihmiset haluavat päivittää sovelluksensa automaattisesti kaikilla tuoreilla uusilla tavaroilla, joita heidän riippuvuuksissaan saattaa olla uudemmissa, ei-murtavissa muutoksissa.

Prefixing with tilde ~ antaa sinulle kaikki uudet PATCH päivitykset, mutta ei duuria tai mollia. Joten ~1.3.1 voisi asentaa 1.3.9, mutta ei 1.4.0

Prefixing with caret ^ antaa sinulle uusia PATCH ja MINOR versioita, mutta ei suuria. Joten ^1.3.1 pystyi asentamaan 1.4.9 mutta ei 1.5.0
 alateksti
 alateksti

Katsotaanpa katsomaan esimerkkikoodin riippuvuus puu:

my-breakfast | | milk | |coffee-script 

Ok, enemmänkin keppi, mutta toivottavasti riippuvuusketju on selvä. Pakettimme.json vaatii version v0.5.0 nimenomaan milk, mutta maito vaatii coffee-script missä tahansa 0.9.61.0.0. npm install ajetaan, kehitämme sovellustamme, kaikki on hyvin.

📼 nyt pikakelataan 2 kuukautta. Joku löytää projektisi ja haluaa osallistua. He haarukoivat ja kloonaavat reposi, juokse npm install, AAAA ja se ei toimi. ”Mutta se toimi koneessani!”sinä itket. Kun yhteistyökumppanisi asensi solmumoduulit, heille taattiin tietty versio milk: stä, mutta he saivat eri version coffee-script: stä, koska milk: n paketti.json käytti semveriä.

🗿 riippuvuuksien asettaminen kiveen

yksi ratkaisu tähän on käyttää package-lock.json – tiedostoa. Tämä tiedosto antaa sinulle hyvin rakeinen hallita versioita jokaisen riippuvuuden, että asennat. Jos package.json on kuin ostoslista, niin package-lock.json on kuin budjetti. Muroja saa, mutta ne ovat kaupan brändiä eikä Captain crunchia. Tämä spesifisyys ulottuu riippuvuuspuun jokaiseen haaraan asti. Sinulla täytyy olla package.json, jos haluat käyttää lukitustiedostoa (package.json tekee paljon muutakin kuin vain riippuvuuksien hallintaa, se on vain tämän viestin painopiste).

🎁

itse olen sitä mieltä, että package-lock.json – tiedostoa pitäisi aina käyttää (uudemmissa npm-versioissa se syntyy itse asiassa automaattisesti). Se vain tekee kaikesta luotettavampaa ympäristöissä ja käyttöönotoissa. Tässä muutama viimeinen pieni nuggets toivottavasti auttaa, kun se tulee huollettavia:

  • npm install --save päivittää automaattisesti lukkotiedostosi ja pakettisi.json sen paketin kanssa.
  • npm ci sen sijaan, että vain npm install rakentaa automaattisesti solmumoduulisi uudelleen ja rakentaa lukkotiedostostasi. Se on todella hyödyllinen komento CI / CD ja yleensä paras käyttää yhdessä lockfile.
  • suurempiin projekteihin, ja supervahvaan riippuvuuteen, tsekkaa docker ja containers. Se voi toimia lähes kuin virtuaalikone, joka täydellisesti sisältää koodin ja sen riippuvuudet, ja kloonataan edistää eri ympäristöissä. Joten toivottavasti päädyt paljon vähemmän” se toimi koneellani ” ongelmia.

Vastaa

Sähköpostiosoitettasi ei julkaista.