Skip to content
This repository has been archived by the owner on May 31, 2019. It is now read-only.

Добавляет линтер для маркдауна #94

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

b0gok
Copy link

@b0gok b0gok commented Jan 26, 2019

Closes #61

Сделано

Для линтинга маркдауна добавлен пакет remark-lint, который использует под капотом remark. Для автоматического исправления используется remark-stringify.

Конфигурация для remark-lint находится в файле .remarkrc.js.
Раздел plugins является аналогом раздела rules в eslint

Для автоматического исправления части ошибок используется команда

remark . -o

В результате которой запускается remark-stringify
Подробнее

Сейчас добавлены 2 набора правил:

Для понимания что конкретно там за правила используются они расписаны в .remarkrc.js.

Проблемы

  • При вызове команды lint-md:fix не учитываются настройки из .remarkrc.js для remark-stringify

Дополнительно

Можно исправлять js внутри маркдауна с помощью eslint-plugin-markdown

package.json Outdated Show resolved Hide resolved
@pepelsbey
Copy link
Member

Спасибо за пулреквест :) Надо призвать людей и попросить разобраться

package.json Outdated
@@ -10,10 +10,12 @@
"lint": "npm run lint:eslint && npm run prettier",
"lint:eslint": "eslint --ext .js,jsx .",
"lint:fix": "npm run lint:eslint -- --fix",
"lint-md": "remark . ",
Copy link
Member

Choose a reason for hiding this comment

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

Предлагаю другой нейминг:

  • lint линтит всё: и JS, и MD
  • lint:eslint линтит JS
  • lint:fix-js фиксит JS
  • lint:remark линтит MD
  • lint:fix-md фиксит MD

Так более единообразно и понятно, что происходит.

Copy link
Member

Choose a reason for hiding this comment

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

А ещё глаз зацепился за концевой пробел в "remark . ".

Copy link
Member

Choose a reason for hiding this comment

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

Новая идея, так ещё понятнее:

  • lint линтит всё: и JS, и MD
  • lint:eslint линтит JS
  • lint:remark линтит MD
  • fix:eslint фиксит JS
  • fix:remark фиксит MD

Чтобы сразу было понятно, где линт, а где фикс.

Copy link
Contributor

Choose a reason for hiding this comment

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

Хороший нейминг, я бы добавил только

  • fix фиксит все: и JS, и MD

Copy link
Member

Choose a reason for hiding this comment

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

Понятно, зачем линтить всё — это просто справочная информация. Но вот фиксить всё я бы не стал, это всё-таки перезаписывает файлы и лучше сделать по частям.

Copy link
Contributor

Choose a reason for hiding this comment

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

Согласен, это операция с побочными эффектами, лучше дать максимум ручного контроля.

@alexbaumgertner alexbaumgertner added this to the 2.0 milestone Jan 27, 2019
@pepelsbey pepelsbey added the Помогите Исполнитель задачи ищет помощи label Jan 27, 2019
@FFxSquall
Copy link
Contributor

FFxSquall commented Jan 28, 2019

@b0gok А что именно не работает при фиксе? Если я запускаю на единичный файл npx remark ./content/articles/a11y-users-interview/index.md --o он подтягивает настройки из секции settings в файле .remarkrc.js. Вот только ломает мета шапку. И вместо

---
title: "О доступности интерфейсов из первых уст"
date: "2018-02-19"
---

получается

---

title: "О доступности интерфейсов из первых уст"

## date: "2018-02-19"

И ещё если я в настройках задаю для болда _, он фиксит, а когда я меняю назад на * просто начинает ругатся error Strong should use * as a marker strong-marker remark-lint, очень странно

@pepelsbey
Copy link
Member

FYI: хотелось бы для болда ** и _ для курсива.

@b0gok
Copy link
Author

b0gok commented Jan 28, 2019

FYI: хотелось бы для болда ** и _ для курсива.

** не получится использовать, потому что там нет такой опции.

Для курсива уже стоит _.

@pepelsbey
Copy link
Member

там не такой опции

Но это тогда не маркдаун :О Важно сохранить совместимость, а не просто фантазировать

image

@pepelsbey
Copy link
Member

Учитывая, что options.strong принимает строку, то может это просто плохо написанная документация и он принимает любую, и ** тоже?

@FFxSquall
Copy link
Contributor

@pepelsbey options.strong просто говорит какой символ remark и так знает, что их 2 надо использовать

@FFxSquall
Copy link
Contributor

В общем мне кажется у них чето неработает. Они сами в remark-lint пишут

Note: running remark example.md -o or remark example.md --output overwrites example.md and formats it. So, if you’d run that twice (the first pass lints and fixes the markdown, the second pass checks it again), you’d see the output example.md: written as all warnings are now fixed.

На деле если поменять strong на _ то он форматирует документ, если поменять назад, то просто начинает валиться ошибки линтера, что strong должен быть *. Тут либо начинают плагины отрабатывать до настроек и все останавливается на этапе ошибок. Либо форматер не считает что __example__ strong и не форматирует в **exmaple**, а потом линтер ругается. Мне кажется, что второе.

@b0gok
Copy link
Author

b0gok commented Jan 28, 2019

@b0gok А что именно не работает при фиксе? Если я запускаю на единичный файл npx remark ./content/articles/a11y-users-interview/index.md --o он подтягивает настройки из секции settings в файле .remarkrc.js. Вот только ломает мета шапку. И вместо

---
title: "О доступности интерфейсов из первых уст"
date: "2018-02-19"
---

получается

---

title: "О доступности интерфейсов из первых уст"

## date: "2018-02-19"

И ещё если я в настройках задаю для болда _, он фиксит, а когда я меняю назад на * просто начинает ругатся error Strong should use * as a marker strong-marker remark-lint, очень странно

Я решил, что он не работает совсем как раз из-за шапки, потому что в одной из итераций он заменял --- на * * *. Из чего я сделал вывод, что не отрабатывает параметр rule.

С настройкой strong я ошибся, там будут два знака **
https://github.com/remarkjs/remark-lint/tree/master/packages/remark-lint-strong-marker

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Помогите Исполнитель задачи ищет помощи
Projects
None yet
Development

Successfully merging this pull request may close these issues.

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