feat: Versionierung mit Changelog, Version 1.0.0
Bis jetzt stand nirgends, welcher Stand laeuft. Beim Aktualisieren auf einem Server ist das die erste Frage. CHANGELOG.md nach Keep a Changelog, Versionsnummern nach SemVer. Der Changelog sagt, was sich beim Arbeiten aendert - nicht, welche Datei angefasst wurde. Dazu eine Tabelle, was Major, Minor und Patch fuer den Betreiber praktisch bedeuten, und der Hinweis, dass sich eine Datenbank-Migration nicht zurueckrollen laesst. Die Version steht bewusst an zwei Stellen: package.json und src/lib/version.ts. Ein Import der package.json waere im Standalone-Build eine andere Datei als die des Projekts - die Zahl haenge dann an der Laufzeit. Ein Test haelt beide zusammen, und "npm run version" setzt sie gemeinsam samt Changelog-Abschnitt. Committet und getaggt wird nicht automatisch. Ein Changelog-Eintrag, den niemand gegengelesen hat, ist keinen Deut besser als keiner. Sichtbar wird die Version unten in der Seitenleiste und unter /api/gesundheit - dort mit Git-Stand, den der Docker-Build hineinreicht. Auf der Anmeldeseite steht sie nicht: wer nicht angemeldet ist, muss nicht wissen, welche Fassung hier laeuft. Etappe: 8 Phase: Haertung
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import { VERSION, versionstext } from '@/lib/version'
|
||||
|
||||
/**
|
||||
* Die Version steht an zwei Stellen: in der package.json und in
|
||||
* src/lib/version.ts. Das ist Absicht - im Standalone-Build liegt eine
|
||||
* andere package.json neben dem Server als die des Projekts, ein Import
|
||||
* waere also je nach Laufzeit eine andere Zahl.
|
||||
*
|
||||
* Damit die beiden nicht auseinanderlaufen, gibt es dieses Netz. Wer die
|
||||
* Version von Hand aendert statt mit "npm run version", merkt es hier.
|
||||
*/
|
||||
describe('Version', () => {
|
||||
const paket = JSON.parse(readFileSync('package.json', 'utf8')) as { version: string }
|
||||
|
||||
it('stimmt mit der package.json ueberein', () => {
|
||||
expect(
|
||||
VERSION,
|
||||
'src/lib/version.ts und package.json weichen ab - benutze "npm run version"',
|
||||
).toBe(paket.version)
|
||||
})
|
||||
|
||||
it('ist eine gueltige Versionsnummer nach SemVer', () => {
|
||||
expect(VERSION).toMatch(/^\d+\.\d+\.\d+$/)
|
||||
})
|
||||
|
||||
it('haengt den Git-Stand an, wenn er bekannt ist', () => {
|
||||
expect(versionstext().startsWith(VERSION)).toBe(true)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user