diff --git a/.husky/pre-commit b/.husky/pre-commit index d0a7784..5ca943d 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1,5 @@ -npx lint-staged \ No newline at end of file +# 后台运行类型检查,结果输出到 stderr 但不阻塞提交 +npx tsc --noEmit & + +# 前台运行 lint-staged(自动修复 + 格式化) +npx lint-staged diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100644 index 0000000..e703b2b --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,6 @@ +# pre-push: 严格检查,阻塞有问题的代码推送到远程 +# 类型检查 +npx tsc --noEmit + +# ESLint 严格检查(不允许 warning) +npx eslint . --max-warnings=0 diff --git a/lint-staged.config.mjs b/lint-staged.config.mjs index 12b9d01..b84fec8 100644 --- a/lint-staged.config.mjs +++ b/lint-staged.config.mjs @@ -1,4 +1,12 @@ +/* global process */ + +const isCI = process.env.CI === 'true'; + export default { - '*.{ts,tsx,js,jsx,mjs}': ['eslint --fix --max-warnings=0 --no-warn-ignored', 'prettier --write'], + '*.{ts,tsx,js,jsx,mjs}': [ + 'eslint --fix --no-warn-ignored', + ...(isCI ? ['eslint --max-warnings=0'] : []), + 'prettier --write', + ], '*.{json,css,scss,md}': ['prettier --write'], };