Ir al contenido

Referencia del Core SDK

@pubm/core es la API programática detrás del CLI pubm. Esta página cubre los identificadores públicos exportados desde la raíz del paquete:

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

El paquete incluye declaraciones de tipos y entradas ESM/CJS. Los metadatos actuales del paquete declaran node >= 24.

Ventana de terminal
npm install @pubm/core
pnpm add @pubm/core
bun add @pubm/core

Ejecuta el mismo pipeline de release que usa el CLI.

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

pubm() acepta un objeto Options. Los campos más importantes son:

CampoTipoPropósito
versionstringObjetivo de release requerido, como patch, minor, major o un semver explícito.
dryRunbooleanMuestra el plan de tareas sin mutar el estado de Git ni publicar.
mode"local" | "ci"Modo de ejecución: local (interactivo) o ci (no interactivo, basado en tags).
preparebooleanEjecuta solo la fase de preparación (validación y comprobaciones dry-run de publicación).
publishbooleanEjecuta solo la fase de publicación (publica desde el último tag).
releaseDraftbooleanCrea un GitHub Release en borrador en lugar de uno publicado.
branchstringExige un branch concreto antes de publicar.
anyBranchbooleanDesactiva la comprobación de branch durante una ejecución.
tagstringPublica bajo un dist-tag como latest, next o beta.
packagesPackageConfig[]Sobrescribe los paquetes detectados automáticamente.

Para releases guiadas por configuración, pubm() carga automáticamente pubm.config.*, resuelve el descubrimiento de paquetes y conecta los plugins antes de ejecutar el grafo de tareas.

Estos ayudantes son los puntos de entrada principales para código que quiere leer o validar pubm.config.*.

ExportaciónTipoPropósito
defineConfigfunctionAyudante tipado para escribir pubm.config.ts.
loadConfigfunctionCarga pubm.config.* desde disco y devuelve PubmConfig | null.
resolveConfigfunctionAplica valores por defecto, detecta paquetes automáticamente y normaliza registries privados.
PubmConfigtypeForma de la configuración escrita por el usuario.
ResolvedPubmConfigtypeConfiguración completamente resuelta devuelta por resolveConfig().
PackageConfigtypeEntrada de configuración por paquete usada por el descubrimiento y la planificación de publicación.
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 es el lugar para sobrescribir registries por paquete, ecosistema, comando de build o comando de test:

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

Usa las exportaciones de plugins cuando quieras extender el pipeline de publicación con registries personalizados, ecosistemas, hooks de ciclo de vida o comandos de CLI.

ExportaciónTipoPropósito
PubmPlugintypeContrato principal de plugin.
PluginHookstypeHooks de ciclo de vida como beforeBuild, afterPublish, onError, afterRelease y los hooks del asset pipeline.
HookFn / ErrorHookFn / AfterReleaseHookFntypeFirmas de hooks.
PluginCommand / PluginSubcommand / PluginCommandOptiontypeModelo de comandos CLI personalizados para plugins.
PluginRunnerclassUtilidad que ejecuta hooks y recopila registries/ecosystems de los plugins cargados. También expone collectCredentials() y collectChecks() para reunir descriptores de credenciales y checks de preflight de todos los plugins registrados.
PluginCredentialtypeDescriptor declarativo de un token o secret requerido por un plugin. Consulta la Referencia de la API de plugins.
PluginChecktypeDescriptor de un check de preflight aportado por un plugin. Consulta la Referencia de la API de plugins.
PluginTaskContexttypeWrapper agnóstico de listr2 que se pasa a PluginCheck.task. Expone output, title y prompt().
GhSecretEntrytypeUna entrada devuelta por los helpers de sincronización de GitHub Secrets: { secretName: string; token: string }.
collectPluginCredentialsfunctionReúne PluginCredential[] de todos los plugins registrados en la config y resuelve sus valores.
injectPluginTokensToEnvfunctionEscribe los valores de tokens de plugin resueltos en process.env para que los pasos posteriores de publish puedan leerlos como variables de entorno normales.
ReleaseContexttypeMetadatos de release pasados a los hooks afterRelease. Incluye packageName, version, tag, releaseUrl y assets.
ReleaseAssettypeUn asset subido: name, url, sha256 y platform estructurada.
ParsedPlatformtypeInformación estructurada de plataforma: raw, os, arch, vendor, abi, variant.
PreparedAssettypeAsset después de la compresión y el hash, listo para subir.
TransformedAssettypeAsset después del hook transformAsset, antes de la compresión.
CompressedAssettypeAsset después del paso compressAsset, antes de nombrarlo.
UploadedAssettypeAsset después de subirlo con url y target.
ResolvedAssettypeAsset después del glob matching con información de plataforma analizada.
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],
});

Estas exportaciones dan soporte al asset pipeline de releases y son útiles para autores de plugins y tooling personalizado.

ExportaciónTipoPropósito
parsePlatformfunctionAnaliza OS, arch, ABI, variant y vendor a partir de una cadena de segmento de ruta usando las tablas integradas.
runAssetPipelinefunctionEjecuta el asset pipeline completo (resolve, transform, compress, name, hash, checksums) a partir de una configuración resuelta y un conjunto de hooks.
import { parsePlatform, runAssetPipeline } from "@pubm/core";
// Analiza un segmento de ruta o una cadena capturada
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" }

Tipos del asset pipeline:

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

Consulta Release Assets y Asset Pipeline Hooks para guías de uso.

Las exportaciones de changesets te permiten construir tooling personalizado alrededor de .pubm/changesets.

ExportaciónTipoPropósito
readChangesets / parseChangesetfunctionsLee y analiza .pubm/changesets/*.md.
getStatusfunctionAgrega los changesets pendientes por paquete.
discoverCurrentVersions / discoverPackageInfosfunctionsLee nombres y versiones actuales de los paquetes desde el workspace.
calculateVersionBumpsfunctionCalcula las siguientes versiones a partir de las versiones actuales y los changesets pendientes.
generateChangesetId / generateChangesetContent / writeChangesetfunctionsCrea nuevos archivos de changeset.
buildChangelogEntries / generateChangelog / writeChangelogToFilefunctionsGenera la salida del changelog a partir de changesets.
migrateFromChangesetsfunctionCopia datos heredados de .changeset/ a .pubm/.
deleteChangesetFilesfunctionElimina archivos de changeset ya consumidos.
parseChangelogSectionfunctionConvierte una sección de changelog de vuelta en datos estructurados.

Tipos relacionados importantes:

TipoPropósito
ChangesetArchivo .md analizado con id, summary y releases de paquetes.
ReleaseUna entrada de bump de paquete dentro de un changeset.
BumpType"patch" | "minor" | "major".
Status / PackageStatusEstado pendiente agregado devuelto por getStatus().
VersionBumpResultado de planificación de versión de calculateVersionBumps().
ChangelogEntry / DependencyUpdateEntradas de renderizado del changelog.
PackageVersionInfoNombre, versión y ruta del paquete devueltos por los helpers de descubrimiento.
MigrationResultObjeto resultado devuelto por 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());

Estas exportaciones son útiles cuando necesitas la misma lógica de descubrimiento de workspace que pubm usa internamente.

ExportaciónTipoPropósito
detectWorkspacefunctionDetecta workspaces de pnpm, npm, Yarn, Bun, Cargo o Deno a partir de archivos del repositorio.
discoverPackagesfunctionDetecta automáticamente paquetes publicables e infiere registries/ecosystems.
buildDependencyGraphfunctionConstruye un grafo interno de dependencias a partir de metadatos de paquetes.
topologicalSortfunctionOrdena los nodos del grafo para que las dependencias vayan primero.
resolveGroupsfunctionResuelve grupos fixed/linked frente a una lista de paquetes descubierta.
applyFixedGroup / applyLinkedGroupfunctionsAplica la semántica de grupos a la planificación de versiones.
GitclassWrapper ligero sobre comandos Git usado por la automatización de releases.

Tipos relacionados importantes:

TipoPropósito
WorkspaceInfoTipo de workspace más patrones include/exclude.
DiscoverOptionsEntrada para discoverPackages().
DiscoveredPackageRuta de paquete detectada automáticamente, registries y ecosistema.
PackageNodeNodo de entrada usado para construir el grafo de dependencias.
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 raíz del paquete también exporta los siguientes ayudantes para integraciones de tooling.

ExportaciónTipoPropósito
validateEntryPointsfunctionComprueba las rutas main, module, types, exports y bin en un manifest de paquete.
detectExtraneousFilesfunctionMarca archivos que normalmente deberían quedarse fuera de los artefactos publicados.
getPackageJsonfunctionLee el package.json más cercano, con fallback opcional a jsr.json.
replaceVersion / replaceVersionAtPathfunctionsReescriben versiones de paquetes en los manifests.
versionfunctionLee la versión actual del paquete desde package.json, jsr.json o deno.json / deno.jsonc.
generateSnapshotVersionfunctionConstruye versiones snapshot a partir de base, tag, timestamp y commit opcional.
loadTokensFromDbfunctionCarga tokens de registry guardados y también respeta las env vars coincidentes.
syncGhSecretsfunctionSube tokens de registry a GitHub Secrets mediante gh secret set.
execfunctionLanza un subproceso y captura stdout/stderr.
getPackageManagerfunctionDetecta el package manager del workspace a partir de lockfiles.
detectRuntime / isBunfunctionsDetectan el runtime actual.
notifyNewVersionfunctionComprueba si existe una versión más nueva de pubm publicada e imprime un banner de actualización.
consoleErrorfunctionFormatea e imprime errores de pubm.
PUBM_VERSION / PUBM_ENGINESconstantsMetadatos del paquete expuestos en runtime.

Tipos relacionados importantes:

TipoPropósito
EntryPointErrorEntrada del resultado de validación para rutas rotas del manifest.
ExtraneousFileEntrada del resultado de validación para archivos que no deberían publicarse.
SnapshotOptionsEntrada para 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"]);

Esta página documenta la superficie estable que hoy se exporta desde la raíz del paquete. Los archivos internos bajo packages/core/src/** pueden existir, pero si no se reexportan desde @pubm/core, deben tratarse como detalles privados de implementación.