1. should-semantic-release
Checks whether a semantic release should be run for a repository. 💂
should-semantic-release
Package: should-semantic-release
Created by: JoshuaKGoldberg
Last modified: Sun, 18 Feb 2024 16:33:10 GMT
Version: 0.3.0
License: MIT
Downloads: 51,250
Repository: https://github.com/JoshuaKGoldberg/should-semantic-release

Install

npm install should-semantic-release
yarn add should-semantic-release

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.

Dependencies

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code