{"id":14070471,"url":"https://github.com/favware/cliff-jumper","last_synced_at":"2025-07-13T19:31:30.157Z","repository":{"id":37018128,"uuid":"482639492","full_name":"favware/cliff-jumper","owner":"favware","description":"A small CLI tool to create a semantic release and git-cliff powered Changelog","archived":false,"fork":false,"pushed_at":"2024-04-14T11:47:13.000Z","size":10804,"stargazers_count":33,"open_issues_count":1,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-18T21:39:56.169Z","etag":null,"topics":["changelog","changelog-generator","commit","conventional-changelog","conventional-commits","generator","hacktoberfest","keepachangelog","semver"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/favware.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":["favna"],"patreon":"favna","open_collective":null,"ko_fi":"favna","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://donate.favware.tech/paypal"}},"created_at":"2022-04-17T21:41:01.000Z","updated_at":"2024-06-03T23:40:24.751Z","dependencies_parsed_at":"2024-03-17T02:21:09.706Z","dependency_job_id":"16874c39-58c5-4db5-bec6-ae2b88247be0","html_url":"https://github.com/favware/cliff-jumper","commit_stats":{"total_commits":198,"total_committers":6,"mean_commits":33.0,"dds":"0.33333333333333337","last_synced_commit":"3185cf9de8026ba9e998e58c9ec8dfc7717662c6"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/favware%2Fcliff-jumper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/favware%2Fcliff-jumper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/favware%2Fcliff-jumper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/favware%2Fcliff-jumper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/favware","download_url":"https://codeload.github.com/favware/cliff-jumper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225911880,"owners_count":17544057,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["changelog","changelog-generator","commit","conventional-changelog","conventional-commits","generator","hacktoberfest","keepachangelog","semver"],"created_at":"2024-08-13T07:07:47.364Z","updated_at":"2025-07-13T19:31:30.145Z","avatar_url":"https://github.com/favware.png","language":"TypeScript","funding_links":["https://github.com/sponsors/favna","https://patreon.com/favna","https://ko-fi.com/favna","https://donate.favware.tech/paypal","https://github.com/sponsors/Favna"],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# cliff-jumper\n\n**A small CLI tool to create a semantic release and [git-cliff] powered\nChangelog**\n\n[![GitHub](https://img.shields.io/github/license/favware/cliff-jumper)](https://github.com/favware/cliff-jumper/blob/main/LICENSE)\n[![npm](https://img.shields.io/npm/v/@favware/cliff-jumper?color=crimson\u0026logo=npm)](https://www.npmjs.com/package/@favware/cliff-jumper)\n\n[![Support Server](https://discord.com/api/guilds/512303595966824458/embed.png?style=banner2)](https://join.favware.tech)\n\n\u003c/div\u003e\n\n## Description\n\nWhen managing a collection of projects you often want to follow a standard\nCHANGELOG template for all of them, but you also do not want to have to setup\nthe release flow for every package. This is where [cliff-jumper] comes in.\n\n### How this works\n\n[cliff-jumper] uses a combination of [conventional-recommended-bump] and\n[git-cliff] to bump your package using semantic versioning (following a\nvariation of the [Angular preset][angular-preset] (seen\n[here][angular-preset-custom])). It will:\n\n1. Perform preflight checks to verify that the tool can run\n1. Resolve which bump strategy should be used by using\n   [conventional-recommended-bump]\n   - If the CLI tool is ran inside a mono repo then only commits that affect the\n     nested package will be considered!\n1. Bump the version in your `package.json` using `npm version` with the resolved\n   strategy\n1. Validate that `-t`, `--skip-tag` (CLI flags) weren't provided or `skipTag`\n   wasn't set to `true` in the config file\n1. Update the `CHANGELOG.md` (or a different file if configured through\n   `--changelog-prepend-file`) file using [git-cliff]\n1. If `--install` was provided (or `install: true` set in the config file) then\n   run the `install` command of the package manager (`npm install`,\n   `yarn install`, or `pnpm install`) you used to call this CLI.\n\n   - **Important:** when you install `@favware/cliff-jumper` globally this will\n     always default to `npm` because of how NodeJS works. Therefore, if you wish\n     for it to be `yarn` or `npm` make sure to add it as dev dependency to your\n     project and call it locally.\n\n1. Stage the `package.json` and `CHANGELOG.md` (or a different file if\n   configured through `--changelog-prepend-file`) files\n1. Commit the release\n1. Tag the release\n\n## Installation\n\nYou can use the following command to install this package, or replace\n`npm install -D` with your package manager of choice.\n\n```sh\nnpm install -D @favware/cliff-jumper\n```\n\nOr install it globally:\n\n```sh\nnpm install -g @favware/cliff-jumper\n```\n\nThen call the script with `cliff-jumper` or `cj`:\n\n```sh\ncliff-jumper --name \"my-package\" --package-path \".\" # Add any other flags or use --help\ncj --name \"my-package\" --package-path \".\" # Add any other flags or use --help\n```\n\nAlternatively you can call the CLI directly with `npx`:\n\n```sh\nnpx @favware/cliff-jumper --name \"my-package\" --package-path \".\" # Add any other flags or use --help\n```\n\n## Usage\n\nYou can provide all options through CLI flags:\n\n```sh\nUsage: cliff-jumper [options]\n\nOptions:\n  -V, --version                            output the version number\n  -n, --name \u003cstring\u003e                      The package name to release\n  -p, --package-path \u003cstring\u003e              The path to the current package. For non-monorepos this is just \".\"\n  --dry-run                                Whether the package should be bumped or not. When this is set no actions will be taken and only the release strategy will be logged\n  --skip-automatic-bump                    Whether to skip bumping the version (useful if this is the first version, or if you have manually set the version)\n  --mono-repo                              Whether the package to be bumped resides in a mono repo,\n                                           which enables Lerna-like scanning for what kind of version bump should be applied\n                                           Defaults to \"true\" when \"org\" is set, false otherwise\n  --no-mono-repo                           Whether the package to be bumped resides in a mono repo,\n                                           which enables Lerna-like scanning for what kind of version bump should be applied\n                                           Defaults to \"true\" when \"org\" is set, false otherwise\n  -o, --org \u003cstring\u003e                       The NPM org scope that should be used WITHOUT \"@\" sign or trailing \"/\"\n  --preid [string]                         The \"prerelease identifier\" to use as a prefix for the \"prerelease\" part of a semver\n  --identifier-base \u003cnumber\u003e               The base number (0 or 1) to be used for the prerelease identifier.\n  --no-identifier-base                     Do not use a base number for the prerelease identifier.\n  -c, --commit-message-template [string]   A custom commit message template to use.\n                                           Defaults to \"chore({{name}}): release {{full-name}}@{{new-version}}\"\n                                           You can use \"{{new-version}}\" in your template which will be dynamically replaced with whatever the new version is that will be\n                                           published.\n                                           You can use \"{{name}}\" in your template, this will be replaced with the name provided through \"-n\", \"--name\" or the same value set in\n                                           your config file.\n                                           You can use \"{{full-name}}\" in your template, this will be replaced \"{{name}}\" (when \"org\" is not provided), or \"@{{org}}/{{name}}\"\n                                           (when \"org\" is provided).\n  --tag-template [string]                  A custom tag template to use.\n                                           When \"org\" is provided this will default to \"@{{org}}/{{name}}@{{new-version}}\", for example \"@favware/cliff-jumper@1.0.0\"\n                                           When \"org\" is not provided this will default to \"v{{new-version}}\", for example \"v1.0.0\"\n                                           You can use \"{{new-version}}\" in your template which will be dynamically replaced with whatever the new version is that will be\n                                           published.\n                                           You can use \"{{org}}\" in your template, this will be replaced with the org provided through \"-o\", \"--org\" or the same value set in\n                                           your config file.\n                                           You can use \"{{name}}\" in your template, this will be replaced with the name provided through \"-n\", \"--name\" or the same value set in\n                                           your config file.\n                                           You can use \"{{full-name}}\" in your template, this will be replaced \"{{name}}\" (when \"org\" is not provided), or \"@{{org}}/{{name}}\"\n                                           (when \"org\" is provided).\n  -i, --install                            Whether to run npm install after bumping the version but before committing and creating a git tag. This is useful when you have a\n                                           mono repo where bumping one package would then cause the lockfile to be out of date.\n  --skip-changelog                         Whether to skip updating your changelog file\n                                           default \"true\" when CI=true, \"false\" otherwise\n  --no-skip-changelog                      Whether to skip updating your changelog file\n                                           default \"true\" when CI=true, \"false\" otherwise\n  -t, --skip-tag                           Whether to skip creating a git tag\n                                           default \"true\" when CI=true, \"false\" otherwise\n  --no-skip-tag                            Whether to skip creating a git tag\n                                           default \"true\" when CI=true, \"false\" otherwise\n  --changelog-prepend-file [string]        The file that git-cliff should use for the --prepend flag, defaults to ./CHANGELOG.md. This should be relative to the current working\n                                           directory.\n  --skip-commit [skipCommit...]            Repeatable, each will be treated as a new entry. A list of SHA1 commit hashes that will be skipped in the changelog.\n  --git-host-variant [gitHostVariant]      The git host variant. Git-cliff supports 4 hosting websites, GitHub, GitLab, Gitea, and BitBucket. By setting this option you control\n                                           which api is used by git-cliff. Defaults to \"github\" for backwards compatibility.\n  --git-repo                               The git repository to use for linking to issues and PRs in the changelog.\n                                           You can pass the unique string \"auto\" to automatically set this value as {{org}}/{{name}} as provided from --org and --name\n                                           This should be in the format \"owner/repo\"\n                                           You can use the \"GIT_REPO\" environment variable to automatically set this value\n  --git-token                              A token to authenticate requests to the Git host API. This can be a GitHub, GitLab, Gitea, or BitBucket token. Which is used is\n                                           determined by \"--git-host-variant\". This is required when using the \"--git-repo\" option.\n                                           You can also set the one of the following environment variables.\n                                           - GITHUB_TOKEN\n                                           - GITLAB_TOKEN\n                                           - GITEA_TOKEN\n                                           - BITBUCKET_TOKEN\n                                           - GH_TOKEN\n  --push-tag                               Whether to push the tag to the remote repository.\n                                           This will simply execute \"git push \u0026\u0026 git push --tags\" so make sure you have configured git for pushing properly beforehand.\n  --no-push-tag                            Whether to push the tag to the remote repository.\n                                           This will simply execute \"git push \u0026\u0026 git push --tags\" so make sure you have configured git for pushing properly beforehand.\n  --github-release                         Note that this is only supported if \"--git-host-variant\" is set to \"github\"\n                                           Whether to create a release on GitHub, requires \"--push-tag\" to be enabled, otherwise there will be no tag to create a release from\n                                           For the repository the release is created on the value from \"--git-repo\" will be used\n                                           If the changelog section from git-cliff is empty, the release notes will be auto-generated by GitHub.\n  --no-github-release                      Note that this is only supported if \"--git-host-variant\" is set to \"github\"\n                                           Whether to create a release on GitHub, requires \"--push-tag\" to be enabled, otherwise there will be no tag to create a release from\n                                           For the repository the release is created on the value from \"--git-repo\" will be used\n                                           If the changelog section from git-cliff is empty, the release notes will be auto-generated by GitHub.\n  --github-release-draft                   Note that this is only supported if \"--git-host-variant\" is set to \"github\"\n                                           Whether the release should be a draft\n  --github-release-pre-release             Note that this is only supported if \"--git-host-variant\" is set to \"github\"\n                                           Whether the release should be a pre-release\n  --github-release-latest                  Note that this is only supported if \"--git-host-variant\" is set to \"github\"\n                                           Whether the release should be marked as the latest release, will try to read this value, then the value of --github-release, and then\n                                           default to false. Please note that when setting --github-release-pre-release to `true` GitHub will prevent the release to be marked\n                                           as latest an this option will essentially be ignored.\n  --github-release-name-template [string]  Note that this is only supported if \"--git-host-variant\" is set to \"github\"\n                                           A GitHub release name template to use. Defaults to an empty string, which means GitHub will use the tag name as the release name.\n                                           You can use \"{{new-version}}\" in your template which will be dynamically replaced with whatever the new version is that will be\n                                           published.\n                                           You can use \"{{org}}\" in your template, this will be replaced with the org provided through \"-o\", \"--org\" or the same value set in\n                                           your config file.\n                                           You can use \"{{name}}\" in your template, this will be replaced with the name provided through \"-n\", \"--name\" or the same value set in\n                                           your config file.\n                                           You can use \"{{full-name}}\" in your template, this will be replaced \"{{name}}\" (when \"org\" is not provided), or \"@{{org}}/{{name}}\"\n                                           (when \"org\" is provided).\n  -v, --verbose                            Whether to print verbose information (default: false)\n  -h, --help                               display help for command\n```\n\nOr, you can set most of these options through a configuration file. This file\nshould be located at your current working directory (where you're calling this\npackage). It should be named `.cliff-jumperrc`, optionally suffixed with\n`.json`, `.yaml`, or `.yml`.\n\n### Config file fields\n\n- `--name` maps to `name`\n- `--package-path` maps to `packagePath`\n- `--dry-run` maps to `dryRun`\n- `--skip-automatic-bump` maps to `skipAutomaticBump`\n- `--mono-repo` and `--no-mono-repo` map to `monoRepo`\n- `--org` maps to `org`\n- `--preid` maps to `preid`\n- `--identifier-base` and `--no-identifier-base` map to `identifierBase`\n- `--commit-message-template` maps to `commitMessageTemplate`\n- `--tag-template` maps to `tagTemplate`\n- `--install` map to `install`\n- `--skip-changelog` and `--no-skip-changelog` map to `skipChangelog`\n- `--skip-tag` and `--no-skip-tag` map to `skipTag`\n- `--changelog-prepend-file` maps to `changelogPrependFile`\n- `--skip-commit` maps to `skipCommit`\n- `--git-host-variant` maps to `gitHostVariant`\n- `--git-repo` maps to `gitRepo`\n- `--git-token` maps to `gitToken`\n- `--push-tag` and `--no-push-tag` map to `pushTag`\n- `--github-release` and `--no-github-release` map to `githubRelease`\n- `--github-release-draft` maps to `githubReleaseDraft`\n- `--github-release-pre-release` maps to `githubReleasePrerelease`\n- `--github-release-latest` maps to `githubReleaseLatest`\n- `--github-release-name-template` maps to `githubReleaseNameTemplate`\n- `--verbose` maps to `verbose`\n\nWhen using `.cliff-jumperrc` or `.cliff-jumperrc.json` as your config file you\ncan also use the JSON schema to get schema validation. To do so, add the\nfollowing to your config file:\n\n```json\n{\n  \"$schema\": \"https://raw.githubusercontent.com/favware/cliff-jumper/main/assets/cliff-jumper.schema.json\"\n}\n```\n\nAlternatively you can reference the local schema in node_modules:\n\n```json\n{\n  \"$schema\": \"./node_modules/@favware/cliff-jumper/assets/cliff-jumper.schema.json\"\n}\n```\n\n**Example JSON file**:\n\n```json\n{\n  \"$schema\": \"https://raw.githubusercontent.com/favware/cliff-jumper/main/assets/cliff-jumper.schema.json\",\n  \"name\": \"my-package\",\n  \"packagePath\": \".\",\n  \"verbose\": true\n}\n```\n\n**Example YAML file**:\n\n```yaml\nname: my-package\npackagePath: .\nverbose: true\n```\n\n### Default values\n\nThis library has opinionated defaults for its options. These are as follows:\n\n- `--dry-run` will default to `undefined`.\n- `--skipAutomaticBump` will default to `undefined`.\n- `--org` will default to `undefined`.\n- `--preid` will default to `undefined`.\n- `--identifier-base` will default to `undefined`. Alternatively, you can force\n  this to `false` by providing `--no-identifier-base`.\n- `--install` will default to `undefined`.\n- `--skip-changelog` will default to `false` (`true` when `CI` environment\n  variable is `'true'`). Alternatively you can force this to false by providing\n  `--no-skip-changelog`.\n- `--skip-tag` will default to `false` (`true` when `CI` environment variable is\n  `'true'`). Alternatively you can force this to false by providing\n  `--no-skip-tag`.\n- `--mono-repo` will default to `true` when `org` is set, or `false` when it's\n  not. Alternatively you can force this to false by providing `--no-mono-repo`.\n- `--commit-message-template` will default to\n  `chore({{name}}): release {{full-name}}@{{new-version}}`\n  - `{{new-version}}` will be replaced with the new version that will be\n    published\n  - `{{name}}` will be replaced with the name provided through `-n`, `--name` or\n    the same value set in your config file\n  - `{{full-name}}` will be replaced with `{{name}}` (when `org` is not\n    provided), or `@{{org}}/{{name}}` (when `org` is provided).\n- `--tag-template` will default to `{{full-name}}@{{new-version}}` (when `org`\n  is provided) **or** `v{{new-version}}` (when `org` is not provided)\n  - `{{new-version}}` will be replaced with the new version that will be\n    published\n  - `{{name}}` will be replaced with the name provided through `-n`, `--name` or\n    the same value set in your config file\n  - `{{org}}` will be replaced with the org provided through `-o`, `--org` or\n    the same value set in your config file\n  - `{{full-name}}` will be replaced with `{{name}}` (when `org` is not\n    provided), or `@{{org}}/{{name}}` (when `org` is provided).\n- `--changelog-prepend-file` will default to `./CHANGELOG.md`.\n- `--skip-commit` will default to `[]` (an empty array).\n- `--git-host-variant` will default to `'github'`.\n- `--git-repo` will default to `undefined`.\n- `--git-token` will default to `undefined`.\n- `--push-tag` will default to `false`. Alternatively you can force this to\n  false by providing `--no-push-tag`.\n- `--github-release` will default to `false`. Alternatively you can force this\n  to false by providing `--no-github-release`.\n- `--github-release-draft` will default to `false`.\n- `--github-release-pre-release` will default to `false`.\n- `--github-release-latest` will default to `true`.\n- `--github-release-name-template` will default to an empty string.\n- `--verbose` will default to `false`.\n\n### Merging of config file, defaults and CLI provided flags\n\nWhen you have a config file the options in the file are merged with the default\noptions and with any other provided CLI flags. Which source takes highest\npriority depends on the type of the option. The priority is as follows (lower\nmeans it gets lower priority):\n\n1. CLI flags\n2. Default values\n3. Config file\n\nThis means that the CLI flags will always have the highest priority. This way\nyou can have a config file for base options, then overwrite that with CLI flags,\nsuch as in a CI environment.\n\n### Creating a GitHub release\n\nThis package provides the options `--push-tag` and `--github-release` to\nautomatically create a release on GitHub using the output from `git-cliff` as\nthe release notes. In order to use this feature you have to provide\n`--git-host-variant=github`, `--git-repo`, and `--git-token` (or set the latter\nrespective environment variables). Alternatively, if you want to run this step\nfrom a GitHub workflow you can base your step on the following example.\n\nIt is very important that if your main branch is protected by branch protection\nyou have to provide a Personal Access Token (this can be both a classic or a\nfine-grained one) for a user who can bypass branch protections as\n`token: ${{ secrets.YOUR_TOKEN_VAR }}` to `actions/checkout`!\n\n```yaml\n- name: Checkout Project\n  uses: actions/checkout@v4\n  with:\n    fetch-depth: 0\n    ref: main\n- name: Use Node.js v20\n  uses: actions/setup-node@v4\n  with:\n    node-version: 20\n    cache: yarn\n- name: Configure Git\n  run: |\n    git remote set-url origin \"https://${GITHUB_TOKEN}:x-oauth-basic@github.com/${GITHUB_REPOSITORY}.git\"\n    git config --local user.email \"${GITHUB_EMAIL}\"\n    git config --local user.name \"${GITHUB_USER}\"\n  env:\n    GITHUB_USER: github-actions[bot]\n    GITHUB_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com\n    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n- name: Bump Versions \u0026 Publish\n  run: npx @favware/cliff-jumper\n  env:\n    GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}\n```\n\nThis will create a GitHub commit, release, and tag using the GitHub Actions bot\naccount. This ensures that you do not need a\n[Personal Access Token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token)\nto create a release. The `GITHUB_TOKEN` secret is provided by GitHub Actions and\nis a token that has the necessary permissions to create a release. It also be\nnoted that classic Personal Access Tokens will not even work for this, you will\n_at least_ need a\n[Fine-Grained Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token)\nwhich is at time of writing (2024-06-03) a beta feature. You can find more\ninformation about there\n[here](https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#create-a-release).\n\nLastly, the example above assumes a cliff-jumper config file similar to the one\nin this repository ([.cliff-jumperrc](./.cliff-jumperrc)). As an alternative\nexample for a package that is not scoped by an npm/github org here is another\nexample. Replace the values in between `\u003c\u003e` with your desired values.\n\n```yaml\nname: \u003cpackage-name\u003e\npackagePath: .\npushTag: true\ngitRepo: \u003crepo-owner\u003e/\u003crepo-name\u003e\ngithubRelease: true\ngithubReleaseLatest: true\n```\n\n### Example Configuration setups\n\nFollowing are JSON examples of how you can configure this package based on\ndifferent situations.\n\n#### Scoped packages in a non-mono repo\n\n**This is for versioning `@my-org/my-package` that does not reside in a mono\nrepo, for example [sapphiredev/shapeshift][shapeshift]**\n\n```json\n{\n  \"name\": \"package-name\",\n  \"packagePath\": \".\",\n  \"org\": \"my-org\",\n  \"monoRepo\": false,\n  \"commitMessageTemplate\": \"chore(release): release {{new-version}}\",\n  \"tagTemplate\": \"v{{new-version}}\"\n}\n```\n\n#### Scoped packages in a mono repo\n\n**This is for versioning `@my-org/my-package` that resides in a mono repo, for\nexample [sapphiredev/utilities][utilities]**\n\n```json\n{\n  \"name\": \"package-name\",\n  \"org\": \"my-org\",\n  \"packagePath\": \"packages/decorators\"\n}\n```\n\n#### Non-scoped packages in a non-mono repo\n\n**This is for versioning `my-package` that does not reside in a mono repo, for\nexample\n[favware/esbuild-plugin-version-injector][esbuild-plugin-version-injector]**\n\n```json\n{\n  \"name\": \"my-package\",\n  \"packagePath\": \".\",\n  \"commitMessageTemplate\": \"chore(release): release {{new-version}}\",\n  \"tagTemplate\": \"v{{new-version}}\"\n}\n```\n\n#### Non-scoped packages in a mono repo\n\n**This is for versioning `my-package` that resides in a mono repo, for example\n[discord.js/discordjs][discordjs]**\n\n```json\n{\n  \"name\": \"my-package\",\n  \"packagePath\": \"packages/discord.js\",\n  \"tagTemplate\": \"{{new-version}}\"\n}\n```\n\n### Git Cliff commands executed\n\nThe following commands are executed by [git-cliff] after options are parsed,\ndepending on the scenario:\n\n#### In a regular repository\n\n```bash\ngit cliff --tag \"TAG_TEMPLATE_OPTION\" --prepend ./CHANGELOG.md --unreleased --config ./cliff.toml\n```\n\nFor example this could be:\n\n```bash\ngit cliff --tag \"@favware/cliff-jumper@1.0.0\" --prepend ./CHANGELOG.md --unreleased --config ./cliff.toml\n```\n\n#### In a mono repository\n\n```bash\ngit cliff --tag \"TAG_TEMPLATE_OPTION\" --prepend ./CHANGELOG.md --unreleased --config ./cliff.toml --repository RELATIVE_PATH_TO_REPOSITORY_ROOT --include-path \"PACKAGE_PATH_OPTIONS/*\"\n```\n\nFor example this could be:\n\n```bash\ngit cliff --tag \"@sapphire/utilities@1.0.0\" --prepend ./CHANGELOG.md --unreleased --config ./cliff.toml --repository ../../ --include-path \"packages/utilities/*\"\n```\n\n## Buy us some doughnuts\n\nFavware projects are and always will be open source, even if we don't get\ndonations. That being said, we know there are amazing people who may still want\nto donate just to show their appreciation. Thank you very much in advance!\n\nWe accept donations through Ko-fi, Paypal, Patreon, GitHub Sponsorships, and\nvarious cryptocurrencies. You can use the buttons below to donate through your\nmethod of choice.\n\n|   Donate With   |                      Address                      |\n| :-------------: | :-----------------------------------------------: |\n|      Ko-fi      |  [Click Here](https://donate.favware.tech/kofi)   |\n|     Patreon     | [Click Here](https://donate.favware.tech/patreon) |\n|     PayPal      | [Click Here](https://donate.favware.tech/paypal)  |\n| GitHub Sponsors |  [Click Here](https://github.com/sponsors/Favna)  |\n|     Bitcoin     |       `1E643TNif2MTh75rugepmXuq35Tck4TnE5`        |\n|    Ethereum     |   `0xF653F666903cd8739030D2721bF01095896F5D6E`    |\n|    LiteCoin     |       `LZHvBkaJqKJRa8N7Dyu41Jd1PDBAofCik6`        |\n\n## Contributors\n\nPlease make sure to read the [Contributing Guide][contributing] before making a\npull request.\n\nThank you to all the people who already contributed to Sapphire!\n\n\u003ca href=\"https://github.com/favware/cliff-jumper/graphs/contributors\"\u003e\n  \u003cimg alt=\"contributors\" src=\"https://contrib.rocks/image?repo=favware/cliff-jumper\" /\u003e\n\u003c/a\u003e\n\n[contributing]: ./.github/CONTRIBUTING.md\n[git-cliff]: https://github.com/orhun/git-cliff\n[cliff-jumper]: https://github.com/favware/cliff-jumper\n[angular-preset]:\n  https://github.com/angular/angular/blob/master/CONTRIBUTING.md#type\n[conventional-recommended-bump]:\n  https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-recommended-bump\n[shapeshift]: https://github.com/sapphiredev/shapeshift\n[utilities]:\n  https://github.com/sapphiredev/utilities/tree/main/packages/utilities\n[esbuild-plugin-version-injector]:\n  https://github.com/favware/esbuild-plugin-version-injector\n[discordjs]:\n  https://github.com/discordjs/discord.js/tree/main/packages/discord.js\n[angular-preset-custom]: ./src/commands/get-conventional-bump.ts\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffavware%2Fcliff-jumper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffavware%2Fcliff-jumper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffavware%2Fcliff-jumper/lists"}