@zanminkian/git-hooks v0.3.2
@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
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago