- Category
- Developer Tools
- Rank
- No. 834Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- getsentry
- GitHub
- 193 stars
- Latest release
- 2.30.1
- Date
About
Universal release CLI used by Sentry to publish to npm, PyPI, NuGet, crates.io, GCS, and more in one command.
What it does
Craft turns a repository’s release process into a configured sequence. It resolves versions, manages release branches and changelogs, waits for CI, retrieves artifacts, and sends those artifacts to selected destinations. A YAML configuration defines policies, providers, and targets, while preparation and publication remain separate commands.
Why it's ranked here
Craft is compelling when one release must coordinate several ecosystems without duplicating workflow logic. Its strongest case is broader than registry upload: version selection, changelog generation, CI artifact handling, monorepo support, and release controls share one model. That opinionated model also makes adoption a process decision, not merely a command substitution.
What's good
The target coverage spans language registries, container distribution, cloud storage, release pages, and platform-specific channels. Automatic versioning reads conventional commits, while manual and calendar policies remain available. NPM and Yarn workspaces receive dependency-aware ordering and filtering. Dry-run mode suppresses file writes, commits, pushes, and API mutations. Configuration validation reports field-level errors.
Tradeoffs
Craft enforces its own release-branch, changelog, artifact, and publication workflow, so teams with different conventions must adapt their process. Several targets depend on external tools, credentials, repository access, or CI artifacts. Some publishing operations clone repositories or compile projects. Built-in Sentry instrumentation attaches command arguments, working directory, username, hostname, and operating-system details, although it removes server names and shortens home-directory paths in error frames.
How to use it well
Use Craft for repositories that repeatedly ship related artifacts through GitHub and multiple package or storage destinations. Put policy in configuration, prepare releases separately from publication, preview changelogs in pull requests, and test changes with dry runs. It does not replace CI builds, registry credentials, signing tools, or the ecosystem-specific executables some targets require.
Technical notes+
src/index.ts builds the yargs CLI with prepare, publish, targets, config, artifacts, and changelog command modules; it also defaults prompt suppression in CI and exposes dry-run behavior. src/config.ts searches upward for .craft.yml, parses YAML, validates it with CraftProjectConfigSchema, caches results, and gates features through minVersion. src/logger.ts routes logs to stderr so structured stdout remains clean. src/instrument.ts initializes Sentry tracing, records host and invocation metadata, removes server_name, and replaces the home-directory prefix in stack-frame paths. src/utils/env.ts rejects legacy environment-file loading and warns when such files remain. src/utils/gpg.ts pipes private keys directly to GPG rather than writing them to disk. package.json defines the craft and sentry-craft executable aliases, TypeScript build tooling, Vitest tests, and an npm package surface.
Observed
- License
- MIT
- Primary language
- TypeScript
- Installation
- Global npm package @sentry/craft or downloadable binary release
- Interface
- Command-line application with craft and sentry-craft executable aliases
- Configuration
- YAML project configuration validated with a Zod schema
- Automation surface
- GitHub Action for release preparation and reusable workflow for changelog previews
- Release targets
- GitHub, npm, PyPI, Docker, crates.io, NuGet, Homebrew, GCS, GitHub Pages, CocoaPods, RubyGems, Maven Central, Hex, pub.dev, AWS Lambda layers, and PowerShell Gallery
Read from README.md, package.json, src/index.ts, src/config.ts, src/logger.ts, src/instrument.ts, src/utils/env.ts, src/utils/git.ts, src/utils/gpg.ts, src/targets/gcs.ts, src/targets/gem.ts, src/targets/hex.ts, src/targets/npm.ts, src/targets/upm.ts, src/utils/async.ts.
What it can do
Publish packages to npm registry
JavaScript/Node.js package → Published npm package
Publish packages to PyPI registry
Python package → Published PyPI package
Publish packages to NuGet registry
.NET package → Published NuGet package
Publish packages to crates.io registry
Rust crate → Published Rust crate
Upload files to Google Cloud Storage
Files and GCS configuration → Files stored in GCS bucket
Execute multi-platform releases with single command
Release configuration and package files → Packages published across multiple registries
Intel on Craft
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
