Avhengighetsadministrasjon i monorepoer
Utforsk teknikker for å administrere interne og eksterne avhengigheter på tvers av flere prosjekter i et monorepo.
Avhengighetsadministrasjon i monorepoer er en gratis leksjon i Git videregående: Monorepo, Submodules og arbeidsflyter på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Git videregående: Monorepo, Submodules og arbeidsflyter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.
Monorepo-avhengigheter forklart
Velkommen til avhengighetshåndtering i monorepoer! I et monorepo ligger mange prosjekter samlet i ett Git-repositorium.
Dette oppsettet gir unike utfordringer og fordeler for hvordan prosjektene deler kode og er avhengige av hverandre.
- Interne avhengigheter: Når ett prosjekt i monorepoet bruker kode fra et annet prosjekt i det samme monorepoet.
- Eksterne avhengigheter: Når prosjekter bruker tredjepartsbiblioteker eller rammeverk (som React eller Lodash).
Interne avhengigheter: Dele kode
En av de største fordelene med et monorepo er at det er enkelt å dele kode. Tenk deg at du har et delt bibliotek med UI-komponenter og flere applikasjoner som bruker det.
I stedet for å publisere og bruke det som en separat pakke kan du referere direkte til det i monorepoet.
Dette forenkler utvikling og testing og sikrer konsistens på tvers av applikasjonene.
Eksterne avhengigheter: Tredjepartsbiblioteker
Akkurat som alle andre prosjekter er prosjekter i et monorepo ofte avhengige av eksterne biblioteker med åpen kildekode. Tenk på populære verktøy som Node.js-pakker (for eksempel Express og Axios) eller Java-biblioteker (for eksempel Spring Boot og Guava).
Det kan være utfordrende å håndtere disse. Ulike prosjekter kan trenge ulike versjoner av det samme eksterne biblioteket, eller du kan ønske å håndheve én enkelt versjon i alle prosjekter for å sikre konsistens.
Pakkehåndterere og arbeidsområder
For språk som JavaScript er pakkehåndterere som npm, Yarn eller pnpm nødvendige. De introduserer vanligvis et konsept som kalles arbeidsområder.
Arbeidsområder lar deg håndtere flere pakker innenfor én enkelt package.json i roten. Dette gjør det mulig å:
- Sentralisere installasjonen av avhengigheter.
- Enkelt referere til interne pakker på tvers av prosjekter.
- Optimalisere bruken av diskplass.
Arbeidsområder og hoisting forklart
En viktig funksjon i pakkehåndterere for monorepoer er hoisting. I stedet for å installere den samme eksterne avhengigheten flere ganger i node_modules-mappen til hvert prosjekt, flyttes den opp til node_modules i roten.
Dette betyr:
- Mindre bruk av diskplass.
- Raskere installasjon.
- Alle prosjekter bruker samme versjon av en avhengighet som er flyttet opp, noe som reduserer mulige konflikter.
Sette opp npm-arbeidsområder
La oss se hvordan du konfigurerer npm workspaces. Du definerer dem i rotfilen package.json.
Her ber vi npm om å lete etter pakker i katalogen packages/*. Hver underkatalog vil inneholde sin egen package.json.
{
"name": "my-monorepo",
"version": "1.0.0",
"private": true,
"workspaces": [
"packages/*"
],
"scripts": {
"install:all": "npm install"
}
}Bruke interne og eksterne avhengigheter
La oss nå opprette et enkelt ui-lib- og et app-prosjekt i mappen packages/. app vil være avhengig av ui-lib og et eksternt bibliotek, lodash.
Legg merke til at ui-lib refereres til med pakkenavnet sitt i app/package.json.
/* packages/ui-lib/package.json */
{
"name": "ui-lib",
"version": "1.0.0",
"main": "index.js"
}
/* packages/ui-lib/index.js */
export const Button = () => 'Monorepo Button';
/* packages/app/package.json */
{
"name": "app",
"version": "1.0.0",
"dependencies": {
"ui-lib": "*",
"lodash": "^4.17.21"
}
}
/* packages/app/index.js */
import { Button } from 'ui-lib';
import { capitalize } from 'lodash';
console.log(capitalize(Button()));
// Run 'npm install' from root, then 'node packages/app/index.js'Håndtere versjonskonflikter
Hva om ett prosjekt trenger lodash@3.x, mens et annet trenger lodash@4.x?
Monorepo-verktøy prøver ofte å løfte én enkelt versjon. Hvis ulike versjoner er angitt, kan enkelte pakkehåndterere installere flere versjoner eller kreve eksplisitte overstyringer.
Beste praksis: Sikt mot én og samme versjon av viktige eksterne avhengigheter i hele monorepoet for å unngå kompliserte problemer med avhengighetsoppløsning og sikre kompatibilitet.
Avhengighetsgraf og verktøy
Etter hvert som monorepoer vokser, blir det avgjørende å forstå forholdet mellom prosjektene. En avhengighetsgraf viser visuelt hvilke prosjekter som er avhengige av hvilke.
Verktøy som Nx, Lerna og Turborepo genererer slike grafer og hjelper deg med å:
- Identifisere kritiske stier.
- Forstå konsekvensene av endringer.
- Optimalisere byggeprosesser ved å bare bygge prosjekter som er berørt.
Kunnskapssjekk: Avhengigheter i monorepoer
Se for deg et monorepo som bruker npm workspaces med flere prosjekter. Hvilke av følgende påstander om avhengighetshåndtering er riktige?
Oppsummering: Mestre avhengigheter i monorepoer
Du har lært det viktigste om avhengighetshåndtering i monorepoer!
- Interne avhengigheter fremmer gjenbruk av kode og konsistens.
- Eksterne avhengigheter håndteres effektivt ved hjelp av workspace-funksjoner.
- Workspaces og hoisting optimaliserer installasjon, diskplass og versjonskonsistens.
- Det er viktig å forstå avhengighetsgrafen i store monorepoer.
Det er avgjørende å beherske disse teknikkene for å bygge skalerbare og vedlikeholdbare monorepo-prosjekter.
Lær deg Git videregående: Monorepo, Submodules og arbeidsflyter med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Avhengighetsadministrasjon i monorepoer» gratis?
Ja – hele teksten i «Avhengighetsadministrasjon i monorepoer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Git videregående: Monorepo, Submodules og arbeidsflyter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.
Hva lærer jeg i «Avhengighetsadministrasjon i monorepoer»?
Utforsk teknikker for å administrere interne og eksterne avhengigheter på tvers av flere prosjekter i et monorepo. Du øver på Git videregående: Monorepo, Submodules og arbeidsflyter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Git videregående: Monorepo, Submodules og arbeidsflyter?
Ingen tidligere erfaring er nødvendig. Git videregående: Monorepo, Submodules og arbeidsflyter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Avhengighetsadministrasjon i monorepoer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Git videregående: Monorepo, Submodules og arbeidsflyter-leksjonen?
Ja. Alle Git videregående: Monorepo, Submodules og arbeidsflyter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Avhengighetsadministrasjon i monorepoer
- Atomiske commits og endringer på tvers av prosjekter
- CI/CD-strategier for monorepoer
- Build-caching og bygging av bare berørte prosjekter