Zum Inhalt springen

Core-SDK-Referenz

@pubm/core ist die programmatische API hinter der pubm-CLI. Diese Seite deckt die oeffentlichen Identifikatoren ab, die aus dem Paket-Root exportiert werden:

import { ... } from "@pubm/core";

Das Paket liefert Typdeklarationen sowie ESM- und CJS-Entry-Points. In den aktuellen Paketmetadaten ist node >= 24 festgelegt.

Terminal-Fenster
npm install @pubm/core
pnpm add @pubm/core
bun add @pubm/core

Fuehrt dieselbe Release-Pipeline aus, die auch die CLI antreibt.

import { pubm } from "@pubm/core";
await pubm({
version: "patch",
dryRun: true,
tag: "next",
});

pubm() erwartet ein Options-Objekt. Die wichtigsten Felder sind:

FeldTypZweck
versionstringErforderliches Release-Ziel wie patch, minor, major oder eine explizite SemVer.
dryRunbooleanZeigt den Task-Plan an, ohne Git-Zustand zu ändern oder zu veröffentlichen.
mode"local" | "ci"Ausführungsmodus: local (interaktiv) oder ci (nicht interaktiv, tag-basiert).
preparebooleanFuehrt nur die Vorbereitungsphase aus (Validierung und Publish-Checks im Dry-Run).
publishbooleanFuehrt nur die Publish-Phase aus (Veröffentlichung vom neuesten Tag).
releaseDraftbooleanErstellt einen Draft-GitHub-Release statt eines veröffentlichten Releases.
branchstringVerlangt einen bestimmten Branch vor dem Veröffentlichen.
anyBranchbooleanDeaktiviert die Branch-Prüfung für einen Lauf.
tagstringVeröffentlicht unter einem Dist-Tag wie latest, next oder beta.
packagesPackageConfig[]Überschreibt automatisch gefundene Pakete.

Für Config-getriebene Releases laedt pubm() automatisch pubm.config.*, loest die Paket-Erkennung auf und verbindet die Plugins, bevor der Task-Graph ausgeführt wird.

Diese Helfer sind die wichtigsten Einstiegsstellen für Code, der pubm.config.* lesen oder validieren will.

ExportArtZweck
defineConfigfunctionTypisierter Helfer zum Schreiben von pubm.config.ts.
loadConfigfunctionLaedt pubm.config.* von der Festplatte und gibt PubmConfig | null zurück.
resolveConfigfunctionWendet Standardwerte an, entdeckt Pakete automatisch und normalisiert private Registries.
PubmConfigtypeForm der vom Benutzer geschriebenen Config.
ResolvedPubmConfigtypeVollstaendig aufgeloeste Config, die resolveConfig() zurückgibt.
PackageConfigtypePaketbezogener Config-Eintrag für Discovery und Publish-Planung.
import { defineConfig, loadConfig, resolveConfig } from "@pubm/core";
export default defineConfig({
packages: [{ path: "packages/core" }],
});
const config = await loadConfig(process.cwd());
const resolved = config ? await resolveConfig(config, process.cwd()) : null;

PackageConfig ist der Ort, an dem du pro Paket Registries, Ecosystem, Build-Command oder Test-Command überschreiben kannst:

type PackageConfig = {
path: string;
registries?: Array<"npm" | "jsr" | "crates" | string | PrivateRegistryConfig>;
ecosystem?: "js" | "rust";
buildCommand?: string;
testCommand?: string;
};

Nutze die Plugin-Exports, wenn du die Publish-Pipeline um benutzerdefinierte Registries, Ecosystems, Lifecycle-Hooks oder CLI-Befehle erweitern willst.

ExportArtZweck
PubmPlugintypeOberster Plugin-Vertrag.
PluginHookstypeLifecycle-Hooks wie beforeBuild, afterPublish, onError, afterRelease und Asset-Pipeline-Hooks.
HookFn / ErrorHookFn / AfterReleaseHookFntypeHook-Signaturen.
PluginCommand / PluginSubcommand / PluginCommandOptiontypeModell für benutzerdefinierte CLI-Befehle von Plugins.
PluginRunnerclassHilfsklasse, die Hooks ausführt und Registries/Ecosystems aus geladenen Plugins sammelt. Stellt außerdem collectCredentials() und collectChecks() bereit, um Credential-Deskriptoren und Preflight-Checks aus allen registrierten Plugins zu sammeln.
PluginCredentialtypeDeklarativer Deskriptor für ein Token oder Secret, das ein Plugin benötigt. Siehe Plugin-API-Referenz.
PluginChecktypeDeskriptor für einen Preflight-Check, den ein Plugin beiträgt. Siehe Plugin-API-Referenz.
PluginTaskContexttypelistr2-unabhaengiger Wrapper für PluginCheck.task. Stellt output, title und prompt() bereit.
GhSecretEntrytypeEin Eintrag aus den GitHub-Secret-Sync-Helfern: { secretName: string; token: string }.
collectPluginCredentialsfunctionSammelt PluginCredential[] aus allen in der Config registrierten Plugins und löst ihre Werte auf.
injectPluginTokensToEnvfunctionSchreibt aufgeloeste Plugin-Tokenwerte in process.env, damit spaetere Publish-Schritte sie wie normale Umgebungsvariablen lesen können.
ReleaseContexttypeRelease-Metadaten für afterRelease-Hooks. Enthält packageName, version, tag, releaseUrl und assets.
ReleaseAssettypeEin hochgeladenes Asset: name, url, sha256 und strukturiertes platform.
ParsedPlatformtypeStrukturierte Plattforminfo: raw, os, arch, vendor, abi, variant.
PreparedAssettypeAsset nach Komprimierung und Hashing, bereit für den Upload.
TransformedAssettypeAsset nach dem transformAsset-Hook, vor der Komprimierung.
CompressedAssettypeAsset nach dem compressAsset-Schritt, vor der Benennung.
UploadedAssettypeAsset nach dem Upload mit url und target.
ResolvedAssettypeAsset nach dem Glob-Matching mit geparsten Plattforminformationen.
import { defineConfig, type PubmPlugin } from "@pubm/core";
const plugin: PubmPlugin = {
name: "announce",
hooks: {
afterPublish(ctx) {
console.log("published", ctx.version);
},
},
};
export default defineConfig({
plugins: [plugin],
});

Diese Exporte treiben die Release-Asset-Pipeline an und sind für Plugin-Autoren und eigenes Tooling nuetzlich.

ExportArtZweck
parsePlatformfunctionAnalysiert OS, Architektur, ABI, Variante und Vendor aus einem Pfadsegment-String anhand der eingebauten Tabellen.
runAssetPipelinefunctionFuehrt die komplette Asset-Pipeline (resolve, transform, compress, name, hash, checksums) für eine aufgeloeste Config und ein Hook-Set aus.
import { parsePlatform, runAssetPipeline } from "@pubm/core";
// Einen Pfadsegment- oder Capture-String parsen
const platform = parsePlatform("darwin-arm64");
// { raw: "darwin-arm64", os: "darwin", arch: "arm64" }
const platform2 = parsePlatform("x86_64-unknown-linux-gnu");
// { raw: "x86_64-unknown-linux-gnu", os: "linux", arch: "x64", vendor: "unknown", abi: "gnu" }

Asset-Pipeline-Typen:

import type {
ParsedPlatform,
ReleaseContext,
ReleaseAsset,
ResolvedAsset,
TransformedAsset,
CompressedAsset,
PreparedAsset,
UploadedAsset,
} from "@pubm/core";

Siehe Release Assets und Asset Pipeline Hooks für die Anwendungsleitfaeden.

Die Changeset-Exports helfen dir, eigenes Tooling rund um .pubm/changesets zu bauen.

ExportArtZweck
readChangesets / parseChangesetfunctions.pubm/changesets/*.md lesen und parsen.
getStatusfunctionAusstehende Changesets pro Paket zusammenfassen.
discoverCurrentVersions / discoverPackageInfosfunctionsAktuelle Paketnamen und -versionen aus dem Workspace lesen.
calculateVersionBumpsfunctionNaechste Versionen aus aktuellen Versionen plus ausstehenden Changesets berechnen.
generateChangesetId / generateChangesetContent / writeChangesetfunctionsNeue Changeset-Dateien erzeugen.
buildChangelogEntries / generateChangelog / writeChangelogToFilefunctionsChangelog-Ausgabe aus Changesets erzeugen.
migrateFromChangesetsfunctionAlte .changeset/-Daten nach .pubm/ kopieren.
deleteChangesetFilesfunctionVerbrauchte Changeset-Dateien entfernen.
parseChangelogSectionfunctionEinen Changelog-Abschnitt wieder in strukturierte Daten parsen.

Wichtige zugehörige Typen:

TypZweck
ChangesetGeparste .md-Datei mit id, summary und Paket-Release-Eintraegen.
ReleaseEin Paket-Sprung-Eintrag innerhalb eines Changesets.
BumpType"patch" | "minor" | "major".
Status / PackageStatusAggregierter ausstehender Status aus getStatus().
VersionBumpErgebnis der Versionsplanung aus calculateVersionBumps().
ChangelogEntry / DependencyUpdateEingaben für das Rendern des Changelogs.
PackageVersionInfoPaketname, Version und Pfad, die von Discovery-Helfern zurückgegeben werden.
MigrationResultErgebnisobjekt von migrateFromChangesets().
import {
calculateVersionBumps,
discoverCurrentVersions,
getStatus,
} from "@pubm/core";
const currentVersions = await discoverCurrentVersions(process.cwd());
const status = getStatus(process.cwd());
const nextVersions = calculateVersionBumps(currentVersions, process.cwd());

Diese Exporte sind nuetzlich, wenn du dieselbe Workspace-Erkennung brauchst, die pubm intern verwendet.

ExportArtZweck
detectWorkspacefunctionErkennt pnpm-, npm-, Yarn-, Bun-, Cargo- oder Deno-Workspaces aus Repository-Dateien.
discoverPackagesfunctionFindet publishbare Pakete automatisch und leitet Registries/Ecosystems ab.
buildDependencyGraphfunctionBaut einen internen Abhängigkeitsgraphen aus Paketmetadaten.
topologicalSortfunctionSortiert Graphknoten so, dass Abhängigkeiten zuerst kommen.
resolveGroupsfunctionLoest fixed/linked-Gruppen gegen eine gefundene Paketliste auf.
applyFixedGroup / applyLinkedGroupfunctionsWendet Gruppensemantik auf die Versionsplanung an.
GitclassSchlanke Huelle um Git-Befehle, die für Release-Automatisierung genutzt werden.

Wichtige zugehörige Typen:

TypZweck
WorkspaceInfoWorkspace-Typ plus Include-/Exclude-Muster.
DiscoverOptionsEingabe für discoverPackages().
DiscoveredPackageAutomatisch erkanntes Paket mit Pfad, Registries und Ecosystem.
PackageNodeEingabeknoten für den Aufbau des Abhängigkeitsgraphen.
import {
buildDependencyGraph,
discoverPackages,
topologicalSort,
} from "@pubm/core";
const discovered = await discoverPackages({ cwd: process.cwd() });
const graph = buildDependencyGraph([
{
name: "@acme/core",
version: "1.0.0",
path: "packages/core",
dependencies: { "@acme/utils": "^1.0.0" },
},
{
name: "@acme/utils",
version: "1.0.0",
path: "packages/utils",
dependencies: {},
},
]);
const ordered = topologicalSort(graph);

Das Paket-Root exportiert außerdem die folgenden Helfer für Tooling-Integrationen.

ExportArtZweck
validateEntryPointsfunctionPrüft main, module, types, exports und bin-Pfade in einem Paket-Manifest.
detectExtraneousFilesfunctionMarkiert Dateien, die normalerweise nicht in Publish-Artefakten landen sollten.
getPackageJsonfunctionLiest das nächste package.json, optional mit jsr.json-Fallback.
replaceVersion / replaceVersionAtPathfunctionsSchreibt Paketversionen in Manifests um.
versionfunctionLiest die aktuelle Paketversion aus package.json, jsr.json oder deno.json / deno.jsonc.
generateSnapshotVersionfunctionBaut Snapshot-Versionen aus base, tag, timestamp und optional commit.
loadTokensFromDbfunctionLaedt gespeicherte Registry-Tokens und beachtet passende Umgebungsvariablen.
syncGhSecretsfunctionSchiebt Registry-Tokens über gh secret set in GitHub Secrets.
execfunctionStartet einen Subprozess und faengt stdout/stderr ab.
getPackageManagerfunctionErkennt den Workspace-Paketmanager anhand der Lockfiles.
detectRuntime / isBunfunctionsErkennt die aktuelle Runtime.
notifyNewVersionfunctionPrüft, ob es eine neuere veröffentlichte pubm-Version gibt, und gibt ein Update-Banner aus.
consoleErrorfunctionFormatiert und gibt pubm-Fehler aus.
PUBM_VERSION / PUBM_ENGINESconstantsPaketmetadaten, die zur Laufzeit verfügbar sind.

Wichtige zugehörige Typen:

TypZweck
EntryPointErrorEintrag für Validierungsergebnisse bei defekten Manifest-Pfaden.
ExtraneousFileEintrag für Validierungsergebnisse bei Dateien, die nicht veröffentlicht werden sollten.
SnapshotOptionsEingabe für generateSnapshotVersion().
Runtime"node" | "bun".
import {
generateSnapshotVersion,
loadTokensFromDb,
validateEntryPoints,
} from "@pubm/core";
const nextSnapshot = generateSnapshotVersion({
baseVersion: "1.4.0",
tag: "snapshot",
commit: "abc1234",
template: "{base}-{tag}-{timestamp}-{commit}",
});
const entryPointErrors = validateEntryPoints(
{
main: "./dist/index.js",
types: "./dist/index.d.ts",
},
process.cwd(),
);
const tokens = loadTokensFromDb(["npm", "jsr"]);

Diese Seite dokumentiert die stabile Oberflaeche, die heute aus dem Paket-Root exportiert wird. Interne Dateien unter packages/core/src/** koennen vorhanden sein, aber wenn sie nicht aus @pubm/core erneut exportiert werden, solltest du sie als private Implementierungsdetails behandeln.