jobs
jobs
New feature
Added in lefthook 1.10.0
Jobs provide a flexible way to define tasks, supporting both commands and scripts. Jobs can be grouped for advanced flow control.
Named jobs are merged across extends and local config; unnamed jobs are appended in definition order. Groups can include other jobs with their own parallel or piped flow — glob, root, and exclude on a group apply to all nested jobs.
Example
Note
Currently, only root, glob, and exclude options are applied to group jobs. Other options must be set for each job individually. Submit a feature request if this limits your workflow.
A configuration demonstrating a piped group running in parallel with other jobs:
# lefthook.yml
pre-commit:
parallel: true
jobs:
- name: migrate
root: backend/
glob: "db/migrations/*"
group:
piped: true
jobs:
- run: bundle install
- run: rails db:migrate
- run: yarn lint --fix {staged_files}
root: frontend/
stage_fixed: true
- run: bundle exec rubocop
root: backend/
- run: golangci-lint
root: proxy/
- script: verify.sh
runner: bash
This configuration runs migrate jobs in a piped flow while other jobs execute in parallel.