包详细信息

should-semantic-release

JoshuaKGoldberg25.9kMIT0.3.3

Checks whether a semantic release should be run for a repository. 💂

自述文件

Should Semantic Release

Checks whether a semantic release should be run for a repository. 💂

👪 All Contributors: 5 🤝 Code of Conduct: Kept 🧪 Coverage 📝 License: MIT 📦 npm version 💪 TypeScript: Strict

Usage

This function determines whether a semantic release should occur for a package based on Git history. It returns true if a "meaningful" commit has come since the most recent release commit.

if npx should-semantic-release; then npx release-it; fi

This can be useful, for example, to prevent a release-it release.

should-semantic-release accepts the following CLI flag:

  • -v/--verbose (default: false): Whether to log debug information to the console
$ npx should-semantic-release --verbose

Checking up to 123 commits for release readiness...
Checking commit: chore: an example chore (#101)
Found type chore.
Checking commit: chore: another example chore (#100)
Found type chore.
Checking commit: chore: release v1.27.31
This is a release commit. Returning false.

Commit Purposes

Based on a commit's conventional commit message type:

  1. If the type is feat fix, or perf, it's considered "meaningful"
  2. If the commit is marked as being a breaking change, either via a BREAKING CHANGE: at the start of any commit message lines or via an ! appended to the type, it's considered "meaningful"
  3. If the type is docs, refactor, style, or test, it's ignored
  4. If the message looks like v1.2.3, chore: release 1.2.3, or similar, it's considered a "release"

See getCommitMeaning for the exact logic used.

Node API

Alternately, you can call this import asynchronous shouldSemanticRelease function into Node scripts:

import { shouldSemanticRelease } from "should-semantic-release";

if (await shouldSemanticRelease()) {
    console.log("Let's release! 🚀");
}

shouldSemanticRelease accepts an optional options object with the following parameter:

  • verbose (default: false)
import { shouldSemanticRelease } from "should-semantic-release";

await shouldSemanticRelease({ verbose: true });

Development

See .github/CONTRIBUTING.md, then .github/DEVELOPMENT.md. Thanks! 💂

Contributors

John Reilly
John Reilly

🐛 💻
Josh Goldberg
Josh Goldberg

💻 🚧 🚇 🤔 ⚠️ 🖋 📖 📆 🔧
Katya Pavlenko
Katya Pavlenko

💻
Stephen Zhou
Stephen Zhou

💻
Steven Luscher
Steven Luscher

🤔

💙 This package is based on @JoshuaKGoldberg's create-typescript-app.

💝 This package was templated with create-typescript-app using the Bingo engine.

更新日志

Changelog

0.3.1 (2025-02-16)

Bug Fixes

0.3.0 (2024-02-18)

Bug Fixes

  • add permissions to compliance action (c518fc1)
  • always return false if a release commit is found (fbe1937)
  • consider version-number-only commit as a release (402567e)
  • empty commit to trigger release (8feb21f)
  • empty commit to trigger release (3e1b46a)
  • lint & lock file (bbe2520)
  • regex (573c841)
  • use @pkgjs/parseargs instead of native node:utils to support node 14 (fb3b839)

Features

  • add understanding of more commit types (6255d06)
  • added --verbosity flag (23dedbc)
  • support BREAKING CHANGE (53951bd)

Reverts

  • Revert "chore: switch bin to non-.mjs" (40545b9)