Detalhes do pacote

xrelease

matsilva337MIT0.4.0

xrelease (pronounced cross-release) helps you setup automated releases for your project for any language

release, cross-language, polyglot, release-automation

readme (leia-me)

xrelease — Unified Release Automation for Any Project

CI Release: Automated with xrelease

xrelease provides a consistent, automated release process across all programming languages and frameworks. Create versioned releases with changelogs and Git tags using the same workflow everywhere, regardless of whether you're working with Python, Go, Scala, Node, Swift, or any other language.

About

xrelease solves the challenge of maintaining different release workflows for each language or framework. It offers a standardized approach that works universally across your projects.

  • One consistent workflow for all projects
  • Automated versioning, changelogs, and git tags
  • Zero-config operation with full customization options

Features

  • Language agnostic: Works with any language (Python, Go, Scala, Node, Swift, etc.)
  • Automated essentials: Handles versioning, changelogs, git tags automatically
  • Consistency: Same workflow everywhere - learn once, use everywhere
  • Zero-config: Works out-of-the-box with sensible defaults
  • Fully extensible: Customize with hooks and plugins when needed
  • CI/CD integration: Seamlessly integrates with GitHub Actions and other CI systems

Quick Start

  1. Install xrelease
npm install -g xrelease
  1. Initialize in your project
xrelease init
  1. Create a release
xrelease create

Your project now has an updated version, changelog, and git tag!

Common Commands

xrelease init          # Setup xrelease for your project
xrelease create        # Create a release - defaults to patch
xrelease create -M     # Major release
xrelease create -m     # Minor release
xrelease create -p     # Patch release

CLI Options

xrelease init

Sets up automated releases for your project.

-y, --yes              # Skip prompts and use defaults
-l, --language <type>  # Project language (node, go)

xrelease create

Creates a new release, using the .xrelease.yml config steps created in xrelease init

-M, --major           # Create major release
-m, --minor           # Create minor release
-p, --patch           # Create patch release
--bump <type>         # Specify version bump (major, minor, patch)
--branch <name>       # Branch to create release from
--config <path>       # Path to config file

xrelease add

Add specific components to your release config

workflow   # Add GitHub Actions workflow
changelog  # Add changelog configuration
hooks      # Add Git hooks configuration

Why xrelease?

Problem xrelease Solution
Different release processes for each language One consistent workflow
Manual version tracking and changelog updates Fully automated releases
Complex CI/CD setup for release management One-command CI integration
No standardization across project repos Same release pattern everywhere

Documentation

FAQ

Why does xrelease use package.json for all projects? xrelease uses package.json as the single source of truth for versioning in ALL projects, regardless of language. This provides one consistent way to handle versioning, proven and battle-tested version bumping mechanisms, compatibility with existing tools and CI systems, and minimal configuration (just version, marked as private). Learn more about why package.json.

How does xrelease compare to semantic-release? While semantic-release is a powerful tool that supports multiple languages through plugins, xrelease takes a "batteries included" approach that works out-of-the-box with minimal setup. semantic-release offers extensive customization but requires significant configuration through plugins for most use cases. In contrast, xrelease focuses on providing a simple, ready-to-use release workflow for any language with sensible defaults. If you need a highly customizable release pipeline and don't mind the configuration overhead, semantic-release is excellent. However, if you want to get automated releases working quickly across different projects and languages without wrestling with complex setup, xrelease provides a more straightforward path with its simplified, consistent approach.

Does xrelease work with my CI/CD system? Yes! xrelease is designed to integrate with GitHub Actions, CircleCI, Jenkins, and other CI systems. See our CI/CD Integration guide for details.

Can I customize the release process? Absolutely. While xrelease works without configuration, you can fully customize the release process through the .xrelease.yml configuration file. See our Configuration Guide.

I'm a Scala dev - why use a Node-based tool? Yes, it's built with Node.js, not "sleek, performant Scala with higher-order functions". But like sbt or mill, it's just a build tool - it won't touch your production code. Promise!... maybe

License

MIT

** Terms and conditions may apply, see ymmv

changelog (log de mudanças)

Changelog

[0.4.0] - 2025-04-04

  • feat: add pre and post release steps to the create command (#2)
  • chore: release v0.3.5

[0.3.5] - 2025-04-04

  • chore: rewrite readme
  • chore: remove ds store
  • chore: release v0.3.4

[0.3.4] - 2025-03-12

  • chore: add npm install to node template
  • chore: update author
  • refactor: remove husky prepare script modification
  • fix: install husky as dev dep
  • chore: add -y flag to xrelease command in release workflows
  • chore: update release configuration template
  • chore: add prepublish cmd
  • chore: release v0.3.3

[0.3.3] - 2025-03-09

  • chore: add test for mod path without version
  • fix: update version file
  • chore: update publish cmd
  • chore: release v0.3.2

[0.3.2] - 2025-03-09

  • chore: remove automated patch release
  • chore: add automated patch releases
  • chore: release v0.3.1

[0.3.1] - 2025-03-09

  • fix: upload artifacts
  • chore: add asset publishing examples
  • fix: add default esm module
  • chore: add comments on go template version
  • fix: go mod version
  • fix: use go mod version if its available for package version
  • fix: add node_modules to gitignore
  • chore: release v0.3.0

[0.3.0] - 2025-03-09

  • feat: add support for custom installation directory
  • chore: package json creation order
  • chore: release v0.2.4

[0.2.4] - 2025-03-09

  • refactor: improve template setup status updates
  • docs: update cli tldr with brief descriptions
  • chore: release v0.2.3

[0.2.3] - 2025-03-09

  • fix: copy templates to dist
  • chore: release v0.2.2

[0.2.2] - 2025-03-09

  • chore: fix pkg version
  • chore: add publish cmd
  • chore: release v0.2.1

[0.2.1] - 2025-03-09

  • chore: update usage docs again
  • chore: fix package json git
  • chore: release v0.2.0

[0.2.0] - 2025-03-09

  • chore: remove cruft
  • chore: remove dup
  • chore: update readme
  • docs: update usage
  • refactor: simplify release command and changelog template handling
  • refactor: simplify release command and remove --ci flag
  • refactor: template files
  • docs: add legal and more blurbs
  • chore: remove unused type
  • fix: update GitHub Actions release workflows
  • chore: release v0.1.5

[0.1.5] - 2025-03-08

  • chore: add npm install
  • chore: update GitHub Actions workflow with build and dependency steps
  • chore: release v0.1.4

[0.1.4] - 2025-03-08

  • feat: add commit-push action to release workflow
  • feat: add commit and tag actions for release workflow

[0.1.3] - 2025-03-08

  • chore: remove standard-version and update project scripts
  • feat: add GitHub CLI release support with asset attachment

[0.1.2] - 2025-03-08

  • feat(init): support custom config file path and test environment config

[0.1.1] - 2025-03-08

  • refactor: update .xrelease.yml for Node.js project configuration
  • feat: enhance initialization with language-specific release templates
  • feat: add create command for release management
  • chore: dogfood xrelease
  • chore: Update Husky and Commitlint configuration
  • chore: Add build:link script for local development
  • chore: Disable default pre-commit hook configuration
  • feat: Add multi-language support for project initialization
  • feat: Enhance release workflow with xrelease and manual version bumping
  • docs: Update config and ci docs
  • docs: make docs terse
  • docs: update xrelease purpose
  • chore: remove unused script
  • chore: rename to xrelease
  • fix: incorrect bin path
  • chore: remove redundant ora types
  • feat: enhance git hooks setup with improved detection and configuration
  • docs: add comprehensive README with quickstart guide and project overview
  • chore: update test mocking and error handling in add and init command tests
  • chore: check in current wip
  • Initial commit