Security News
Supply Chain Attack Detected in Solana's web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
light-release
Advanced tools
A lightweight tool to automate your release process, compatible with conventional commit messages. It reads your commit history, determines the release type, and generates release notes without unnecessary dependencies.
A lightweight tool to automate your release process, compatible with conventional commit messages. It reads your commit history, determines the release type, and generates release notes without unnecessary dependencies.
Light Release is a lightweight alternative to semantic-release designed to simplify your release process while maintaining compatibility with conventional commit messages. It reads your commit history, determines the type of release (major, minor, or patch), and generates visually appealing release notes—all without unnecessary dependencies!
The purpose of Light Release is to automate the release process for developers who want a hassle-free experience without the complexity of larger tools. If you're tired of managing your releases manually, or if you just want to impress your team with snazzy release notes, then Light Release is here to save the day!
Getting started with Light Release is a breeze! Just run the following command in your terminal:
npm install light-release --save-dev
Make sure you have Git installed, as Light Release relies on your commit history. If Git is not found, Light Release will kindly inform you to install it.
Using Light Release is as simple as pie! Once installed, you can run it from the command line. Here's how:
npx light-release
Another method, extremely more useful is to include light-release among your package scripts:
To include Light Release in your package scripts, add the following to the scripts
section of your package.json
file:
"scripts": {
"release": "light-release"
}
Now, you can run Light Release using the following command:
npm run release
This will analyze your commit history, determine the release version, and generate the release notes in both HTML and Markdown formats.
On the first run, Light Release will generate a default configuration file named light-release.config.json
in your project's root directory. You can modify this file to customize the behavior of the tool according to your preferences. If the file doesn't exist, everything will be activated by default—because who doesn't love a little plug-and-play?
Option | Type | Default | Description |
---|---|---|---|
generateMarkdown | Boolean | true | If true , generates release notes in Markdown format. Useful for lightweight, text-based logs. |
generateHTML | Boolean | true | If true , generates release notes in HTML format. Ideal for a web-viewable format of release notes. |
releaseNotesDir | String | .release-notes | Specifies the directory to store release notes files. |
badgeStyle | String | flat-square | Defines the style of version badges (styles depend on badge provider). |
dateFormat | String | YYYY-MM-DD | Specifies the date format for release notes. Adjust based on preference. |
showCommitImpact | Boolean | true | If true , includes an impact summary based on commits in release notes to highlight key changes. |
blockIfChangesExist | Boolean | true | Prevents releases if uncommitted changes are in the working directory, ensuring a clean and stable flow. |
autoCommit | Boolean | false | If true , automatically commits generated files (like release notes) after each release, streamlining the workflow. |
squashIntoSingleVersioning | Boolean | true | Combines all new changes into a single version increment to avoid multiple minor jumps in versioning, ideal for simplified versioning. |
showAuthorLinks | Boolean | true | If true , shows clickable links to authors in the release notes, useful for tracking contributors. |
defaultImpactThresholds | Object | { "low": 1, "medium": 5, "high": 10 } | Sets thresholds for categorizing impact of changes: low , medium , high , based on commit count. |
versionFileName | String | package.json | If your version is not in package.json and instead is in another file (e.g. deno.json ). The file is expected to be a JSON file and the version will be in the version field. |
majorWords | Array | ["BREAKING CHANGE", "major", "perf", "^\s*feat(\(.*\))?!:"] | Specifies keywords in commit messages that trigger a major version bump. |
minorWords | Array | ["feat", "minor", "feature", "refactor"] | Specifies keywords in commit messages that trigger a minor version bump. |
patchWords | Array | `["fix", "perf", "close | closes |
prereleaseWords | Array | ["beta", "alpha", "rc"] | Specifies keywords in commit messages that trigger a prerelease version bump. |
package.json
(e.g. Deno)If your version is not in package.json
and instead is in another file (e.g. deno.json
), you can change the config in light-release.config.json
and alter versionFileName
to the file name that you need to modify. The file is expected to be a JSON file and the version will be in the version
field.
For security reasons, we allow only the following values: package.json
, deno.json
, or jsr.json
.
After running Light Release, you can expect to find:
.release-notes
directory.We welcome contributions from everyone! Whether you have ideas for new features, improvements, or just want to report a bug, please feel free to open an issue or submit a pull request.
To start collaborating, simply fork the repository and follow these steps:
git checkout -b feature/my-awesome-feature
git commit -m "Add my awesome feature"
git push origin feature/my-awesome-feature
A big thank you to all the wonderful contributors who help make Light Release shine! If you’ve contributed to this project, your name will be here. Let’s keep the love rolling!
This project is licensed under the MIT License. See the LICENSE file for details.
If you find Light Release useful, please consider citing it in your work:
@software{light_release,
author = {Vincenzo Manto},
title = {Light Release},
year = {2024},
url = {https://github.com/VincenzoManto/light-release},
}
FAQs
A lightweight tool to automate your release process, compatible with conventional commit messages. It reads your commit history, determines the release type, and generates release notes without unnecessary dependencies.
We found that light-release demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.