Releases: zamdevio/expgov
Release list
v1.0.0
expgov v1.0.0
First stable release of export-governance for TypeScript SDK barrels — inventory, diff, validate, trend, timeline, and graph. Read-only by default except init.
Docs: https://expgov.pages.dev
Install
# CLI (devDependency — command is still `expgov`)
pnpm add -D @expgov/cli
# SDK only — programmatic runExports* APIs
pnpm add -D @expgov/coreexpgov init
expgov validate
expgov inventorynpm packages (both 1.0.0)
| Package | Role |
|---|---|
@expgov/cli |
expgov binary + @expgov/cli/core config types |
@expgov/core |
SDK engine without the CLI binary |
Config authors:
import { defineConfig, type ExpgovConfig } from '@expgov/cli/core';Why @expgov/cli (not expgov)?
npm rejected the unscoped name expgov as too similar to expo. The CLI publishes under the @expgov org scope; the command name stays expgov.
Details: https://expgov.pages.dev/install
What’s in v1.0.0
- Full CLI:
init,inventory,diff,validate,doctor,suggest,trend,timeline,graph,version,help - Tier governance —
@sdkTierJSDoc + nestedtiers.*config buckets - tsconfig
paths↔ npmexportsparity checks - Per-SHA cache (
.expgov/cache/) with worktree freshness gate - Stable
--jsonenvelopes for CI - VitePress docs site at expgov.pages.dev
- Example SDK fixture in
examples/sdk/
Fixes since 0.0.1
expgov version --checkqueries@expgov/clion the npm registry (not unscopedexpgov)- Update install hints use
pnpm add -g @expgov/cli@latest expgov initscaffoldsimport from '@expgov/cli/core'
v1 contract
- Stable: CLI argv,
--jsonenvelope shape, exit codes - Additive minors OK: new commands, flags, and
@expgov/coreexports - Major bump required for breaking CLI or SDK contract changes
Backlog items (graph filters, multibarrel, fix, issues) are planned as additive layers on top of this surface.
Publish (maintainer)
cd packages/core && pnpm publish --access public # @expgov/core@1.0.0
cd ../.. && pnpm publish --access public # @expgov/cli@1.0.0Links
- Documentation: https://expgov.pages.dev
- CLI on npm: https://www.npmjs.com/package/@expgov/cli
- SDK on npm: https://www.npmjs.com/package/@expgov/core
- Issues: https://github.com/zamdevio/expgov/issues
v0.0.1
expgov v0.0.1 — first public release
Portable export-governance for TypeScript SDK barrels. Inventory public exports, diff between refs, validate tier rules, trend release tags, trace barrel history, and map the export graph — read-only by default except init.
Docs: https://expgov.pages.dev
Install
# CLI (devDependency — binary name is still `expgov`)
pnpm add -D @expgov/cli
# SDK only — programmatic runExports* APIs
pnpm add -D @expgov/coreexpgov init
expgov validate
expgov inventoryCI / scripting:
expgov validate --json --silentnpm packages
| Package | npm | Role |
|---|---|---|
| CLI | @expgov/cli@0.0.1 |
expgov command + @expgov/cli/core config types |
| SDK | @expgov/core@0.0.1 |
runExports* engine without the CLI binary |
The CLI tarball is self-contained (dist/cli.js bundles core at build time). Config authors can use:
import { defineConfig, type ExpgovConfig } from '@expgov/cli/core';SDK consumers import runExportsValidate, runExportsInventory, etc. from @expgov/core — same engines as the CLI, host-neutral, with matching --json envelopes.
Why @expgov/cli and not expgov?
npm rejected the unscoped name expgov as too similar to the existing package expo. That is registry policy, not a permissions issue — owning the @expgov org does not reserve the global unscoped name.
- Install package:
@expgov/cli - Command on PATH:
expgov(unchanged)
Details: https://expgov.pages.dev/install
Commands
| Command | Purpose |
|---|---|
init |
Scaffold expgov.config.ts |
inventory |
Barrel snapshot — counts, tiers, namespaces |
diff |
Compare export surfaces between refs |
validate |
Governance checks (exit 0/1) |
doctor |
Config discovery and cache hygiene |
suggest |
Dry-run tier allowlist hints |
trend |
Export counts across release tags |
timeline |
Git log of barrel edits |
graph |
Export surface graph |
version |
CLI semver + optional npm update check |
help |
Command reference |
Global flags: --json, --quiet, --silent, --cwd, --config, cache overrides.
Highlights
- Tier governance —
@sdkTierJSDoc + nestedtiers.{stable,internal,advanced}config buckets - Parity checks — tsconfig
paths↔ npmexports - Per-SHA cache —
.expgov/cache/with worktree freshness gate - Machine output — stable JSON envelopes for CI
- Thin CLI host — Commander/chalk/inquirer in CLI; domain logic in
@expgov/core - TypeScript-only config —
expgov.config.tsvia jiti (no JSON config) - Docs site — VitePress at expgov.pages.dev
- Example SDK —
examples/sdk/teaching fixture
Requirements
- Node.js ≥ 20
- Git repo with a TypeScript SDK barrel (
index.tsre-exports)
Pre-v1 note
This is the first public release. CLI argv, --json envelope shape, and exit codes are treated as user-facing contracts. Internal APIs may still change before v1.
Links
- Documentation: https://expgov.pages.dev
- CLI on npm: https://www.npmjs.com/package/@expgov/cli
- SDK on npm: https://www.npmjs.com/package/@expgov/core
- Issues: https://github.com/zamdevio/expgov/issues