Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@zanminkian/git-hooks) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@zanminkian/git-hooks
@zanminkian/git-hooksis nowgit-validator. Usegit-validatorinstead.
This is a bundle of opinionated git hooks, all in one!
Replace husky, eslint, lint-staged, and commitlint in your project with this npm package.
Features
- Unified package: Just ONE npm package to install replacing multiple.
- Simple to use: Only two steps required; setting up scripts and installation.
- Zero Configuration: Sensible default settings suitable for enterprise apps.
Usage
Set up the following scripts in your package.json:
git-hooks install: Installs hook files to{PROJECT_ROOT}/.git/hooksdirectory, which will check your code and commit messages after running thegit commitcommand.git-hooks format: Checks and formats all project files using theeslint --fixcommand.git-hooks lint: Checks all project files using theeslintcommand.
{
"scripts": {
"postinstall": "git-hooks install",
"format": "git-hooks format",
"lint": "git-hooks lint"
}
}Next, install the package:
pnpm add -D @zanminkian/git-hooksNow you can commit code to your project. Invalid code or commit messages will be automatically blocked.
How it Works
Running git-hooks install writes commit-msg and pre-commit files to the {PROJECT_ROOT}/.git/hooks directory.
- The
commit-msgfile lints your git commit message before the commit is made. - The
pre-commitfile lints your staged code before the commit is made.
Advanced Usage
Working with husky
This library can work as a standalone package. However, if you have Husky 5 or a later version installed, you'll need to manually add .husky/commit-msg and .husky/pre-commit, as Husky will ignore the .git/hooks/commit-msg and .git/hooks/pre-commit:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
.git/hooks/commit-msg $1#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
.git/hooks/pre-commit $1Setup pre-push Stage
Running git-hooks install writes commit-msg and pre-commit files only. As git pre-push stage is widely used, you can run git-hooks install --pre-push <cmd> to setup git pre-push stage additionally.
{
"scripts": {
"postinstall": "git-hooks install --pre-push 'npm run test'"
}
}Customizing eslint Config
Under the hood, we use eslint to lint and format code. If you want to use a different eslint config, add your own .eslintrc.js at the root of your project. Here's an example:
module.exports = {
rules: {
// write your rules here
}
}Contributing
- Clone this repository.
- Enable Corepack using
corepack enable(usenpm i -g corepackfor Node.js < 16.10). - Install dependencies using
pnpm install. - Start coding and submit your PR.
Show your support
Give a ⭐️ if this project helped you!
License
MIT