should-semantic-release
TypeScript icon, indicating that this package has built-in type declarations

0.3.3Β β€’Β PublicΒ β€’Β Published

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.

Readme

Keywords

none

Package Sidebar

Install

npm i should-semantic-release

Weekly Downloads

6,751

Version

0.3.3

License

MIT

Unpacked Size

14.4 kB

Total Files

16

Last publish

Collaborators

  • joshuakgoldberg