# EXAMPLE USAGE: # # Refer for explanation to following link: # https://lefthook.dev/configuration/ # # pre-push: # jobs: # - name: packages audit # tags: # - frontend # - security # run: yarn audit # # - name: gems audit # tags: # - backend # - security # run: bundle audit # # pre-commit: # parallel: true # jobs: # - run: yarn eslint {staged_files} # glob: "*.{js,ts,jsx,tsx}" # # - name: rubocop # glob: "*.rb" # exclude: # - config/application.rb # - config/routes.rb # run: bundle exec rubocop --force-exclusion {all_files} # # - name: govet # files: git ls-files -m # glob: "*.go" # run: go vet {files} # # - script: "hello.js" # runner: node # # - script: "hello.go" # runner: go run pre-commit: # 串行执行(不设 parallel),避免与 check:type 同时运行导致低配机内存/CPU 瞬时飙升。 # lint 仅检查暂存文件并自动修复后回填,大幅降低负载;check:type 仍需全量。 jobs: - name: oxlint glob: '*.{js,jsx,ts,tsx,vue,cjs,mjs,cts,mts}' run: pnpm exec oxlint --fix --type-aware --threads=4 --no-error-on-unmatched-pattern {staged_files} stage_fixed: true - name: oxfmt glob: '*.{js,jsx,ts,tsx,vue,cjs,mjs,cts,mts,json,jsonc}' run: pnpm exec oxfmt --threads=4 --no-error-on-unmatched-pattern {staged_files} stage_fixed: true - name: eslint glob: '*.{js,jsx,ts,tsx,vue,cjs,mjs,cts,mts}' run: pnpm exec eslint --fix {staged_files} stage_fixed: true - name: stylelint glob: '*.{vue,css,less,scss}' run: pnpm exec stylelint --fix {staged_files} stage_fixed: true - name: checkType run: pnpm check:type post-merge: commands: install: run: pnpm install commit-msg: commands: commitlint: run: pnpm exec commitlint --edit $1