Что может заставить eslint-plugin-prettier сообщать об ошибке на CircleCI, но молчать локально? - PullRequest
0 голосов
/ 01 июля 2018

Мне нужно перейти с 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. В то время как на CI с .prettierrc было только 188 в нескольких файлах.

1 Ответ

0 голосов
/ 29 августа 2018

Я наконец понял это.

Файл

My package.json содержал следующую зависимость от Prettier: "prettier": "^1.11.1".

Мне пришлось нелегко узнать значение этого маленького символа ^. Позволяет установить любую версию Prettier, совместимую с 1.11.1. В моем случае на CircleCI 2.0 была установлена ​​1.14.2, которая добавляет новые функции в Prettier.

Я полагаю, что это не сломалось в CircleCI версии 1.0 и локально из-за кэшированных узловых модулей, которые содержали более ранние версии Prettier, совместимые с 1.11.1

Вот хорошее видео о семантическом управлении версиями.

...