Skip to Content
UtviklereMonorepo

Monorepo

uib-ub-monorepo er et monorepo for Universitetet i Bergens fullstack-team.

Komme i gang

git clone git@github.com:uib-ub/uib-ub-monorepo.git cd uib-ub-monorepo npm install # bygg alle apper og pakker npm run build

Utvikling

Start alle eller bare noen apper og pakker når du utvikler.

npm run dev # Eller bruk turbo for filtrering av apper turbo run dev --filter="chc-*" --filter="api" --filter="docs"

Beste praksis

Installere pakker etc.

Hver apps package.json er speilet i monorepoets delte package-lock.json. Se (Turborepo docs ). Dette betyr:

  • Endringer i package.json bør utføres med den respektive npm-kommandoen og monorepoets package-lock.json må oppdateres og committes også.
  • Før man oppretter en ny branch (som påvirker package-lock.json) må man pulle fra origin. Å merge konflikter i den delte package-lock.json er vanskelig.

Vanlige npm-kommandoer:

  • npm install
  • npm install <package> – Legg til pakke i root (hovedsakelig for devDependencies)
  • npm install <package> —workspace=<workspace>
  • npm install <package> -w <workspace>
  • npm uninstall <package> —workspace=<workspace>
  • npm update <package> —workspace=<workspace>
  • npm run build - Bygg alle pakker og apper
  • npm run dev - Utvikle alle pakker og apper
  • npm run lint - Lint alle pakker
  • npm run clean - Rydd opp i alle node_modules og dist mapper (kjører hver pakkes clean script)

Branch-strategi

Konvensjon

Brancher bør ha prefiks fix eller feature, for det meste…

Ignorert Build Step basert på branch-navn

Vercel bygger hver app når en ny branch opprettes. Men den tilbyr en funksjon for å ignorere apper basert på noe logikk: Vercel docs 

Vi har for øyeblikket følgende oppførsel konfigurert i hver apps Vercel-innstillinger: Git>Ignored Build Step>Command: Hver app kan definere tags på formen docs/ (docs), sps/, (gruppe språksamlingane) tp/ (termportalen) etc. Apper som ikke inkluderer denne kommandoen bygges alltid.

if [[ "$VERCEL_GIT_COMMIT_REF" =~ .*/.* ]] && ! [[ "$VERCEL_GIT_COMMIT_REF" =~ .*(docs)/.* ]] ; then echo "- Tag not matched, build cancelled"; exit 0; else echo ""- Build can proceed, calling turbo-ignore""; npx turbo-ignore; fi

Oppførsel:

  • Hvis ingen skråstrek er til stede, blir ingen build kansellert på dette trinnet
  • Hvis en tag er definert i branch-navnet, blir bygging av apper som ikke har taggen kansellert
  • npx turbo-ignore kalles. Se docs 

Tags som for øyeblikket er definert er:

  • api: api/
    • Vercel-prosjekt: api-ub
  • chc-exh-nt-web: exh/
    • Vercel-prosjekt: exh-nt
  • chc-web: chc/
    • Vercel-prosjekt: chc-web
  • docs: docs/
    • Vercel-prosjekt: docs
  • link-shortener: urls/
    • Vercel-prosjekt: ub-urls
  • sps-termportal-web: /sps tp/ tpw/
    • Vercel-prosjekt: termportalen
  • sps-termportal-admin: sps/ tp/ tpa/
    • Vercel-prosjekt: termportalen-admin
  • ub-dashboard: ubdash/
    • Vercel-prosjekt: ub-dashboard
  • sps-stadnamn-web: sps/ stadnamn/
    • Vercel-prosjekt: stadnamn-web

Avhengighetsgraf

Denne grafen ble generert av Turborepo 25.04.23.

Nyttige lenker

Lær mer om kraften i Turborepo:

Sist oppdatert