8

我必须从 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

在此处输入图像描述

新的 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

由于 linting 问题,构建失败(都是关于空格的数量):

在此处输入图像描述

那么,什么可能导致这些错误?我在这里没有想法。我首先认为这可能是因为 .prettierrc 没有找到。但是,当我将它删除以进行实验并在本地运行时,我在所有文件中发现错误总数超过 1000 个。而在带有 .prettierrc 的 CI 上,少数文件中只有 188 个。

4

1 回答 1

11

我终于想通了。

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

我不得不努力学习这个小符号的含义^。它允许安装任何与1.11.1. 在我的 CircleCI 2.0 上,它安装了它,为 Prettier1.14.2添加了新功能。

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

这是关于语义版本控制的好视频。

于 2018-08-29T10:17:41.213 回答