Skip to content

fix(eslint): toggle off indent rule #6

Closed
wants to merge 1 commit into from
Closed

Conversation

Luchanso
Copy link
Contributor

@Luchanso Luchanso commented Aug 1, 2019

Хочу спросить совета.

Правило indent некорректно работает с generic'ами, это видно по тому, как выравнивает Prettier:

export const myThunk = (): ThunkAction<
void,
AppState,
{},
ActionTypes
> => (dispatch, getState) => {

При отключенном правиле, prettier выравнивает правильно:

export const myThunk = (): ThunkAction<
    void,
    AppState,
    {},
    ActionTypes
> => (dispatch, getState) => {

Что делать я не знаю, есть идеи?

Copy link
Contributor

@natusvince natusvince left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не совсем понял, проблема в том что Prettier не может нормально выравнить отступы?
Думаю что решать такие вещи через отключение правила точно не стоит, тем более такого правила как indent. Хотя бы по причине того, что a) Prettier не был принят направлением/банком как стандарт форматирования и его не все используют, и б) не все проекты банка написаны на TS, чтобы отключать это правило здесь, если мы говорим про кейс связанный с дженериками.

Возможно есть смысл посмотреть отдельные опции этого правила. Их как мне помнится там достаточно много, и вероятно получится решить этот вопрос через него. Плюс заодно можно было бы посмотреть почему в этом правиле у нас использована только одна опция, которая в конфиге airbnb уже присутствует. Тоесть пробежаться по всем опциям, и если нас устраивает вариант airbnb, то вообще не использовать данное правило в нашем конфиге.

И ещё момент, как я писал выше, что раз проблема с дженериками, то есть смысл посмотреть работу этого или похожих правил на уровне TS-пресетов - https://github.com/alfa-laboratory/arui-presets-ts/blob/master/eslint.js, так как эти правила ещё совсем сырые и недоработанные. Соответственно искать необходимые правила для этих пресетов нужно будет уже здесь - https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin

@Luchanso
Copy link
Contributor Author

Luchanso commented Aug 2, 2019

@zakharow я думал arui-preset-lint - это open source либа... Тут не столько про Prettier, сколько про то, что это правило не работает вообще.

Стандартное правило airbnb indent тоже не работает, возможно где - то есть косяк с плагинами. Если оставить только стандартные правила, отрубив airbnb и indent, то всё работает.

@Luchanso
Copy link
Contributor Author

Luchanso commented Aug 2, 2019

Вообщем там происходит конфликт с prettier и никак это дело не решается... Не нашёл опции Ident, которая бы могла пофиксить дженерики 😢

В PR предлагают подключить prettier плагин, но там как раз таки indent отключён... :c
typescript-eslint/typescript-eslint#372

Ладно, буду локально отрубать это правило, prettier знает про отступы в 4 пробела.

@Luchanso Luchanso closed this Aug 2, 2019
@natusvince
Copy link
Contributor

@Luchanso Да, это open-source либа, но на практике, от слова open-source здесь только открытый репозиторий с исходниками. Проект по сути разрабатывается и дорабатывается исключительно руками банка и для банка. Количество звёзд, активных участников и тд, этому подтверждение.

По поводу не работает вообще, тоже не совсем понятно. Правило работает везде, кроме, судя по всему, в дженериках.

Тут можно попробовать ещё две вещи сделать. Собственно, зафорсить использование Prettier, как де-факто стандарт форматирования в банке, либо если проблема исключительно на уровне дженериков, то попробовать пропатчить текущее правило индентации для тс-проектов на предмет обработки отступов в дженериках. Лично я, по понятным причинам, за первый вариант.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants