Command-line utility for creating standardized Git commit messages through interactive prompts and adapter system.
npx @tessl/cli install tessl/npm-commitizen@4.3.0Commitizen is a command-line utility that provides an interactive way to create standardized Git commit messages following conventional commit message formats. It prompts users to fill out required commit fields at commit time, ensuring consistency across projects and teams through an adapter system.
npm install -g commitizenFor programmatic usage:
const commitizen = require('commitizen');
const { adapter, cache, commit, configLoader, init, staging } = commitizen;ES6 modules:
import { adapter, cache, commit, configLoader, init, staging } from 'commitizen';# Install globally
npm install -g commitizen
# Initialize adapter in project
commitizen init cz-conventional-changelog --save-dev --save-exact
# Use for commits (after initialization)
git add .
cz
# or
git czconst { init, commit, adapter } = require('commitizen');
const inquirer = require('inquirer');
// Initialize adapter
init(process.cwd(), 'cz-conventional-changelog', {
saveDev: true,
saveExact: true
});
// Use commit functionality
const prompter = adapter.getPrompter('cz-conventional-changelog');
commit(inquirer, process.cwd(), prompter, {}, (error) => {
if (error) console.error(error);
else console.log('Commit successful');
});Commitizen is built around several key components:
cz, git-cz, commitizen) for interactive commit creationPrimary CLI commands for interactive commit creation and adapter management.
// CLI Bootstrap Functions
function bootstrap(environment?: object, argv?: string[]): void;System for installing, configuring, and loading commit message format adapters.
function getPrompter(adapterPath: string): Function;
function resolveAdapterPath(adapterPath: string): string;
function addPathToAdapterConfig(cliPath: string, repoPath: string, adapterNpmName: string): void;
function generateInstallAdapterCommand(stringMappings: Map, adapterNpmName: string, packageManager?: string): string;Core commit functionality with interactive prompting, caching, and retry support.
function commit(inquirer: object, repoPath: string, prompter: Function, options: CommitOptions, done: Function): void;
interface CommitOptions {
args?: string[];
disableAppendPaths?: boolean;
emitData?: boolean;
quiet?: boolean;
retryLastCommit?: boolean;
hookMode?: boolean;
}Adapter installation and project configuration setup.
function init(repoPath: string, adapterNpmName: string, options?: InitOptions): void;
interface InitOptions {
save?: boolean;
saveDev?: boolean;
saveExact?: boolean;
force?: boolean;
yarn?: boolean;
dev?: boolean;
exact?: boolean;
pnpm?: boolean;
includeCommitizen?: boolean;
}Multi-source configuration resolution with support for various file formats.
function load(config?: object, cwd?: string): object | undefined;
function loader(configs: string[], config?: object, cwd?: string): object | undefined;Commit message caching for retry functionality and recovery from failed commits.
function getCacheValueSync(cachePath: string, repoPath: string): object | undefined;
function setCacheValueSync(cachePath: string, key: string, value: object): object;
function readCacheSync(cachePath: string): object;Git command abstractions and staging area utilities.
function commit(repoPath: string, message: string, options: GitCommitOptions, done: Function): void;
function isClean(repoPath: string, done: Function, stageAllFiles?: boolean): void;
interface GitCommitOptions {
args?: string[];
quiet?: boolean;
hookMode?: boolean;
}Git staging area validation and management utilities.
function isClean(repoPath: string, done: Function, stageAllFiles?: boolean): void;// Core configuration structure
interface CommitizenConfig {
path: string;
}
// Error callback signature
type ErrorCallback = (error: Error | null, ...args: any[]) => void;
// Prompter function signature
type PrompterFunction = (inquirer: object, callback: (error: Error | null, template: string, overrideOptions?: object) => void) => void;
// Package manager types
type PackageManager = 'npm' | 'yarn' | 'pnpm';
// Install flags mapping
interface InstallFlags {
save?: boolean;
dev?: boolean;
saveDev?: boolean;
exact?: boolean;
saveExact?: boolean;
force?: boolean;
}