Skip to content

Latest commit

聽

History

History
114 lines (85 loc) 路 7.55 KB

File metadata and controls

114 lines (85 loc) 路 7.55 KB

Should Semantic Release

Checks whether a semantic release should be run for a repository. 馃拏

馃應 All Contributors: 7 馃 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

馃
gvdp
gvdp

馃悰
michael faith
michael faith

馃悰 馃捇

馃挐 This package was templated with create-typescript-app using the Bingo framework.