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

0.3.0Β β€’Β PublicΒ β€’Β Published

Should Semantic Release

Checks whether a semantic release should be run for a repository. πŸ’‚

All Contributors: 4 πŸ‘ͺ Codecov Test Coverage Contributor Covenant License: MIT Sponsor: On GitHub Style: Prettier TypeScript: Strict npm package version

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. Thanks! πŸ’–

Contributors

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.

Readme

Keywords

none

Package Sidebar

Install

npm i should-semantic-release

Weekly Downloads

11,837

Version

0.3.0

License

MIT

Unpacked Size

19.5 kB

Total Files

22

Last publish

Collaborators

  • joshuakgoldberg