Pakkepakking
... på rammeverkstedet

Agenda 📝
- Semantisk versjonering
- Konvensjonelle commits
- Bundling
- Monorepos
Semantisk versjonering 🗂
-
Format på versjonsnummer: MAJOR.MINOR.PATCH
-
Inkompatible API-endringer →
øk MAJOR-versjonen -
Ny bakoverkompatibel funksjonalitet →
øk MINOR-versjonen -
Bakoverkompatible feilrettinger →
øk PATCH-versjonen -
Kan legge til prefiks for betaversjoner osv.
F.eks. MAJOR.MINOR.PATCH-beta.1
Hvorfor? 🤔
- Du gjør det sannsynligvis allerede i dag
- Versjonsnumre er ganske ubrukelige når de ikke følger et system

Eksempel 🤓
APP
PAKKE
// package.json
{
"dependency": {
"pakke": "^1.0"
}
}
PAKKE v1.0
PAKKE v1.0
Eksempel 🤓
PAKKE v1.0
APP
PAKKE
// package.json
{
"dependency": {
"pakke": "^1.0"
}
}
PAKKE v1.0
PAKKE v1.1
PAKKE v1.1
Eksempel 🤓
PAKKE v1.0
APP
PAKKE
// package.json
{
"dependency": {
"pakke": "^1.0"
}
}
PAKKE v1.0
PAKKE v1.1
PAKKE v1.1
PAKKE v1.1
PAKKE v2.0
Konvensjonelle commits 🪵
Et slags regelsett for hvordan man bør skrive commit-meldinger.
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Overordnet struktur
Konvensjonelle commits 🪵
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Typer
- fix: tilsvarer en PATCH
- feat: tilsvarer en MINOR
- refactor: hverken feilretting eller ny funksjonalitet
- chore: vanlig i release-commit og ved endringer i byggeprosessen
fix(fetcher): prevent racing of requests
Introduce a request id and a reference to latest request. Dismiss
incoming responses other than from latest request.
Remove timeouts which were used to mitigate the racing issue but are
obsolete now.
feat: allow provided config object to extend other configs
Eksempel 🤓
Konvensjonelle commits 🪵
chore!: drop support for Node 6
BREAKING CHANGE: use JavaScript features not available in Node 6.
Breaking change
Tilsvarer en MAJOR
Signaliseres med:
- Utropstegn bak typen, f.eks. fix!: commit-melding
- BREAKING CHANGE i footeren
Hvorfor? 🤔
- Automatisk generering av CHANGELOGs.
- Automatisk versjonering (basert på commit-typene)
- Gjør det enklere å bidra

Bundling 📦
- Mange verktøy: Webpack, Rollup, Parcel
Bundling 📦
- Mange verktøy: Webpack, Rollup, Parcel
Parcel
- Krever ingen/lite konfigurasjon
- Masse features:
- Dev server (med hot reloading)
- Tree shaking og code splitting
- Babel-transpilering
- Bundling til ESM- og CommonJS-moduler og Typescript-definisjoner
Bundling 📦
// package.json
{
"name": "bekkact",
"version": "1.0.0",
"source": "src/index.js",
"module": "dist/module.js",
"main": "dist/main.js",
"types": "dist/types.d.ts",
"scripts": {
"build": "parcel build"
},
}
Monorepo 🎪
bekkact
bekkact-dom
Git
Git
Multirepo
bekkact
bekkact-dom
Git
Monorepo
Oppgaver 🧑💻👩💻
- Lag individuelle bundles for bekkact og bekkact-dom
- Få prosjektet til å bruke konvensjonelle commits
- Sett opp semantisk versjonering
- Bonus: Konfigurer bootstrapping og linking av avhengigheter i monorepoet

Nyttige ressurser 💡
Bundler: https://parceljs.org/
Konvensjonelle commits:
https://www.conventionalcommits.org/en/v1.0.0/
https://github.com/conventional-changelog/commitlint
https://github.com/conventional-changelog/standard-version
Semantisk versjonering: https://semver.org/
Monorepo: https://lerna.js.org/
Pakke pakker
By Markus Rauhut
Pakke pakker
- 103