All Projects → jscutlery → Semver

jscutlery / Semver

Licence: mit
Nx plugin to automate semantic versioning and CHANGELOG generation.

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Semver

Syncpack
Manage multiple package.json files, such as in Lerna Monorepos and Yarn/Pnpm Workspaces
Stars: ✭ 356 (+259.6%)
Mutual labels:  semver, monorepo
Commudle Ng
World's first community management platform. And it's free!
Stars: ✭ 81 (-18.18%)
Mutual labels:  monorepo
React Native Spaceviewer
See and search upcoming and previous rocket space launches! Built with React Native, using Detox E2E tests, Fastlane and Github Actions for app store deployment.
Stars: ✭ 61 (-38.38%)
Mutual labels:  monorepo
Create React App
Yarn Workspaces Monorepo support for Create-React-App / React-Scripts.
Stars: ✭ 76 (-23.23%)
Mutual labels:  monorepo
Bilt
A build tool for NPM monorepos
Stars: ✭ 63 (-36.36%)
Mutual labels:  monorepo
Generator Django Rest
Yeoman generator for a Django REST/GraphQL API, an optional React SPA & lots more!
Stars: ✭ 77 (-22.22%)
Mutual labels:  monorepo
Terra Clinical
Terra Clinical is a repository for terra react components used only in a clinical setting.
Stars: ✭ 59 (-40.4%)
Mutual labels:  monorepo
Scale
The Scale library offers a set of customizable web components written with Stencil.js & TypeScript. The default theme of the library can be easily replaced so that a corresponding corporate identity of a dedicated brand can be represented.
Stars: ✭ 87 (-12.12%)
Mutual labels:  monorepo
Lite
Split a repository to read-only standalone repositories
Stars: ✭ 1,229 (+1141.41%)
Mutual labels:  monorepo
Semver
Semver checker for Packagist
Stars: ✭ 73 (-26.26%)
Mutual labels:  semver
Superset Ui Plugins
A collection of official Superset UI plugins
Stars: ✭ 73 (-26.26%)
Mutual labels:  monorepo
Buildpipe Buildkite Plugin
Dynamically generate Buildkite pipelines based on project changes
Stars: ✭ 67 (-32.32%)
Mutual labels:  monorepo
Cra Monorepo Examples
Monorepo w/ shared components.
Stars: ✭ 80 (-19.19%)
Mutual labels:  monorepo
Metav
Release and Versioning of Clojure projects using tools.deps
Stars: ✭ 62 (-37.37%)
Mutual labels:  monorepo
Nx Packaged
Angular libraries with ng-packagr embedded in Nx Workspace.
Stars: ✭ 82 (-17.17%)
Mutual labels:  monorepo
React Micro Frontends
This is a monorepo ReactJS based in micro frontends
Stars: ✭ 61 (-38.38%)
Mutual labels:  monorepo
Please
please is semver release made easy
Stars: ✭ 72 (-27.27%)
Mutual labels:  semver
Purser
Interact with Ethereum wallets easily
Stars: ✭ 76 (-23.23%)
Mutual labels:  monorepo
Git Version Bumper
Bump your git tag to the next version, easily. 👊
Stars: ✭ 87 (-12.12%)
Mutual labels:  semver
Flow Mono Cli
A command line interface that aims to solve a few issues while working with flow typed codebases in a mono-repo.
Stars: ✭ 84 (-15.15%)
Mutual labels:  monorepo
@jscutlery/semver NPM package @jscutlery/semver coverage status

@jscutlery/semver

Nx plugin for versioning using SemVer and CHANGELOG generation powered by Conventional Commits.

Setup

Install

Without Angular:

npm install -D @jscutlery/semver
nx g @jscutlery/semver:install

or if you are using Angular:

ng add @jscutlery/semver

This package allows you to manage your monorepo using one of two modes: Synced or Independent.

Independent mode (default)

Allow multiple projects to be versioned independently. This way you release only what you want and consumers don't get updates they don't need. This allows small, rapid and incremental adoption of your packages.

Synced mode

Allow multiple projects to be versioned in a synced/locked mode. Use this if you want to automatically tie all package versions together. This mode is useful when you are working with only one product.

One issue with this approach is that a major change in any project will result in all projects having a new major version.

Usage

Release

Independent mode

Release project independently by running:

nx run my-project:version [...options]

You can leverage the built-in affected command to only version changed packages:

nx affected --target version [...options]

Synced mode

Release multiple projects at once:

nx run workspace:version [...options]

Specified Level Change

Release a project with a version that is incremented by a specified level. Level can be one of: major, minor, patch, premajor, preminor, prepatch, or prerelease:

nx run workspace:version --version=major
nx run workspace:version --version=minor
nx run workspace:version --version=patch
nx run workspace:version --version=prerelease --preid=alpha
nx run workspace:version --version=prerelease --preid=beta

When run, this command does the following:

  1. Retrieve the current version of affected package.json projects.
  2. Bump versions based on your commits.
  3. Generates CHANGELOGs based on your commits (uses conventional-changelog-angular under the hood).
  4. Creates a new commit including your package.json files and updated CHANGELOGs.
  5. Creates new tags with the new versions number.
  6. Push the releases (if enabled).

Available options:

name type default description
--dry-run boolean false run with dry mode
--no-verify boolean false skip git hooks
--push boolean false push the release
--sync-versions boolean false lock/sync versions between projects
--root-changelog boolean true generate root CHANGELOG containing all changes
--origin string 'origin' push against git remote repository
--base-branch string 'main' push against git base branch
--version string null The level of change
--preid string null Prerelease identifier

Changelog

For new features or breaking changes see the changelog.

Contributors

This project follows the all-contributors specification.


Younes Jaaidi

🐛 💻 📖 💡 🤔

Edouard Bozon

🐛 💻 📖 💡 🤔

Gleb Mikheev

🤔

Richard Lea

💻

Katona

🐛 💻

License

This project is MIT licensed.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].