feature-sliced / eslint-config

🍰 Lint feature-sliced concepts by existing eslint plugins
https://npmjs.com/@feature-sliced/eslint-config
MIT License
117 stars 4 forks source link

LINT: Add custom messages for boundaries #3

Closed azinit closed 2 years ago

azinit commented 3 years ago
Krakazybik commented 2 years ago

PublicAPI image Layers image Slices image Import-order image

azinit commented 2 years ago

@Krakazybik Спасиб за скрины! В целом тогда кажется, что этого хватит А постпроцессинг оставим на некст итерации

Главное, что по текущим формулировкам понятно что происходит и что менять

Поменяю майлстоун сейчас

Krakazybik commented 2 years ago

Вариант решения (чтоб не затерялся): postprocess

Krakazybik commented 2 years ago

Коты чутка почудили, смотри что получилось =)

https://user-images.githubusercontent.com/1334019/146844710-177d2aa0-139a-49dc-9f92-e3c12f31a30b.mp4

azinit commented 2 years ago

@Krakazybik Спасибо за видос с примером!

azinit commented 2 years ago

А можешь пож уточнить: 1) Кастомайзить можно только "прибавляя доп.текст" к комментарию? А то заметил, что дефолтная часть сообщения остается а мы лишь добавляем "See rule..."

2) Кастомайзить можно только сырой текст? Нельзя ли вставить прям ссылку на доку, чтобы можно было переходить напрямую? (как в eslint-plugin)

3) Сильно дорого ли вышло такое решение?) Т.е. выглядит круто, но насколько сложно в реализации и поддержке такое? Кинешь пож ссыль на коммит/ветку?

Krakazybik commented 2 years ago
  1. Кастомайзить можно текст полностью. В видео был акцент на ruleId, который выглядит как feature-sliced/...
  2. Немного не понял, если речь про ссылку в тексте, то без проблем, если про docs из eslint rule, то к данному объекту доступа нет
  3. Не дорого, могу на гист залить или куда-то, т. к. это отдельный пакет
azinit commented 2 years ago

(2) Ну я тип вот к чему:

👎 Bad: Чисто идентификатор правила мало что скажет и вряд ли кто будет по нему искать доку

@feature-sliced/import-order

👎 Bad: Ссылка это хорошо, но занимает много места и сложно понять сходу - что за правило то

https://github.com/feature-sliced/eslint-config/blob/master/rules/import-order/index.md

👍 Good: И идентификатор, и ссылка - и компактно (как у eslint-plugin#docUrl)

@feature-sliced/import-order

azinit commented 2 years ago

(3) Да, давай)

Вот смущает как раз, что это не просто функция кастомайзер (как было похоже по доке еслинта), а аж отдельный пакет...

azinit commented 2 years ago

(1) А можешь тогда показать пример как докастомайзиться до тип такого?

Lower layers can't higher layers: widgets => pages (@feature-sliced/layers-boundaries)

Krakazybik commented 2 years ago

(3) Да, давай)

Вот смущает как раз, что это не просто функция кастомайзер (как было похоже по доке еслинта), а аж отдельный пакет...

https://gist.github.com/Krakazybik/53cebb2c763305be13e31042d59a7c72

azinit commented 2 years ago

@Krakazybik Уточнишь пож по (2) и (1)?

azinit commented 2 years ago

@Krakazybik Предлагаю тогда следующий расклад по итогу по этой задаче:

  1. Так и быть, сделаем processor отдельным пакетом, но хранить его код будем пока локально (т.к. он напрямую к конфигу относится) Потом вполне может оказаться, что дальше развивать эту историю не будем - но раз уже столько наработок по задаче, то кажется можно выкатывать Публикацию в нужном виде и коннект уже сам организую, тебе лишь сам processor надо реализовать

  2. Какие именно формулировки процессим "layers-slices" => "Violated isolation between layers or slices: {IMPORT_FROM} => {IMPORT_TO} (FeatureSliced: https://git.io/Jymh2)" "public-api" => "Violated usage of modules Public API (FeatureSliced: https://git.io/Jymjf)" "import-order" => "Broken order of imports (FeatureSliced: https://git.io/JymjI)"

azinit commented 2 years ago

image image image

azinit commented 2 years ago

image image image