---
title: "在 GitHub Actions 中让 Rubocop 与 ESLint 忽略 bundled gems"
description: "Rails 项目在 GitHub actions 中通常会把 gems 安装到 vendor 目录，方便在后续运行时使用缓存。"
canonical: https://oozou.com/til/ignore-bundled-gems-for-rubocop-and-eslint-in-github-actions-154
locale: zh-Hans
date: 2022-01-19
topic: ruby-on-rails
---

# 在 GitHub Actions 中让 Rubocop 与 ESLint 忽略 bundled gems

> Rails 项目在 GitHub actions 中通常会把 gems 安装到 vendor 目录，方便在后续运行时使用缓存。

Published: 2022-01-19 · Topic: [ruby on rails](https://oozou.com/zh-Hans/til-topics/ruby-on-rails) ([markdown](https://oozou.com/zh-Hans/til-topics/ruby-on-rails.md))

Rails 项目在 GitHub actions 中通常会把 gems 安装到 vendor 目录，方便在后续运行时使用缓存。

如果你在 action 里跑代码 linter，就需要排除 `vendor/bundle/\*`，以免出现误报  

ESLint 可以通过 ignorePatterns 来配置

```json
// ./.eslintrc.json
{
  "ignorePatterns": [
    "vendor/bundle/*"
  ]
}
```

Rubocop 则可以通过 AllCops 配置来排除

```yaml
# ./.rubocop.yml
AllCops:
  Exclude:
    - 'vendor/**/*'
```

# 在代码 linter 中忽略 bundled gems 的重要性

在软件开发中，保持较高的代码质量至关重要。代码 linter 通过静态代码分析来帮你实现这一点：它能发现潜在错误，并强制统一的代码风格。不过，在 GitHub Actions 这类持续集成环境里使用 linter 时，配置得当、避免误报同样重要。

Bundled gems 通常放在 vendor 目录下，属于外部代码依赖，如果不好好排除掉，就可能被代码 linter 挑出问题。忽略这些目录可以让 linter 专注于你自己的源代码，而不是外部库，从而保证代码分析结果的准确性。

# 设置 linter 排除 bundled gems

如果是使用 ESLint 的 JavaScript 项目，你可以在 .eslintrc.json 文件里用 ignorePatterns 配置，让 linter 忽略 vendor/bundle/\* 目录。这样就只会检查你自己的代码，在没有多余干扰的前提下提升代码质量。

```
// ./.eslintrc.json
{
  "ignorePatterns": [
    "vendor/bundle/*"
  ]
}
```

同样，如果是使用 Rubocop 的 Ruby 项目，你可以在 .rubocop.yml 配置文件的 AllCops 下面加一条 Exclude 规则来排除 vendor 目录。这能让静态代码分析聚焦在你真正的源代码上。

```
# ./.rubocop.yml
AllCops:
  Exclude:
    - 'vendor/**/*'
```

通过配置代码 linter 排除 bundled gems，你可以在避免静态代码分析误报的同时，保持高标准的代码质量。  

[#RUBY-ON-RAILS](https://oozou.com/til-topics/ruby-on-rails)

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/zh-Hans/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
