Aller au contenu

Référence du SDK principal

@pubm/core est l’API programmatique derrière la CLI pubm. Cette page couvre les identifiants publics exportés depuis la racine du package :

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

Le package fournit les déclarations de types ainsi que les points d’entrée ESM/CJS. Les métadonnées actuelles du package déclarent node >= 24.

Fenêtre de terminal
npm install @pubm/core
pnpm add @pubm/core
bun add @pubm/core

Exécute le même pipeline de release que celui qui alimente la CLI.

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

pubm() accepte un objet Options. Les champs les plus importants sont :

ChampTypeRôle
versionstringCible de release requise, comme patch, minor, major ou une version semver explicite.
dryRunbooleanAfficher le plan des tâches sans modifier l’état Git ni publier.
mode"local" | "ci"Mode d’exécution : local (interactif) ou ci (non interactif, basé sur les tags).
preparebooleanExécuter uniquement la phase de préparation (validation et vérifications dry-run de publication).
publishbooleanExécuter uniquement la phase de publication (publication depuis le dernier tag).
releaseDraftbooleanCréer un draft GitHub Release au lieu d’une release publiée.
branchstringExiger une branche précise avant de publier.
anyBranchbooleanDésactiver l’exigence de branche pour une exécution.
tagstringPublier sous un dist-tag comme latest, next ou beta.
packagesPackageConfig[]Remplacer les packages découverts automatiquement.

Pour les releases pilotées par la configuration, pubm() charge automatiquement pubm.config.*, résout la découverte des packages et branche les plugins avant d’exécuter le graphe de tâches.

Ces aides sont les principaux points d’entrée pour le code qui veut lire ou valider pubm.config.*.

ExportNatureRôle
defineConfigfunctionAide typée pour écrire pubm.config.ts.
loadConfigfunctionCharger pubm.config.* depuis le disque et renvoyer PubmConfig | null.
resolveConfigfunctionAppliquer les défauts, découvrir automatiquement les packages et normaliser les registries privés.
PubmConfigtypeForme de configuration écrite par l’utilisateur.
ResolvedPubmConfigtypeConfiguration entièrement résolue renvoyée par resolveConfig().
PackageConfigtypeEntrée de config par package utilisée par la découverte et la planification de publication.
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 sert à surcharger les registries, l’écosystème, la commande de build ou la commande de test par package :

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

Utilisez les exports de plugins lorsque vous voulez étendre le pipeline de publication avec des registries personnalisés, des écosystèmes, des hooks de cycle de vie ou des commandes CLI.

ExportNatureRôle
PubmPlugintypeContrat principal d’un plugin.
PluginHookstypeHooks de cycle de vie comme beforeBuild, afterPublish, onError, afterRelease et les hooks du pipeline d’artefacts.
HookFn / ErrorHookFn / AfterReleaseHookFntypeSignatures de hooks.
PluginCommand / PluginSubcommand / PluginCommandOptiontypeModèle de commande CLI personnalisée pour les plugins.
PluginRunnerclassUtilitaire qui exécute les hooks et collecte les registries/écosystèmes des plugins chargés. Il expose aussi collectCredentials() et collectChecks() pour rassembler les descripteurs de credentials et les checks de preflight de tous les plugins enregistrés.
PluginCredentialtypeDescripteur déclaratif d’un token ou secret requis par un plugin. Voir la Référence de l’API des plugins.
PluginChecktypeDescripteur d’un check de preflight apporté par un plugin. Voir la Référence de l’API des plugins.
PluginTaskContexttypeWrapper agnostique à listr2 passé à PluginCheck.task. Expose output, title et prompt().
GhSecretEntrytypeUne entrée renvoyée par les helpers de synchro GitHub Secrets : { secretName: string; token: string }.
collectPluginCredentialsfunctionRassemble PluginCredential[] depuis tous les plugins enregistrés dans la config et résout leurs valeurs.
injectPluginTokensToEnvfunctionÉcrit les valeurs de tokens de plugin résolues dans process.env pour que les étapes de publish suivantes puissent les lire comme des variables d’environnement classiques.
ReleaseContexttypeMétadonnées de release transmises aux hooks afterRelease. Inclut packageName, version, tag, releaseUrl et assets.
ReleaseAssettypeUn artefact uploadé : name, url, sha256 et platform structuré.
ParsedPlatformtypeInformations de plateforme structurées : raw, os, arch, vendor, abi, variant.
PreparedAssettypeArtefact après compression et hachage, prêt à être uploadé.
TransformedAssettypeArtefact après le hook transformAsset, avant la compression.
CompressedAssettypeArtefact après l’étape compressAsset, avant le nommage.
UploadedAssettypeArtefact après upload avec url et target.
ResolvedAssettypeArtefact après la correspondance glob avec les informations de plateforme analysées.
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],
});

Ces exports alimentent le pipeline d’artefacts de release et sont utiles aux auteurs de plugins et aux outils personnalisés.

ExportNatureRôle
parsePlatformfunctionAnalyser l’OS, l’architecture, l’ABI, la variante et le vendor depuis une chaîne de segment de chemin à l’aide des tables intégrées.
runAssetPipelinefunctionExécuter tout le pipeline d’artefacts (resolve, transform, compress, name, hash, checksums) à partir d’une config résolue et d’un ensemble de hooks.
import { parsePlatform, runAssetPipeline } from "@pubm/core";
// Analyser un segment de chemin ou une chaîne capturée
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" }

Types du pipeline d’artefacts :

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

Voir Artefacts de release et Hooks du pipeline d’artefacts pour les guides d’utilisation.

Les exports liés aux changesets vous permettent de construire des outils personnalisés autour de .pubm/changesets.

ExportNatureRôle
readChangesets / parseChangesetfunctionsLire et parser .pubm/changesets/*.md.
getStatusfunctionRegrouper les changesets en attente par package.
discoverCurrentVersions / discoverPackageInfosfunctionsLire les noms et versions actuels des packages depuis le workspace.
calculateVersionBumpsfunctionCalculer les prochaines versions à partir des versions courantes et des changesets en attente.
generateChangesetId / generateChangesetContent / writeChangesetfunctionsCréer de nouveaux fichiers changeset.
buildChangelogEntries / generateChangelog / writeChangelogToFilefunctionsConstruire la sortie du changelog à partir des changesets.
migrateFromChangesetsfunctionCopier les données héritées de .changeset/ dans .pubm/.
deleteChangesetFilesfunctionSupprimer les fichiers changeset consommés.
parseChangelogSectionfunctionReparser une section de changelog en données structurées.

Types liés importants :

TypeRôle
ChangesetFichier .md parsé avec id, summary et les releases de package.
ReleaseUne entrée de bump de package dans un changeset.
BumpType"patch" | "minor" | "major".
Status / PackageStatusÉtat agrégé en attente renvoyé par getStatus().
VersionBumpRésultat de planification de version renvoyé par calculateVersionBumps().
ChangelogEntry / DependencyUpdateEntrées de rendu du changelog.
PackageVersionInfoNom du package, version et chemin renvoyés par les aides de découverte.
MigrationResultObjet résultat renvoyé par 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());

Ces exports sont utiles lorsque vous avez besoin de la même logique de découverte de workspace que celle utilisée en interne par pubm.

ExportNatureRôle
detectWorkspacefunctionDétecter les workspaces pnpm, npm, Yarn, Bun, Cargo ou Deno à partir des fichiers du dépôt.
discoverPackagesfunctionDécouvrir automatiquement les packages publiables et inférer les registries/écosystèmes.
buildDependencyGraphfunctionConstruire un graphe de dépendances interne à partir des métadonnées de package.
topologicalSortfunctionTrier les nœuds du graphe pour que les dépendances viennent d’abord.
resolveGroupsfunctionRésoudre les groupes fixed/linked à partir d’une liste de packages découverts.
applyFixedGroup / applyLinkedGroupfunctionsAppliquer la sémantique de groupe à la planification de version.
GitclassFine enveloppe autour des commandes Git utilisées par l’automatisation de release.

Types liés importants :

TypeRôle
WorkspaceInfoType de workspace plus patterns d’inclusion/exclusion.
DiscoverOptionsEntrée pour discoverPackages().
DiscoveredPackageChemin de package, registries et écosystème détectés automatiquement.
PackageNodeNœud d’entrée utilisé pour construire le graphe de dépendances.
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);

La racine du package exporte aussi les aides ci-dessous pour les intégrations d’outils.

ExportNatureRôle
validateEntryPointsfunctionVérifier les chemins main, module, types, exports et bin dans un manifest de package.
detectExtraneousFilesfunctionSignaler les fichiers qui devraient généralement rester hors des artefacts de publication.
getPackageJsonfunctionLire le package.json le plus proche, avec fallback optionnel vers jsr.json.
replaceVersion / replaceVersionAtPathfunctionsRéécrire les versions de package dans les manifests.
versionfunctionLire la version actuelle du package depuis package.json, jsr.json ou deno.json / deno.jsonc.
generateSnapshotVersionfunctionConstruire des versions snapshot à partir de base, tag, timestamp et d’un commit optionnel.
loadTokensFromDbfunctionCharger les tokens de registry stockés, en respectant aussi les variables d’environnement correspondantes.
syncGhSecretsfunctionPousser les tokens de registry dans GitHub Secrets via gh secret set.
execfunctionLancer un sous-processus et capturer stdout/stderr.
getPackageManagerfunctionDétecter le gestionnaire de paquets du workspace à partir des lockfiles.
detectRuntime / isBunfunctionsDétecter le runtime courant.
notifyNewVersionfunctionVérifier s’il existe une version pubm plus récente et afficher une bannière de mise à jour.
consoleErrorfunctionFormater et afficher les erreurs pubm.
PUBM_VERSION / PUBM_ENGINESconstantsMétadonnées du package exposées au runtime.

Types liés importants :

TypeRôle
EntryPointErrorEntrée de résultat de validation pour des chemins de manifest cassés.
ExtraneousFileEntrée de résultat de validation pour des fichiers qui ne devraient pas être publiés.
SnapshotOptionsEntrée pour 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"]);

Cette page documente la surface stable exportée aujourd’hui depuis la racine du package. Les fichiers internes sous packages/core/src/** peuvent exister, mais s’ils ne sont pas re-exportés depuis @pubm/core, ils doivent être considérés comme des détails d’implémentation privés.