GitHub - Arkweid/lefthook: Fast and powerful Git hooks manager for any type of p...
source link: https://github.com/Arkweid/lefthook
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Lefthook
The fastest polyglot Git hooks manager out there
Fast and powerful Git hooks manager for Node.js, Ruby or any other type of projects.
- Fast. It is written in Go. Can run commands in parallel.
- Powerful. With a few lines in the config you can check only the changed files on
pre-push
hook. - Simple. It is single dependency-free binary which can work in any environment.
# On `git push` lefthook will run spelling and links check for all of the changed files pre-push: parallel: true commands: spelling: files: git diff --name-only HEAD @{push} glob: "*.md" run: npx yaspeller {files} check-links: files: git diff --name-only HEAD @{push} glob: "*.md" run: npx markdown-link-check {files}
Usage
Choose your environment:
Then you can find all Lefthook features in the full guide and explore wiki.
Why Lefthook
-
Parallel execution
If you want more speed. Example
pre-push: parallel: true
-
Flexible list of files
If you want your own list. Custom and prebuilt examples.
pre-commit: commands: frontend-linter: run: yarn eslint {staged_files} backend-linter: run: bundle exec rubocop {all_files} frontend-style: files: git diff --name-only HEAD @{push} run: yarn stylelint {files}
-
Glob and regexp filtres
If you want to filter list of files.
pre-commit: commands: backend-linter: glob: "*.{rb}" # glob filter exclude: "application.rb|routes.rb" # regexp filter run: bundle exec rubocop {all_files}
-
Run scripts
If oneline commands are not enough, you can execute files. Example.
commit-msg: scripts: "template_checker": runner: bash
-
Tags
If you want to control a group of commands. Example.
pre-push: commands: packages-audit: tags: frontend security run: yarn audit gems-audit: tags: backend security run: bundle audit
-
Support Docker
If you are in the Docker environment. Example.
pre-commit: scripts: "good_job.js": runner: docker exec -it --rm <container_id_or_name> {cmd}
-
Local config
If you a frontend/backend developer and want to skip unnecessary commands or override something into Docker. Description.
# lefthook-local.yml pre-push: exclude_tags: - frontend commands: packages-audit: skip: true
-
Direct control
If you want to run hooks group directly.
$ lefthook run pre-commit
-
Your own tasks
If you want to run specific group of commands directly.
fixer: commands: ruby-fixer: run: bundle exec rubocop --safe-auto-correct {staged_files} js-fixer: run: yarn eslint --fix {staged_files}
$ lefthook run fixer
Table of content:
Guides
Migrate from
Examples
Benchmarks
Comparison list
Articles
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK