如何配置npm run lint作为主仓库所有PR的预提交检查任务?
配置npm run lint作为预提交及PR检查任务,避免代码合并前后的Lint问题
一、本地预提交钩子:拦截不符合规范的代码提交
通过husky和lint-staged实现只检查本次提交的文件,既高效又能提前拦截问题:
- 安装依赖
npm install husky lint-staged --save-dev
- 启用husky并添加自动初始化脚本
执行命令启用husky:
npx husky install
然后在package.json中添加prepare脚本,确保其他同事安装依赖后自动启用husky:
{ "scripts": { "prepare": "husky install", // 你的其他脚本... "lint": "eslint ." // 替换为你项目实际的lint命令 } }
- 添加预提交钩子
npx husky add .husky/pre-commit "npx lint-staged"
- 配置lint-staged规则
在package.json中添加lint-staged配置,指定要检查的文件类型和执行命令:
{ "lint-staged": { "*.{js,jsx,ts,tsx,vue}": [ // 根据你的项目文件类型调整 "npm run lint" ] } }
每次提交时,只会对本次改动的文件执行lint检查,通过才允许提交。
二、远程PR检查:强制所有PR执行Lint验证
即使有人绕过本地钩子,远程CI也能拦截不符合规范的PR,以GitHub Actions为例:
在仓库根目录创建CI配置文件
路径:.github/workflows/lint.yml写入以下配置
name: Lint Check on: pull_request: branches: [main, master] # 替换成你的主分支名称 jobs: lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 # 替换成你的项目Node.js版本 cache: 'npm' # 缓存依赖加快构建速度 - name: Install dependencies run: npm ci # 用ci确保依赖版本一致 - name: Run lint run: npm run lint
配置完成后,所有针对主分支的PR都会自动触发lint检查,检查失败的PR无法合并。
注意事项
- 确保项目已配置好Lint规则(如
.eslintrc.js、.stylelintrc等),npm run lint能正常执行并输出问题 - 先手动执行一次
npm run lint修复现有代码的Lint问题,避免钩子刚启用就出现批量失败 - 如果使用GitLab、Bitbucket等其他平台,CI配置逻辑类似,只需对应调整平台的CI语法即可
内容的提问来源于stack exchange,提问作者Loganathan P
相关产品推荐
相关产品推荐

