cnb v1.2.4
š Create New Branch
⨠cnb is a simple and customizable CLI tool that helps you create Git branches following naming conventions, and validates (lints) branch names to ensure they follow the configured conventions.
š¬ Demo

š¦ Installation
Install the package as a dev dependency:
npm i -D cnbš ļø Usage
Creating a New Branch
- Add the following alias to your
.gitconfig:
[alias]
cnb = "!npx cnb"- Add the following script to your
package.json:
"scripts": {
"prepare": "git config --local include.path ../.gitconfig",
}- Make sure the prepare script runs before trying the new git alias. You can do this by running (only once):
npm iOr explicitly run the script:
npm run prepare- Run the following command to create a new branch with naming conventions:
git cnbThis will prompt you with a set of options to choose from (e.g., feat, fix, chore, etc.). You'll also provide a short description that will be formatted into kebab-case.
Example:
- Selected type:
feat - Description:
configure notifications
The branch created will be: feat/configure-notifications.
If your configuration requires a ticket ID (based on your config file), the flow will prompt you to enter that first.
Linting a Branch Name
You can also use cnb to lint and validate if the current branch name follows your configured conventions.
- Add the following script to your
package.json:
"scripts": {
"cnb:check": "cnb --check"
}- Run the script to lint the current branch name:
npm run cnb:checkš Configuration
You can customize the behavior of cnb by creating a configuration file in your project root called cnb.config.ts (for ES6 environments) or cnb.config.cjs (for CommonJS environments).
Configuration Options
| Option | Type | Description | Default |
|---|---|---|---|
branchTypes | string[] | The types of branches you can select (e.g., feat, fix, chore, style) | ['feat', 'fix', 'chore', 'style'] |
maxDescriptionLength | number | The maximum length allowed for the branch description. | 20 |
skipTicketId | boolean | Whether to skip the ticket ID prompt. | false |
ticketIdPrefix | string | The prefix to add to the ticket ID (e.g., JIRA-). | T- |
separator | string | The character(s) used to separate the ticket ID, branch type, and branch name (e.g., /, _). | / |
Example cnb.config.ts (ES6)
import type { CnbConfig } from 'cnb';
const config: CnbConfig = {
branchTypes: ['feat', 'fix', 'chore', 'style'],
maxDescriptionLength: 20,
skipTicketId: false,
ticketIdPrefix: 'JIRA-',
};
export default config;Example cnb.config.cjs (CommonJS)
module.exports = {
branchTypes: ['feat', 'fix', 'chore', 'style'],
maxDescriptionLength: 20,
skipTicketId: false,
ticketIdPrefix: 'JIRA-',
};š ļø Note for ES6 vs. CommonJS Users
- For ES6 users: Create your configuration file as
cnb.config.tsand useexport default. - For CommonJS users: Create your configuration file as
cnb.config.cjsand usemodule.exports.
š„ Authors
š License
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
7 years ago
7 years ago