You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用Husky + lint-staged在提交前检测Console.log并阻止提交?

基于husky + lint-staged实现pre-commit阶段拦截含console.log的提交

完全可以实现,目前主流有两种适配不同场景的方案:

前置依赖安装(未装依赖时可参考)

如果项目还未安装配置husky和lint-staged,执行以下命令完成基础配置:

# 安装依赖
npm install husky lint-staged -D
# 初始化husky
npx husky install
# 新增pre-commit钩子,执行时调用lint-staged
npx husky add .husky/pre-commit "npx lint-staged"
# 配置prepare脚本,团队成员拉代码install后自动启用husky钩子
npm set-script prepare "husky install"

方案一:配合ESLint实现(推荐,项目已接入ESLint时使用)

直接用ESLint内置的no-console规则即可实现检测,无需额外开发脚本:

  • 打开项目ESLint配置文件(.eslintrc.js、.eslintrc.json等),在rules字段中添加如下配置:
    rules: {
      // error级别:遇到console语句直接抛出错误,中断校验流程
      "no-console": "error"
      // 若允许保留console.warn、console.error,仅拦截console.log可改为下面的配置
      // "no-console": ["error", { allow: ["warn", "error"] }]
    }
    
  • 在package.json中添加lint-staged配置:
    {
      "lint-staged": {
        "*.{js,jsx,ts,tsx}": ["eslint --fix"]
      }
    }
    

配置完成后,pre-commit阶段ESLint检测到代码中存在不符合规则的console语句时,会抛出错误并中断提交流程。

方案二:自定义校验脚本(未接入ESLint时使用)

如果项目没有接入ESLint,无需为了该需求单独接入ESLint,编写简单的自定义脚本即可实现检测:

  • 在项目根目录新建scripts/check-console.js文件,写入以下内容:
    const fs = require('fs')
    // 取lint-staged传入的暂存区待检测文件列表
    const checkFiles = process.argv.slice(2)
    let hasIllegalConsole = false
    
    checkFiles.forEach(filePath => {
      const fileContent = fs.readFileSync(filePath, 'utf8')
      // 可按需修改正则匹配规则,当前为匹配所有console调用
      if (/console\.(log|info|warn|error)/.test(fileContent)) {
        console.error(`❌ 文件 ${filePath} 中存在console语句,请删除后再提交`)
        hasIllegalConsole = true
      }
    })
    
    // 存在非法console时返回非零状态码,中断提交
    if (hasIllegalConsole) process.exit(1)
    
  • 在package.json中修改lint-staged配置,调用自定义脚本:
    {
      "lint-staged": {
        "*.{js,jsx,ts,tsx}": ["node scripts/check-console.js"]
      }
    }
    

特殊场景适配

如果部分console语句是业务需要保留的,可以添加规则跳过检测:

  • 用ESLint方案时,在对应console语句上方添加注释// eslint-disable-next-line no-console即可跳过当前行检测
  • 用自定义脚本方案时,可以修改正则逻辑,匹配到对应跳过注释时不抛出错误

内容的提问来源于stack exchange,提问作者Noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:12:01