Философия опций
В Prettier есть несколько опций из-за истории. Но мы больше не будем их добавлять.
Читайте дальше, чтобы узнать больше.
Prettier — это не универсальный форматировщик кода, который пытается отформатировать ваш код по вашему желанию. Он имеет собственное мнение. Цитата со страницы Почему Prettier?:
Пожалуй, главнейшая причина использования Prettier — прекратить все бесконечные споры о стилях.
Тем не менее, чем больше опций в Prettier, тем дальше он отходит от этой цели. Споры о стилях превращаются в споры о том, какие опции Prettier использовать. Войны форматирования разгораются с новой силой: «Какие значения опций лучше? Почему? Правильный ли мы выбор сделали?»
И это не единственная цена, которую приходится платить за опции. Чтобы узнать больше о их недостатках, см. вопрос о сопротивлении добавлению конфигурации, который имеет больше 👍, чем любой запрос на добавление опции.
Так почему же вообще существуют какие-либо опции?
- Некоторые были добавлены в ранние дни Prettier, чтобы он вообще начал работать. 🚀
- Несколько были добавлены после «большой потребности». 🤔
- Некоторые были добавлены по причинам совместимости. 👍
К опциям, которые легче обосновать, относятся:
-
--trailing-comma es5позволяет использовать trailing commas в большинстве сред без необходимости транспиляции (trailing commas для функций были добавлены в ES2017). -
--prose-wrapважно для поддержки всех эксцентричных рендереров Markdown в дикой природе. -
--html-whitespace-sensitivityнеобходим из-за несчастных правил форматирования пробелов в HTML. -
--end-of-lineупрощает командам сохранять CRLF вне репозиториев Git. -
--quote-propsважен для расширенного использования Google Closure Compiler.
Но другие опции сложнее обосновать с задним числом: --arrow-parens, --jsx-single-quote, --bracket-same-line и --no-bracket-spacing — не те опции, которыми мы рады обладать. Они вызывают множество разговоров о колесах в командах, и нам жаль. Сложно удалить сейчас, эти опции существуют как исторический артефакт и не должны мотивировать добавление больше опций («Если такие опции существуют, почему нельзя добавить эту?»).
В течение долгого времени мы оставляли открытыми запросы на опции, чтобы позволить обсуждениям протекать и собрать отзывы. То, что мы узнали за эти годы, — это то, что очень сложно измерить потребность. Prettier сильно вырос по количеству пользователей. То, что было «большой потребностью» в прошлом, сейчас не так уж много. Реакции на GitHub и опросы в Twitter стали нерепрезентативными. Что насчет всех молчаливых пользователей? Казалось легко добавить «ещё одну» опцию. Но где мы должны были остановиться? Когда одна слишком много? Даже после добавления «этой последней опции» всегда находился «главный вопрос» в системе отслеживания задач.
Однако пришло время остановиться. Теперь, когда Prettier достаточно зрелый и используется многими организациями и проектами, этап исследований завершён. У нас достаточно уверенности, чтобы заключить, что Prettier достиг точки, где набор опций должен быть «заморожен». Запросы на опции больше не принимаются. Мы благодарны всем, кто участвовал в этом сложном путешествии.
Обратите внимание, что поскольку запросы на опции находятся вне сферы действия Prettier, они будут закрываться без обсуждения. То же самое относится к запросам на сохранение элементов форматирования ввода (например, перевода строк), так как это не что иное, как опция в замаскированном виде со всеми недостатками «настоящих» опций. Могут быть ситуации, когда добавление опции нельзя избежать из-за технической необходимости (например, совместимости), но для опций, связанных с форматированием, это окончательное решение.
© James Long and contributors
https://prettier.io/docs/en/option-philosophy