Riippuvuuksien hallinta ja versiointi monorepoissa
Opitte käsittelemään jaettuja riippuvuuksia ja sisäisten pakettien versiointia sekä pitämään työkalut yhdenmukaisina suuressa monorepossa toistettavien ja ristiriidattomien buildien varmistamiseksi.
Riippuvuuksien hallinta ja versiointi monorepoissa on ilmainen Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-kurssilla on yhteensä 4 oppituntia.
Miksi riippuvuuksien hallinta on tärkeää
Monorepossa kymmenet projektit jakavat saman puun. Ilman kurinalaisuutta käytössä voi samanaikaisesti olla kolme eri versiota samasta kirjastosta, mikä kasvattaa bundleja ja aiheuttaa vaikeasti havaittavia virheitä.
Keskitetty riippuvuuksien hallinta tarjoaa versioille yhden totuuden lähteen, joten päivitykset ja tietoturvakorjaukset voidaan tehdä yhtenä koordinoituna muutoksena kymmenien hajallaan olevien muutosten sijaan.
Yhden version käytäntö
Yleinen monorepo-strategia on yhden version käytäntö: jokainen projekti käyttää kustakin kolmannen osapuolen kirjastosta täsmälleen yhtä versiota.
- Poistaa tiimien väliset versioerot
- Pakottaa arvioimaan päivitykset kokonaisuutena
- Yksinkertaistaa build-työkalujen riippuvuusgraafia
Kompromissina päivitys voi edellyttää muutoksia useissa projekteissa samanaikaisesti.
Workspaces käytännössä
Pakettienhallintaohjelmat, kuten npm, yarn ja pnpm, tukevat workspaces-toimintoa: ylätason määritystä, joka nostaa jaetut riippuvuudet yhteiseen käyttöön ja linkittää sisäiset paketit paikallisesti.
{
"name": "my-monorepo",
"private": true,
"workspaces": [
"packages/*",
"apps/*"
]
}Sisäisten pakettien linkittäminen
Sisäiset paketit viittaavat toisiinsa nimellä, eivät suhteellisella polulla. Pakettienhallintaohjelma luo niihin symboliset linkit, joten yhden paketin muutos näkyy heti toisessa.
{
"name": "@acme/web-app",
"dependencies": {
"@acme/ui": "workspace:*",
"@acme/utils": "workspace:*"
}
}Kiinnitetyt versiot ja versioalueet
Kannattaako käyttää täsmällisiä versioita vai sallia versioalueet?
- Täsmälliset versiot (
1.4.2) tuottavat toistettavat buildit, mutta edellyttävät manuaalisia päivityksiä. - Versioalueet (
^1.4.0) valitsevat päivitykset automaattisesti, mutta voivat aiheuttaa eriytymistä.
Monorepoissa suosikaa täsmällisiä versioita ja lockfile-tiedostoa, jotta jokainen kone ratkaisee saman riippuvuuspuun.
Lockfile on pyhä
Lockfile (package-lock.json, yarn.lock, pnpm-lock.yaml) tallentaa täsmällisen ratkaistun riippuvuuspuun. Commitoikaa se, tarkistakaa siihen tehdyt muutokset älkääkä koskaan muokatko sitä käsin.
Yllättävä lockfile-muutos koodikatselmoinnissa on usein ensimmäinen merkki tahattomasta riippuvuuden muutoksesta.
Catalogs ja keskitetyt versiot
Modernit työkalut tukevat catalogs-luetteloita: keskitettyä versioluetteloa, johon paketit viittaavat nimellä, joten versio tarvitsee päivittää vain yhdessä paikassa.
# pnpm-workspace.yaml
catalog:
react: 18.3.1
typescript: 5.4.5
# in a package.json
# "react": "catalog:"Sisäisten julkaisujen versiointi
Kun sisäisiä paketteja julkaistaan ulkopuolisille, tarvitsette julkaisuprosessin. Changesets-työkalun kaltaiset työkalut antavat osallistujien ilmoittaa muutoksen vaikutuksen ja laskevat seuraavan semver-päivityksen automaattisesti.
# .changeset/brave-lions-jump.md
---
"@acme/ui": minor
"@acme/utils": patch
---
Add new Button variant and fix date helper.Eriytymisen tunnistaminen
Eriytymistä tapahtuu, kun versiot poikkeavat toisistaan huomaamatta. Lisätkää CI-tarkistus, joka epäonnistuu, jos kriittisestä riippuvuudesta löytyy useita versioita.
# Fail if more than one version of react is resolved
npm ls react --all | grep -c 'react@' Koordinoidut päivitykset
Päivittäkää jaettu riippuvuus yhdessä haarassa, suorittakaa vaikutuspiirissä olevien projektien testit ja yhdistäkää muutos atomisesti. Näin vältätte puoliksi migroidun tilan, jossa osa sovelluksista käyttää uutta versiota ja osa ei.
Automatisointibotit voivat avata nämä päivitys-PR:t ja antaa CI:n varmistaa turvallisuuden ennen yhdistämistä.
Tietoturvan auditointi
Koska versiot ovat keskitettyjä, yksi audit-ajo kattaa koko repositorion. Liittäkää se CI:hin, jotta haavoittuvat transitiiviset riippuvuudet estävät yhdistämiset.
pnpm audit --audit-level=highPikatarkistus
Testatkaa monorepon riippuvuuksien hallintaan liittyvä ymmärryksenne.
Kertaus
Opitte, miten monorepot pitävät riippuvuudet hallinnassa: yhden version käytäntö, workspaces sisäisten pakettien linkittämiseen, catalogs keskitettyihin versioihin, pyhä lockfile, eriytymisen tunnistus CI:ssä sekä koordinoidut ja auditoitavat päivitykset.
Kurinalainen riippuvuuksien hallinta pitää suuren monorepon toistettavana ja luotettavana.
Opi Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Riippuvuuksien hallinta ja versiointi monorepoissa” ilmainen?
Kyllä – oppitunnin ”Riippuvuuksien hallinta ja versiointi monorepoissa” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-kurssin, päivitä CoddyKit PROhon. Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Riippuvuuksien hallinta ja versiointi monorepoissa”?
Opitte käsittelemään jaettuja riippuvuuksia ja sisäisten pakettien versiointia sekä pitämään työkalut yhdenmukaisina suuressa monorepossa toistettavien ja ristiriidattomien buildien varmistamiseksi. Harjoittelet Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Riippuvuuksien hallinta ja versiointi monorepoissa”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunnilla?
Kyllä. Jokainen Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Koodin omistajuus ja käyttöoikeuksien hallinta
- Koontien ja testien suorituskyvyn optimointi
- Monorepoon siirtymisen strategiat
- Riippuvuuksien hallinta ja versiointi monorepoissa