左脚
一个为Node.js,Ruby,Python等多类项目的Git钩子管理器.
- 快点. 它用"去"写,可以并行运行命令.
- 权相相相. 它允许控制执行和将文件传递给命令.
- 很简单. 它是单一的无依赖二进制,可以在任何环境中工作.
📖 导言员额
左脚 由 邪恶的火星人美国的设计和工程顾问 开发工具、AI和网络安全启动。 。 。 .
安装
与 走开 (>= 1.27):
go install github.com/evilmartians/lefthook/[email protected]
- 或者作为一个工具
go get -tool github.com/evilmartians/lefthook/[email protected]
与 国家预防机制数字 :
npm install lefthook --save-dev
对于 鲁比数字 :
gem install lefthook
对于 蟒数字 :
pipx install lefthook
安装指南 以更多方式安装左上角 : 时间, (中文(简体) ), 酿酒, (中文(简体) ), 旋转还有其他.
使用量
配置你的钩子,安装一次然后忘记它:依靠下面的魔法.
TL; DR 数据
# Configure your hooks
vim lefthook.yml
# Install them to the git project
lefthook install
# Enjoy your work with git
git add -A && git commit -m '...'
更多细节
为什么是左撇子
-
并行执行
让你更快. 文档
pre-push:
parallel: true
-
文件的灵活列表
如果你想要自己的名单. 自定义 财务报告和审定财务报表 预建 实例.
pre-commit:
jobs:
- name: lint frontend
run: yarn eslint {staged_files}
- name: lint backend
run: bundle exec rubocop --force-exclusion -- {all_files}
- name: stylelint frontend
files: git diff --name-only HEAD @{push}
run: yarn stylelint {files}
-
光标和正则表达式过滤器
如果您想要过滤文件列表 。 您可以找到更多 Glob 模式示例 这里。 。 。 .
pre-commit:
jobs:
- name: lint backend
glob: "*.rb" # glob filter
exclude:
- "*/application.rb"
- "*/routes.rb"
run: bundle exec rubocop --force-exclusion -- {all_files}
-
在子目录中执行
如果您要在相对路径中执行命令
pre-commit:
jobs:
- name: lint backend
root: "api/" # Careful to have only trailing slash
glob: "*.rb" # glob filter
run: bundle exec rubocop -- {all_files}
-
运行脚本
如果单行命令不够,可以执行文件. 文档
commit-msg:
jobs:
- script: "template_checker"
runner: bash
-
标记
如果你想控制一组命令. 文档
pre-push:
jobs:
- name: audit packages
tags:
- frontend
- linters
run: yarn lint
- name: audit gems
tags:
- backend
- security
run: bundle audit
-
支持嵌入器
若入多克环境. 文档
pre-commit:
jobs:
- script: "good_job.js"
runner: docker run -it --rm <container_id_or_name> {cmd}
-
本地配置
如果您是前端/后端的开发者, 想要跳过不必要的命令或覆盖 Docker 中的东西 . 文档
# lefthook-local.yml
pre-push:
exclude_tags:
- frontend
jobs:
- name: audit packages
skip: true
-
直接控制
如果你想直接运行钩子组.
$ lefthook run pre-commit
-
你的任务
如果您想要直接运行特定的一组命令 .
fixer:
jobs:
- run: bundle exec rubocop --force-exclusion --safe-auto-correct -- {staged_files}
- run: yarn eslint --fix {staged_files}
$ lefthook run fixer
-
控制输出
你可以控制左侧的指纹 产出 选项.
output:
- execution
- failure
指南
- 安装节点.js
- 用 Ruby 安装
- 安装 Homebrew
- 用 Winget 安装
- 为基于 Debian 的 Linux 安装
- 为基于 RPM 的 Linux 安装
- 为 Arch Linux 安装
- 为 Alpine Linux 安装
- 使用量
- 配置
实例
检查 实例