new icon indicating copy to clipboard operation
new copied to clipboard

Найти и прикрутить линтер для Маркдауна

Open pepelsbey opened this issue 6 years ago • 8 comments

  • [x] Найти линтер и правила к нему
  • [ ] Прикрутить проверку на пре-что-нибудь и к тестам

Например, хотелось бы, чтобы списки шли всегда только так:

- Item
- Item
- Item

А не

* Item

* Item

* Item

И чтобы для курсива всегда был _italic_, а не *italic*. Ну и ещё какие-то мелочи, наверное.

pepelsbey avatar Jan 17 '19 11:01 pepelsbey

Предлагаю использовать remark-lint. Список доступных правил. Есть готовый пресет по умолчанию.

b0gok avatar Jan 17 '19 12:01 b0gok

Вариант :) Если интересно заняться, то давайте заведём это в отдельной ветке пулреквеста и там уже поймём какой список правил нужен. Можно начать с пресета и посмотреть на ошибки. Фикс там есть?

pepelsbey avatar Jan 17 '19 12:01 pepelsbey

Ок, попробую вечером разобраться как это работает. Насколько я понимаю, автофикс есть.

b0gok avatar Jan 17 '19 12:01 b0gok

Нужно разрешить inline HTML для переноса строки с помощью <br>

ishpagin avatar Jan 19 '19 14:01 ishpagin

@b0gok Нужна какая-нибудь помощь? Или просто пока руки не дошли?

FFxSquall avatar Jan 24 '19 11:01 FFxSquall

@pepelsbey Кстати в remark-lint есть пресет который построен на базе Markdown Style Guide, там вроде вполне разумные правила, разе что для italic используются *. Но его поднастроить под себя можно если большенство правил подходит.

FFxSquall avatar Jan 25 '19 13:01 FFxSquall

@FFxSquall всё хорошо кроме того, что при фиксе у меня не учитываются настройки из конфига по непонятной мне пока причине. Особо это бесит в плане настройки rule, который по умолчанию *, а не -. Но, я думаю, в воскресение я с этим разберусь.

На текущий момент конфиг у меня выглядит таким образом (расписал правила из пресетов в отдельные, чтобы было понятнее как что отрабатывает)

.remarkrc.js

module.exports = {
    settings: {
        fences: false,
        bullet: '-',
        listItemIndent: '1',
        incrementListMarker: true,
        rule: '-',
        ruleRepetition: 3,
        ruleSpaces: false,
        strong: '*',
        emphasis: '_'
    },
    plugins: {
        'remark-lint-blockquote-indentation': ['error', 2],
        'remark-lint-code-block-style': ['error', 'indented'],
        'remark-lint-emphasis-marker': ['error', '_'],
        'remark-lint-final-newline': ['error'],
        'remark-lint-hard-break-spaces': ['error'],
        'remark-lint-link-title-style': ['error', '"'],
        'remark-lint-list-item-bullet-indent': ['error'],
        'remark-lint-list-item-content-indent': ['error'],
        'remark-lint-list-item-indent': ['error', 'space'],
        'remark-lint-no-auto-link-without-protocol': ['error'],
        'remark-lint-no-blockquote-without-marker': ['error'],
        'remark-lint-no-duplicate-definitions': ['error'],
        'remark-lint-no-heading-content-indent': ['error'],
        'remark-lint-no-inline-padding': ['error'],
        'remark-lint-no-shortcut-reference-image': ['error'],
        'remark-lint-no-shortcut-reference-link': ['error'],
        'remark-lint-no-undefined-references': ['error'],
        'remark-lint-no-unused-definitions': ['error'],
        'remark-lint-ordered-list-marker-style': ['error', '.'],
        'remark-lint-ordered-list-marker-value': ['error', 'ordered'],
        'remark-lint-rule-style': ['error', '---'],
        'remark-lint-strong-marker': ['error', '*'],
        'remark-lint-unordered-list-marker-style': ['error', '-']
    }
};

b0gok avatar Jan 25 '19 13:01 b0gok

Вот почему надо такое сразу в пулреквест, а в нём уже работать совместно.

Кидайте, разберёмся :)

pepelsbey avatar Jan 25 '19 13:01 pepelsbey