Zum Hauptinhalt springen

Produktentwicklung / Versionen

Konventionen

Installer-Dateien

Die Haupt-Installer-Datei (welche installOrUpgrade aufruft) sollten wie folgt benannt sein:

  • ou.sp.$PRODUKTKÜRZEL.installer.ts

Sollten verlinkte Schritte notwendig sein (Testbarkeit, Übersichtlichtkeit), sollten diese wie folgt benannt sein:

  • ou.sp.$PRODUKTKÜRZEL.installer.runner.ts - Script, welches die einzelnen Subtasks aufruft, sofern nötig (kann auch in der ou.sp.$PRODUKTKÜRZEL.installer.ts implementiert werden)
  • ou.sp.$PRODUKTKÜRZEL.installer.step.$BESCHREIBUNG.ts - Subtask

Update-Dateien

Update-Dateien sollten wie folgt benannt sein:

  • ou.sp.$PRODUKTKÜRZEL.installer.update.$VERSION.ts - Die Version muss hierbei natürlich mit der Version, zu der das Update gehört, gleich sein.

Sollten mehrere Features oder Fixes mit einer Version hereinkommen, welche ein Update-Script benötigen, so muss dies in der Update-Datei sichtbar sein. Beispielsweise über nach Issue-ID (z.B. POM-123) benannte Step-Funktionen:

import type { InstallStepInputOptions } from "@one-unity/library/ou.sp.Package";
const { Package } = require("ou.sp.Library");

function pom123(options: InstallStepInputOptions): void {
options.appendToResultSuccess("testing 123...");
}

function inv456(options: InstallStepInputOptions): void {
options.appendToResultSuccess("testing 456...");
}

module.exports = Package.createInstallerModule(
[
{ id: "POM-123", execute: pom123 },
{ id: "INV-456", execute: inv456 },
],
{ message: "Applying update X.Y.Z", asUser: "oucadmin" }
);

Neue Update-Dateien (Version NEXT)

Bei neuen Update-Dateien, bei denen die neue Version noch nicht klar ist, muss wie folgt benannt werden:

  • ou.sp.$PRODUKTKÜRZEL.installer.update.next.ts

In der ou.sp.$PRODUKTKÜRZEL.installer.ts muss {{VERSION_NEXT}} als Placeholder verwendet werden:

...
updateScriptsJs: [{
version: "{{VERSION_NEXT}}",
updateScriptName: "ou.sp.$PRODUKTKÜRZEL.installer.update.{{VERSION_NEXT}}"
}],
...

Versionsplatzhalter

{{VERSION_NEXT}} ist ein Platzhalter für die nächste Versionsnummer. Er wird je nach Pakettyp und Build-Modus unterschiedlich ersetzt. $VERSION steht dabei jeweils für die in der package.json des Pakets hinterlegte Version:

Inhaltsersetzung

Lösungen (z.B. invoice, postman, library)

ModusVerzeichnisDateitypenWas wird ersetzt
Develop-Buildbuild/, dist/*.js, *.jsp, *.sql, *.less, INSTALL.md, Workflow-ext/config/*.xml{{VERSION_NEXT}}$MAJOR.$MINOR.999; .update.next".update.$MAJOR.$MINOR.999"
Release-PRsrc/*.installer.ts (nur updateScriptsJs-Block), *.next.ts, *.next.test.ts, *.next.test.ts.snap, *next.sql{{VERSION_NEXT}}$VERSION; .update.next".update.$VERSION"

Dokumentationen (z.B. invoice-docs, postman-docs, library-docs)

ModusVerzeichnisDateitypenWas wird ersetzt
Develop-Buildbuild/*.json, *.html, *.js{{VERSION_NEXT}}$MAJOR.$MINOR.999; {{!VERSION_NEXT}}{{VERSION_NEXT}} (Kaskade, s.u.)
Release-PRdocs/*.md, *.mdx{{VERSION_NEXT}}$VERSION

Umbenennung von Dateien

Lösungen (z.B. invoice, postman, library)

ModusVerzeichnisDateien
Develop-Builddist/*.next.js*.$MAJOR.$MINOR.999.js
Release-PRsrc/*.next.ts*.$VERSION.ts, *.next.test.ts*.$VERSION.test.ts, *.next.test.ts.snap*.$VERSION.test.ts.snap, *next.sql*$VERSION.sql

Dokumentationen (z.B. invoice-docs, postman-docs, library-docs)

ModusVerzeichnisDateien
Develop-Buildbuild/Ordner namens {{VERSION_NEXT}}$MAJOR.$MINOR.999
Develop-Buildbuild/diffs/next.patch$MAJOR.$MINOR.999.patch
Release-PRstatic/diffs/next.patch$VERSION.patch
Release-PRdocs/next.md$VERSION.md, next.mdx$VERSION.mdx

Escape-Mechanismus (nur Dokumentationen)

Soll {{VERSION_NEXT}} selbst als lesbarer Text erscheinen (nicht ersetzt werden), wird ein weiteres ! vorangestellt: {{!VERSION_NEXT}}. Das Muster kaskadiert — jedes ! reduziert sich im Build-Artefakt um eins.