JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 9
  • Score
    100M100P100Q48782F
  • License MIT

A bundle of opinionated git hooks. All in one!

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 now git-validator. Use git-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 the git commit command.
    • git-hooks format: Checks and formats all project files using the eslint --fix command.
    • git-hooks lint: Checks all project files using the eslint 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 (use npm 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