Skip to main content

Cngpac

A highly configurable package release manager

How It Works

From changenote to published release — every step of the pipeline, visualized.

Setup
initScaffold config & CI
Development
changeAdd changenote
commitCommit & push
Release Prep
previewPreview changelog in browser
prepareCalculate version
CI / Automated
autoversionBump & changelog
autopublishPublish to npm
autoreleaseGitHub Release
optional
reprepareRetry a failed release

Why Cngpac?

Everything you need for professional package releases, nothing you don't.

Plugin Architecture

Compose your release pipeline from modular plugins — publishers, releasers, changelog generators, formatters, and savers.

CLI + Programmatic API

Use the interactive CLI for day-to-day work, or import the core functions as a library to build custom tooling.

GitHub Actions Ready

Auto-generates a CI workflow that triggers versioning when prepare.json lands on main. Zero manual setup.

Prerelease Channels

First-class support for alpha, beta, and RC channels with prepare prerelease. Semantic versioning handled automatically.

Configure Once, Release Forever

A single cngpac.config.ts file defines your entire release pipeline — changelog generation, npm publishing, GitHub releases, or anything else you can imagine.

  • Declarative config with full TypeScript support
  • Composable plugin system — add only what you need
  • Works with npm, pnpm, yarn, and bun
cngpac.config.ts
import {
createChangelogGenerator,
createNpmPublisher,
createGitHubReleaser,
defineConfig,
} from "cngpac";

export default defineConfig({
package: "package.json",
repository: {
owner: "your-org",
name: "your-repo",
},
changelog: {
generator: createChangelogGenerator({
githubToken: process.env.GITHUB_TOKEN!,
}),
},
publishers: [
createNpmPublisher({ provenance: true }),
],
releasers: [
createGitHubReleaser({
token: process.env.GITHUB_TOKEN!,
}),
],
});

Ready to ship?

Set up Cngpac in under a minute and start managing releases like a pro.