ESLint在Github Actions中不会破坏构建

6
我是第一次使用Github Actions。我正在使用Vue-CLI,并希望创建一个作业,在push时对我的文件进行lint,并在出现ESLint'errors时中断构建过程。
这是我的package.json的脚本:
"scripts": {
  "serve": "vue-cli-service serve",
  "build": "vue-cli-service build",
  "lint": "vue-cli-service lint",
},

这是我的.github/workflows/main.yml文件:

name: Lint files on push

on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install modules
        run: npm install
      - name: Run ESLint
        run: npm run lint

我正在使用这个模板作为灵感。如下图所示。任务已成功完成,但它没有破坏构建或修复语言规范问题。我做错了什么?

enter image description here

2个回答

9

您可以指定--no-fix,以便它不会自动修复错误/警告并将--max-warnings设置为0,因为您的项目中似乎有一个警告,并希望将其视为错误。

在您的 package.json 文件中:

{
  ....
  "scripts": {
    "lint": "vue-cli-service lint --no-fix --max-warnings 0",
    ....
  }
}

查看文档

日志输出:

warning: Delete `⏎········` (prettier/prettier) at src/components/QuestionInfo.vue:5:25:
  3 |     <div class="question_card container">
  4 |       <BaseTag
> 5 |         :class="['tag', 
    |                         ^
  6 |         'p-5', 'pb-0', 'pl-0', 'ml-5']"
  7 |         :tag-name="this.tag"
  8 |       />


1 warning found.
1 warning potentially fixable with the `--fix` option.
Eslint found too many warnings (maximum: 0).

谢谢你的回答。我已经找到了一种方法来检查文件并提交它们。你认为在推送时修复它们更好,还是只显示错误,让开发人员解决它们?所以基本上什么最好?你的解决方案只有错误还是像我的一样自动修复它们?我真的不知道这里应该考虑什么最佳实践? - Manuel Abascal
我猜警告可以自动修复,而错误无论如何都会导致构建失败。 - Manuel Abascal
1
@ManuelAbascal 如果你在 Github Actions 中提交并推送代码,那么你需要记得在工作流程完成后每次都要拉取。如果你忘记拉取,可能会导致烦人的合并问题,因为你的 Github Action 可能已经修改了任何文件,而你仍然在同一分支(相同文件)上工作。我认为这取决于你的工作方式,如果只是在特定的分支上工作,并且只有你在该分支上工作,那么这可能不是一个好主意,但如果许多人在同一分支上工作,那么这可能不是一个好主意。 - Bertrand Martel
1
真的很有趣,因为那正是我刚刚经历的!我想由于你提到的原因,最好不要自动修复警告。对于团队协作来说,这可能会让新开发人员感到困惑。我将使用您的解决方案,如果我想要警告自动修复,我可以随时为它们使用 githooks。谢谢!@Bertrand - Manuel Abascal
1
@ManuelAbascal 不用谢。我已经制作了一个covid19纽约爬虫,它可以爬取网站并自动将结果推送到Github action的同一分支中的特定文件夹,但我经常忘记在推送之前拉取(尽管我是该项目的唯一工作者)。 - Bertrand Martel
1
哈哈,我认为通常最好不要在 CI 中自动修复!我已经给你的项目点了个星!;) - Manuel Abascal

0

我找到了问题所在。我正在对文件进行代码检查,但由于我没有提交和推送新更改,因此无法在我的PR中看到更改。

我已经重构了我的Github Action工作流程,以便对文件进行代码检查并将它们推送到存储库中。

name: Lint files on push

on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Installing node_modules
        run: npm install
      - name: Running ESLint
        run: npm run lint
      - name: Setting Github user.email
        run: git config --global user.email "<github-email-goes-here>"
      - name: Setting Github user.name
        run: git config --global user.name "<github-name-goes-here>"
      - name: Adding fixes for committing
        run: git add .
      - name: Committing ESLint fixes
        run: git commit -m "fixed ESLint issues"
      - name: Pushing fixes to current PR branch
        run: git push

您可以在终端中输入 git config --global user.emailgit config --global user.name 来获取您的 user.emailuser.name


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接