eslint . --cache 的作用
eslint . --cache 的作用是 启用 ESLint 的缓存机制,以显著提升后续 lint 检查的速度。
✅ 核心原理
ESLint 默认每次运行都会检查所有文件。而使用 --cache 后:
-
首次运行:
ESLint 会检查所有文件,并将每个文件的 lint 结果 + 文件元信息(如修改时间、内容哈希)保存到一个缓存文件中(默认为.eslintcache)。 -
后续运行:
ESLint 只会重新检查 自上次以来发生变更的文件,未修改的文件直接从缓存中读取结果,跳过实际 lint 过程。
📁 缓存文件位置
- 默认:项目根目录下的
.eslintcache文件(隐藏文件)。 - 可通过
--cache-location自定义路径:eslint . --cache --cache-location ./temp/.eslintcache
✅ 主要优势
| 优势 | 说明 |
|---|---|
| ⚡ 速度大幅提升 | 尤其在大型项目中,未修改的文件几乎“零成本”跳过 |
| 💻 减少 CPU 开销 | 避免重复解析和检查相同代码 |
| 🔄 无缝集成 CI/CD | 在持续集成中,配合正确配置可加速流水线 |
⚠️ 注意事项
-
缓存基于文件修改时间或内容哈希
如果你手动修改了文件但时间戳未变(罕见),可能误判为“未修改”。一般无需担心。 -
规则变更时需清除缓存
如果你更新了 ESLint 配置(如.eslintrc.js)或升级了插件,必须清除缓存,否则旧规则的结果会被复用,导致检查不准确。# 清除缓存(删除 .eslintcache 文件) rm .eslintcache # 或使用 --no-cache 强制忽略缓存 eslint . --no-cache -
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
- 如果 CI 不保留工作区 → 不用
🔚 总结
eslint . --cache= “只检查有变动的文件,其余走缓存”
它是 ESLint 提供的性能优化开关,适用于绝大多数本地开发场景,能极大减少等待时间。只需记住:改规则时记得清缓存!

浙公网安备 33010602011771号