eslint . --cache 的作用

eslint . --cache 的作用是 启用 ESLint 的缓存机制,以显著提升后续 lint 检查的速度


✅ 核心原理

ESLint 默认每次运行都会检查所有文件。而使用 --cache 后:

  1. 首次运行
    ESLint 会检查所有文件,并将每个文件的 lint 结果 + 文件元信息(如修改时间、内容哈希)保存到一个缓存文件中(默认为 .eslintcache)。

  2. 后续运行
    ESLint 只会重新检查 自上次以来发生变更的文件,未修改的文件直接从缓存中读取结果,跳过实际 lint 过程。


📁 缓存文件位置

  • 默认:项目根目录下的 .eslintcache 文件(隐藏文件)。
  • 可通过 --cache-location 自定义路径:
    eslint . --cache --cache-location ./temp/.eslintcache
    

✅ 主要优势

优势 说明
速度大幅提升 尤其在大型项目中,未修改的文件几乎“零成本”跳过
💻 减少 CPU 开销 避免重复解析和检查相同代码
🔄 无缝集成 CI/CD 在持续集成中,配合正确配置可加速流水线

⚠️ 注意事项

  1. 缓存基于文件修改时间或内容哈希
    如果你手动修改了文件但时间戳未变(罕见),可能误判为“未修改”。一般无需担心。

  2. 规则变更时需清除缓存
    如果你更新了 ESLint 配置(如 .eslintrc.js)或升级了插件,必须清除缓存,否则旧规则的结果会被复用,导致检查不准确。

    # 清除缓存(删除 .eslintcache 文件)
    rm .eslintcache
    # 或使用 --no-cache 强制忽略缓存
    eslint . --no-cache
    
  3. CI 环境建议禁用缓存(或谨慎使用)
    在干净的 CI 环境中,每次都是全新构建,缓存无意义。但如果你的 CI 支持工作区缓存(如 GitHub Actions 的 actions/cache),可以保留 .eslintcache 以加速后续任务。


🛠️ 实际使用示例

# 首次运行(生成缓存)
eslint . --cache

# 后续运行(仅检查改动文件,极快)
eslint . --cache

# 忽略缓存(强制全量检查)
eslint . --no-cache

# 自定义缓存位置
eslint src/ --cache --cache-location .cache/eslint/.eslintcache

✅ 最佳实践

  • 本地开发:始终使用 --cache,提升体验。
  • 提交前检查(如 pre-commit hook):使用 --cache 加速。
  • CI 流水线
    • 如果 CI 不保留工作区 → 不用 --cache
    • 如果 CI 支持缓存(如缓存 node_modules.eslintcache)→ 可以启用 --cache

🔚 总结

eslint . --cache = “只检查有变动的文件,其余走缓存”
它是 ESLint 提供的性能优化开关,适用于绝大多数本地开发场景,能极大减少等待时间。只需记住:改规则时记得清缓存!

posted @ 2025-11-16 10:09  龙陌  阅读(10)  评论(0)    收藏  举报