eslint-plugin-prettier在CircleCI上报错但在本地环境中无声的原因是什么?

11

我需要从CircleCI 1.0迁移到2.0。在将旧配置更改为新配置后,构建失败了,因为 eslint-plugin-prettier 报告了prettier空格违规。

MyProject是我的GitHub存储库,其中包含要在CI上构建的所有前端代码的client文件夹。 在client文件夹中有.eslintrc.json文件。

...
"extends": ["airbnb", "prettier"],
"plugins": ["prettier"],
...

.prettierrc

{
    "tabWidth": 4,
    "trailingComma": "all",
    "singleQuote": true
}

.gitattributes(我使用Windows 10操作系统)如下所示:

*.js text eol=crlf
*.jsx text eol=crlf

当然还有 package.json

输入图像描述

新的 CircleCI 配置:

version: 2

jobs:
  build:
    working_directory: ~/MyProject
    docker:
      - image: circleci/node:6.14.3-jessie-browsers
    steps:
      - checkout
      - run:
          name: Install Packages
          command: npm install
          working_directory: client
      - run:
          name: Test
          command: npm run validate
          working_directory: client

旧的 CircleCI 配置:

## Customize dependencies
machine:
  node:
    version: 6.1.0

 # Remove cache before new build. It takes much time
 # but fixing a build which is broken long time ago (and not detected because of cache)  
 # is even more time consuming
dependencies:
  post:
   - rm -r ~/.npm 

## Customize test commands
test:
  override:
    - npm run validate

general:
  build_dir: client

编译失败,原因是代码检查问题(全部是关于空格数量的):

enter image description here

那么,这些错误可能是什么原因呢?我已经没有任何想法了。起初,我以为是因为找不到.prettierrc文件导致的。但是当我删除它进行实验并在本地运行时,所有文件中都出现了超过1000个错误。而在CI上,有.prettierrc文件的情况下只有在少数文件中有188个错误。


你解决过这个问题吗?我们遇到了几乎相同的问题。本地配置+pretty-quick在本地的行为与CircleCI上的linting不同。 - veksen
1
不幸的是,我也在CircleCI论坛上询问过,但没有成功。我们仍在使用v.1。不确定在它停用时该怎么办。我喜欢Prettier,不想放弃它... - Oleksandr Nechai
2个回答

13

我终于搞清楚了。

我的 package.json 文件里包含了对 Prettier 的以下依赖: "prettier": "^1.11.1"

我不得不通过艰苦的方式学习这个小符号 ^ 的含义。它允许安装与 1.11.1 兼容的任何版本的 Prettier。在我的情况下,在 CircleCI 2.0 上它安装了 1.14.2,为 Prettier 添加了新功能。

我相信它没有在 CircleCI 版本 1.0 和本地环境中崩溃,因为缓存的 node_modules 包含早期与 1.11.1 兼容的 Prettier 版本。

关于语义化版本控制,这里有一个不错的视频


这对我也是如此。这是一个非常烦人的问题需要解决。感谢您的帮助。为什么在 yarn add 中默认使用 ^? - Kirill Kovalevskiy

0
在我的情况下,问题出在模式上。 eslint src/**/*.{ts,tsx} 命令在 GitLab CI 中失败了,但本地没有问题。
当我将其更改为 eslint src 时,本地和 CI 都失败了。

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