是什么导致eslint-plugin-prettier在CircleCI上报告错误但在本地保持沉默?

时间:2018-07-01 07:59:54

标签: eslint circleci prettier

我必须从CircleCI 1.0迁移到2.0。在将旧配置更改为新配置后,构建失败,因为eslint-plugin-prettier报告了更漂亮的间距冲突。

MyProject-是我的GitHub存储库,它包含一个文件夹client,其中包含我要在CI上构建的所有前端代码。在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

enter image description here

新的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。在使用.prettierrc的CI上,很少文件中只有188。

1 个答案:

答案 0 :(得分:0)

我终于想通了。

我的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版本

关于语义版本,这里video很不错。