npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

git-changelog-manager

v1.3.6

Published

A comprehensive changelog management tool for automated release notes and version management

Downloads

46

Readme

Git Changelog Manager

A comprehensive changelog management tool for automated release notes and version management. This package helps you maintain professional changelogs by automatically extracting git commit messages, polishing them with AI (optional), and managing version releases.

Features

  • 🚀 Automated Changelog Generation: Extract and format git commits into professional changelog entries
  • 🤖 AI-Powered Message Polishing: Uses OpenAI or Claude APIs to improve commit messages (optional)
  • 📝 Markdown-Based: Uses markdown files with frontmatter for structured release notes
  • 🔄 Version Management: Automated semantic versioning with git tagging
  • 🐙 GitHub Integration: Automatically create GitHub releases
  • 🎯 Duplicate Detection: Hash-based duplicate prevention for commit messages
  • ⚙️ Configurable: Extensive configuration options via files, environment variables, or CLI options

Installation

npm install -g git-changelog-manager

Or install locally in your project:

npm install --save-dev git-changelog-manager

Quick Start

  1. Initialize in your project:
changelog-init
  1. Add recent commits to changelog:
changelog-add
  1. Create a release:
changelog-release --type patch

CLI Commands

changelog-init

Initialize changelog-manager in your project.

changelog-init [options]

Options:
  -r, --root <path>        Project root directory (default: current directory)
  -d, --dir <directory>    Changelog directory path (default: "changelog/releases")
  --skip-env              Skip .env file creation
  --skip-config           Skip config file creation
  -h, --help              Display help

changelog-add

Add entries to changelog from git commits or custom messages.

changelog-add [options]

Options:
  -m, --message <message>  Custom message to add to changelog
  -d, --dir <directory>    Changelog directory path (default: "changelog/releases")
  -f, --file <filename>    Draft filename (default: "draft.md")
  -t, --time <timerange>   Git time range for commits (default: "1 day ago")
  -r, --root <path>        Project root directory
  --openai-key <key>       OpenAI API key (overrides env)
  --claude-key <key>       Claude API key (overrides env)
  -h, --help              Display help

changelog-release

Create a new release with version bump and changelog.

changelog-release [options]

Options:
  -t, --type <type>        Version bump type: major, minor, patch (default: "patch")
  -d, --dir <directory>    Changelog directory path (default: "changelog/releases")
  -f, --file <filename>    Draft filename (default: "draft.md")
  -r, --root <path>        Project root directory
  -p, --package <path>     Package.json path (default: "package.json")
  --github-token <token>   GitHub token (overrides env)
  --github-repo <repo>     GitHub repository (overrides env)
  --config <path>          Path to config file
  --skip-pending-check     Skip checking for pending commits
  -h, --help              Display help

Configuration

Environment Variables

Create a .env file in your project root:

# AI API Keys (optional)
OPENAI_API_KEY=your_openai_api_key
CLAUDE_API_KEY=your_claude_api_key

# GitHub Integration (optional)
GITHUB_TOKEN=your_github_token
GITHUB_REPOSITORY=username/repository-name

Config File

Create changelog.config.json in your project root:

{
  "changelogDir": "changelog/releases",
  "draftFileName": "draft.md",
  "gitTimeRange": "1 day ago",
  "versionFiles": [
    {
      "path": "package.json",
      "jsonPath": "version"
    },
    {
      "path": "src/version.js",
      "pattern": "version: ['\"]([^'\"]+)['\"]",
      "replacement": "version: '{{version}}'"
    }
  ]
}

Configuration Options

| Option | Description | Default | |--------|-------------|---------| | changelogDir | Directory for changelog files | changelog/releases | | draftFileName | Name of draft file | draft.md | | gitTimeRange | Time range for git commits | 1 day ago | | projectRoot | Project root directory | process.cwd() | | packageJsonPath | Path to package.json | package.json | | aiApiKey | AI API key | From environment | | aiApiType | AI API type (openai or claude) | Auto-detected | | githubToken | GitHub token | GITHUB_TOKEN env var | | githubRepository | GitHub repository | GITHUB_REPOSITORY env var | | versionFiles | Additional files to update with version | [] |

Usage Examples

Basic Usage

# Add recent commits to changelog
changelog-add

# Add custom message
changelog-add -m "Fixed critical bug in authentication"

# Create patch release
changelog-release

# Create minor release
changelog-release --type minor

Advanced Usage

# Use custom git time range
changelog-add -t "3 days ago"

# Use custom directories
changelog-add -d "docs/releases" -f "unreleased.md"

# Release with custom config
changelog-release --config ./my-config.json

# Skip pending commits check
changelog-release --type minor --skip-pending-check

Recommended Workflow

The package follows a two-step workflow:

  1. Add commits to changelog: Use changelog-add to stage your recent commits into the draft changelog
  2. Create release: Use changelog-release to bump version, create tags, and publish
# After making commits
changelog-add

# Review the draft changelog
cat changelog/releases/draft.md

# Create a release
changelog-release --type minor

Automatic Pending Check

When you run changelog-release, the tool automatically checks if you have commits that haven't been added to the changelog yet. If found, it will:

  1. Show a warning about pending commits
  2. Ask if you want to run changelog-add first
  3. If you choose yes, it will add the commits and continue with the release
  4. If you choose no, it will proceed with the release without adding the pending commits

You can skip this check with --skip-pending-check if needed.


## Programmatic Usage

You can also use the package programmatically in your Node.js applications:

```javascript
const { ChangelogManager, ReleaseManager } = require('git-changelog-manager');

// Create changelog manager
const changelog = new ChangelogManager({
  changelogDir: 'changelog/releases',
  aiApiKey: process.env.OPENAI_API_KEY
});

// Add commits to changelog
await changelog.addToChangelog();

// Create release manager
const release = new ReleaseManager({
  githubToken: process.env.GITHUB_TOKEN,
  githubRepository: 'user/repo'
});

// Create a release
await release.release('minor');

File Structure

The package creates the following structure:

your-project/
├── changelog/
│   └── releases/
│       ├── draft.md          # Current unreleased changes
│       ├── 1.0.0.md         # Released version files
│       ├── 1.0.1.md
│       └── ...
├── .env                      # Environment variables
├── changelog.config.json     # Configuration file
└── package.json             # Updated with scripts

Release File Format

Each release file uses markdown with frontmatter:

---
version: 1.0.1
date: 2024-07-04
tag: v1.0.1
---

# Release 1.0.1

- Fixed authentication bug <!-- hash:abc123 -->
- Added new user dashboard <!-- hash:def456 -->
- Improved performance <!-- hash:ghi789 -->

Rendering Examples

Looking for ways to display your changelog data? Check out our git-changelog-renderer-examples repositories for complete examples of how to render and display changelog data from this package:

🎨 Example Renderers

Explore different frontend implementations showcasing the changelog data:

| Framework | Description | Demo | Status | |-----------|-------------|------|--------| | Vue.js | Modern, responsive UI with advanced search, filtering, and modal views for an enhanced user experience | 🌐 Live Demo | Netlify Status | | React | Built with React 19 and Vite, featuring dual grid/list views, dark mode support, custom hooks, and modern component patterns | 🌐 Live Demo | Netlify Status | | Vanilla JS | Pure JavaScript implementation with no frameworks required, featuring lightweight performance, dual views, and easy customization | 🌐 Live Demo | Netlify Status | | SvelteKit | Built with SvelteKit featuring Apple-inspired design, dark mode, statistics dashboard, and seamless search functionality | 🌐 Live Demo | Netlify Status |

Each example shows how to:

  • Load and parse changelog markdown files
  • Display release notes in an attractive UI
  • Implement search and filtering
  • Handle version sorting and navigation
  • Create responsive layouts for different screen sizes

Perfect for creating documentation sites, release note pages, or integrating changelog displays into your existing applications!

Need a different framework? If you're looking for additional framework examples (Angular, Nuxt, Next.js, etc.), please open an issue or submit a PR with your implementation!

AI Integration

The package can automatically polish your git commit messages using AI:

  • OpenAI GPT-3.5: Set OPENAI_API_KEY environment variable
  • Claude: Set CLAUDE_API_KEY environment variable
  • Fallback: If no AI key is provided, raw commit messages are used

The AI will transform commit messages like:

  • "fix: auth bug""- Fixed authentication bug"
  • "feat: user dashboard""- Added new user dashboard"

GitHub Integration

When properly configured, the package will:

  1. Create git tags for releases
  2. Push changes to your repository
  3. Create GitHub releases with changelog content
  4. Link releases to git tags

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License - see LICENSE file for details.