Beautiful CLI β’ Zero Dependencies β’ Full Control
Automate your release workflow with an interactive CLI that generates changelogs, manages versions, and creates tagsβall without external dependencies.
Website β’ Quick Start β’ Features β’ CI/CD β’ Commands
# Install globally
npm install -g @grazulex/shipmark
# Initialize configuration
shipmark init
# Check release status
shipmark status
# Create a release (interactive)
shipmark releaseThat's it! ShipMark will guide you through version selection, generate a changelog, create a tag, and push to remote.
|
Guided prompts for version bumping with preview of all changes before execution. Never release blind again. |
Parses Conventional Commits to generate beautiful, organized changelogs. |
|
Full semver support including major, minor, patch, and prerelease versions (alpha, beta, rc). |
Works with native Git only. No GitHub CLI, GitLab CLI, or other tools required. |
|
Non-interactive mode with auto-detection of version bumps based on commit types. Perfect for pipelines. |
Colorful output, spinners, and progress indicators. Release management that feels modern. |
Interactive release workflow with changelog, tag, and push.
shipmark release # Interactive mode
shipmark release --dry-run # Preview without executing
shipmark release --ci auto # CI mode with auto version detection
shipmark release --ci minor # CI mode with specific bump
shipmark release -p beta # Create beta prerelease
shipmark release --skip-push # Don't push to remoteCheck release status before creating a release.
shipmark status # Show pending changes summary
shipmark status -v # Include commit detailsExample output:
π¦ Release Status
ββββββββββββββββββββββββββββββββββββββββββββββββββ
Branch: main
Package version: 1.2.3
Latest tag: v1.2.3
Working tree: clean
π Pending Changes
ββββββββββββββββββββββββββββββββββββββββββββββββββ
5 commits since v1.2.3
Features 2
Bug Fixes 2
Documentation 1
π Suggested Release
ββββββββββββββββββββββββββββββββββββββββββββββββββ
Current: 1.2.3
Next: 1.3.0 (minor)
Generate or preview changelog.
shipmark changelog # Update CHANGELOG.md
shipmark changelog --preview # Preview without writing
shipmark changelog --from v1.0.0 # From specific tagManage project version.
shipmark version # Show current version
shipmark version bump # Interactive bump
shipmark version bump minor # Specific bump type
shipmark version set 2.0.0 # Set exact versionManage Git tags.
shipmark tag list # List all tags
shipmark tag latest # Show latest tag
shipmark tag create 1.2.0 # Create new tag
shipmark tag delete v1.2.0 -r # Delete from local and remoteView release history with dates and commit counts.
shipmark history # Show release history
shipmark history -d # Include commit details
shipmark history -l 5 # Limit to last 5 releasesExample output:
Release History
ββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββ¬βββββββββββββ¬ββββββββββ
β Version β Date β Commits β
βββββββββββΌβββββββββββββΌββββββββββ€
β 1.3.0 β 2024-01-15 β 5 β
βββββββββββΌβββββββββββββΌββββββββββ€
β 1.2.0 β 2024-01-10 β 8 β
βββββββββββΌβββββββββββββΌββββββββββ€
β 1.1.0 β 2024-01-05 β 3 β
βββββββββββ΄βββββββββββββ΄ββββββββββ
Initialize ShipMark configuration.
shipmark init # Interactive setup
shipmark init -y # Use defaultsShipMark works seamlessly in CI/CD pipelines with non-interactive mode.
name: Release
on:
workflow_dispatch:
inputs:
bump:
description: 'Version bump type'
required: true
default: 'auto'
type: choice
options:
- auto
- patch
- minor
- major
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install ShipMark
run: npm install -g @grazulex/shipmark
- name: Create Release
run: shipmark release --ci ${{ inputs.bump }}
env:
GIT_AUTHOR_NAME: github-actions
GIT_AUTHOR_EMAIL: github-actions@github.com
GIT_COMMITTER_NAME: github-actions
GIT_COMMITTER_EMAIL: github-actions@github.com| Option | Description |
|---|---|
--ci auto |
Auto-detect bump from commits (breakingβmajor, featβminor, elseβpatch) |
--ci patch |
Force patch bump |
--ci minor |
Force minor bump |
--ci major |
Force major bump |
--ci prerelease |
Increment prerelease version |
In CI mode, ShipMark outputs variables for pipeline consumption:
SHIPMARK_VERSION=1.3.0
SHIPMARK_TAG=v1.3.0
SHIPMARK_BUMP=minorShipMark uses .shipmarkrc.yml for configuration:
changelog:
file: "CHANGELOG.md"
includeHash: true
includeDate: true
version:
files:
- "package.json" # Node.js
- "pyproject.toml" # Python (PEP 621, Poetry, Setuptools)
- path: "helm/values.yaml" # Helm/YAML with custom key
key: "image.tag"
prefix: "" # No "v" prefix for Docker tags
tagPrefix: "v"
tagMessage: "Release {version}"
commitMessage: "chore(release): {version}"
syncCheck: true # Warn if versions differ before release
commits:
conventional: true
git:
push: true
pushTags: true
signTags: false
signCommits: falseShipMark can update version in multiple files across different ecosystems:
| File Type | Auto-detected | Config Example |
|---|---|---|
package.json |
Yes | "package.json" |
pyproject.toml |
Yes (PEP 621, Poetry, Setuptools) | "pyproject.toml" |
*.yaml / *.yml |
With key path | path: "values.yaml", key: "image.tag" |
Example for React + Python monorepo:
version:
files:
- "frontend/package.json"
- "backend/pyproject.toml"
- path: "deploy/helm/values.yaml"
key: "image.tag"
prefix: ""
syncCheck: trueShipMark parses Conventional Commits to organize your changelog:
| Prefix | Section | Bump |
|---|---|---|
feat: |
Features | minor |
fix: |
Bug Fixes | patch |
docs: |
Documentation | patch |
refactor: |
Code Refactoring | patch |
perf: |
Performance | patch |
test: |
Tests | patch |
chore: |
Chores | patch |
BREAKING CHANGE: |
major |
| Type | Example | When to use |
|---|---|---|
patch |
1.0.0 β 1.0.1 | Bug fixes, minor changes |
minor |
1.0.0 β 1.1.0 | New features (backwards compatible) |
major |
1.0.0 β 2.0.0 | Breaking changes |
prepatch |
1.0.0 β 1.0.1-alpha.1 | Testing a patch |
preminor |
1.0.0 β 1.1.0-alpha.1 | Testing a feature |
premajor |
1.0.0 β 2.0.0-alpha.1 | Testing breaking changes |
prerelease |
1.0.0-alpha.1 β 1.0.0-alpha.2 | Next prerelease iteration |
npm install -g @grazulex/shipmarknpx @grazulex/shipmark releaseshipmark --version| Feature | ShipMark | semantic-release | release-it | standard-version |
|---|---|---|---|---|
| Zero Config | β | β | ||
| Interactive Mode | β | β | β | β |
| CI Mode | β | β | β | β |
| No External Deps | β | β | β | |
| Dry Run Preview | β Full | |||
| Status Command | β | β | β | β |
| Actively Maintained | β | β | β | β Deprecated |
Contributions are welcome! Whether it's:
- π Bug reports
- β¨ Feature requests
- π Documentation improvements
- π§ Code contributions
MIT Β© Grazulex
π Website β’ π¦ npm β’ π Issues β’ π¬ Discussions
Built with β€οΈ for developers who value simplicity
Star this repo if ShipMark helps your workflow! β