Яка різниця між prettier-eslint, eslint-plugin-prettier та eslint-config-prettier?


93

Я хочу використовувати Prettier та ESLint разом, але я пережив деякі конфлікти, просто використовуючи їх один за одним. Я бачу, що є ці три пакети, які, здається, дозволяють використовувати їх у тандемі:

  • prettier-eslint
  • eslint-plugin-prettier
  • eslint-config-prettier

Однак я не впевнений, який із них використовувати, оскільки всі ці назви пакунків містять eslintі prettier.

Що мені використовувати?

Відповіді:


208

ESLint містить багато правил і ті, які форматування пов'язаних можуть конфліктувати з покращала, такі як arrow-parens, space-before-function-parenі т.д. Таким чином , використовуючи їх разом викличе деякі проблеми. Наступні інструменти створені для спільного використання ESLint та Prettier.

Я написав порівняння у табличному форматі в суті, оскільки Stack Overflow не підтримує форматування таблиці. Перевірте це, якщо ви віддаєте перевагу більшій організації.

введіть тут опис зображення

prettier-eslint: prettierПотім запускається eslint --fixна коді. eslintзазвичай має автоматичні виправлення для правил форматування, що стосуються форматування, і eslint --fixзможе виправити суперечливе форматування, представлене Prettier. Вам не потрібно буде запускати prettierкоманду окремо.

eslint-plugin-prettier: Це плагін ESLint, тобто він містить реалізацію додаткових правил, які ESLint перевірятиме. Цей плагін використовує Prettier під капотом і порушує проблеми, коли ваш код відрізняється від очікуваного виходу Prettier. Ці проблеми можна автоматично виправити за допомогою --fix. За допомогою цього плагіна вам не потрібно запускати prettierкоманду окремо, вона виконується як частина плагіна. Цей плагін не вимикає правила, пов’язані з форматуванням, і вам потрібно буде їх вимкнути, якщо ви бачите конфлікти для таких правил вручну або через eslint-config-prettier.

eslint-config-prettier: Це конфігурація ESLint, і вона містить конфігурації для правил (незалежно від того, ввімкнено, вимкнено певні правила чи спеціальні конфігурації). Ця конфігурація дозволяє використовувати Prettier з іншими конфігураціями ESLint, наприклад eslint-config-airbnb, вимикаючи правила, пов’язані з форматуванням, які можуть конфліктувати з Prettier. За допомогою цієї конфігурації вам не потрібно використовувати, prettier-eslintоскільки ESLint не скаржиться після того, як Prettier відформатує ваш код. Однак вам потрібно буде виконати prettierкоманду окремо.

Сподіваюся, це підсумовує відмінності.

Оновлення: Рекомендована практика дозволяти Prettier обробляти форматування та ESLint для неформатування, prettier-eslintце не в тому ж напрямку, що і ця практика, отже, prettier-eslintбільше не рекомендується. Можна використовувати eslint-plugin-prettierі eslint-config-prettierразом.


У мене є файл eslintrc, в якому я маю власні правила. тобто no-extra-semi, однак запущений eslint --fix з красивішим вимагає крапки з комою, чи потрібен мені окремий файл правил для красивішого?
jasan

2
Просто коментар щодо загальної різниці між плагінами eslint та конфігураціями, тому що я відчував, що саме цього мені не вистачає: плагіни визначають нові правила eslint, а конфігури встановлюють, чи більше, чи ні (і як) правила повинні застосовуватися.
laugri

1
З eslint-config-prettier, чому нам потрібно бігти красивішими? Хіба не eslint --fixвідформатувати код так само, як красивіше?
Mateo Hrastnik

@MateoHrastnik ESLint не справляється з усіма можливими проблемами форматування. Посилайтеся на цю тему - github.com/prettier/prettier-eslint/issues/101
Яншун Тей

10
Настав 2019 рік, і це все ще найкраще пояснення, яке я знаходжу, набагато краще, ніж офіційне. Ви можете додати, що красивіший еслінт більше не рекомендується. І останні 2 зараз можуть працювати разом.
Fate Riddle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.