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-hooks
is nowgit-validator
. Usegit-validator
instead.
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/hooks
directory, which will check your code and commit messages after running thegit commit
command.git-hooks format
: Checks and formats all project files using theeslint --fix
command.git-hooks lint
: Checks all project files using theeslint
command.
{
"scripts": {
"postinstall": "git-hooks install",
"format": "git-hooks format",
"lint": "git-hooks lint"
}
}
Next, install the package:
pnpm add -D @zanminkian/git-hooks
Now 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-msg
file lints your git commit message before the commit is made. - The
pre-commit
file 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 $1
Setup 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 corepack
for 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