Programmatically create git hooks, powered by Funish.
Inspired by husky and with an extremely similar implementation, but modified and supplemented with some possible details.
# npm
$ npm install -D @funish/githooks
# yarn
$ yarn add -D @funish/githooks
# pnpm
$ pnpm add -D @funish/githooks
For unified processes, we prefer to use configuration files to manage certain simple commands. This method is only suitable for fixed configuration management and githooks install
should be re-run after making changes to the configuration file.
// githooks.config.ts
import { defineGithooksConfig } from "@funish/githooks";
export default defineGithooksConfig({
hooks: {
"pre-commit": "pnpm lint staged",
"commit-msg": "pnpm lint commit-msg",
},
});
export interface GithooksConfig {
path?: string;
hooks?: {
[key in GithooksName]?: string;
};
gitConfig?: object;
extends?: string | [string];
}
We can also use it in a similar way to Husky, except that the default folder will be .githooks
.
# Install Git hooks during the post-installation phase of the lifecycle.
# Or you can use `pnpm githooks install -S prepare`.
$ pnpm githooks install -S
# Set up Git hooks.
$ pnpm githooks setup <hooks> [script]
# Uninstall Git hooks.
$ pnpm githooks uninstall
# Migrating from husky to @funish/githooks.
$ pnpm githooks migrate
$ githooks -h
USAGE githooks install|setup|uninstall|migrate
COMMANDS
install Install Git hooks.
setup Set up Git hooks.
uninstall Uninstall Git hooks.
migrate Migrating from husky to @funish/githooks.
Use githooks <command> --help for more information about a command.
See it on JSDoc.