htmlacademy / html2-basic-template

Gulp сборка: html, sass, stack, webp.
36 stars 222 forks source link

Перевести проверку linthtml на source #78

Closed nikolai-shabalin closed 6 months ago

nikolai-shabalin commented 6 months ago

Любой сдвиг в build приводит к несоответствию информации о ошибках.

В source ошибка в 25 строку, в build этот же код уже на 23.

nikolai-shabalin commented 6 months ago

@firefoxic , что думаешь? Сейчас проблема в том, что мы линтим зачем-то не сорсы. Это происходит из-за того, что есть возможность работать с шаблонизатором.

nikolai-shabalin commented 6 months ago

Это же касается БЭМ-линтинга

firefoxic commented 6 months ago

Все три проверятора разметки (валидатор тоже) не могут работать с хоть как-то порезанной разметкой. БЭМ дерево не построится и будет куча ошибок об элементах вне блоков. Линтер html начнёт на атрибуты ругаться. А валидатор вообще пошлёт куда-то на долго.

Не стоит проверяторы на исходники переправлять, так вообще никогда не начнёте шаблонизацию вводить. Хотя в этом ничего сложного нет, ведь начинать можно с выноса футера в отдельный файл с простейшим инклюдом (без макросов) в основной. Процесс понятен — делаем то же самое с head. Освоились — шапку выносим. Ой, там у ссылочек разных должен атрибут добавляться на разных страницах — применяем ифчик. Можно даже до экстенда лейаута не доходить. И всё это можно размазать по всему курсу. Сложность небольшая совсем, зато к фреймворкам гораздо более готовы студенты получаются.

А на счёт сдвигов — это полезный навык при каких-то проблемах понимать разницу между исходником и билдом, залезть в билд и понять где именно проблема, чтобы найти нужный исходник для правок. Хоть мы и говорим всегда, что в билд лучше руками не лезть, но глазами — полезно понимать, что в браузер летит в итоге.

Тут только надо отключать оптимизации (не знаю, может как-то для курса отдельно это делать, потому что для акселератора не очень), чтобы не в одну строку всё было. А на 9 модуле давать задание включить их и сравнить результат.

nikolai-shabalin commented 6 months ago

Сейчас вопрос не в примении шаблонизаторов, а почему линтинг происходит не на исходниках.

А на счёт сдвигов — это полезный навык при каких-то проблемах понимать разницу между исходником и билдом, залезть в билд и понять где именно проблема, чтобы найти нужный исходник для правок.

На курсах они этого не смогут понять. Да, и мне как пользователю данной сборки крайне не удобно сравнивать строки на каждую мою ошибку сделанную в разметке. Линтер должен помогать. Собственно он это и делает, но из-за неправильного подключения приходится делать дополнительные шаги по сравниванию строк.

А на 9 модуле давать задание включить их и сравнить результат.

Так и планировалось, чтобы в разделе "оптимизации" можно было поковыряться в кишочках сборки и посмотреть как оптимизация влияет на загрузку сайта. То есть сборка точно должна изменяться для курсов, хотя бы кометирование минификации и оптимизации. Это несколько строк всего.

Но вопрос про сдвиг остаётся открытым. Проверяя качествао разметке в source мы всегда будем сталкиваться со сдвигом. Это касается на самом деле любого типа ресурса. Если мы будем линтить стили в build, то будет вообще каша происходить. Оно и понятно, так как линтим результат, а не то что написал разработчик.

firefoxic commented 6 months ago

Проверяя качествао разметке в source мы всегда будем сталкиваться со сдвигом.

Вот тут не понял. Что за сдвиг в source?

Да и в build — разве есть сдвиг, когда в исходнике лежит простая html-ка без инклюдов/макросов/etc? Он же просто выплёвывает файл таким, каким принял. И если минификатор отключён, то и он не влияет.

firefoxic commented 6 months ago

почему линтинг происходит не на исходниках

Потому что любой студент может захотеть воспользоваться шаблонизатором, который уже есть в сборке. Ну если конечно ему сил и времени хватает.

Можно конечно для курса ещё и это переключать — с билда на сорцы пути для всех трёх проверяторов разметки. А наставникам выдать мануал, что поправить, если студент готов к подвигам.

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

nikolai-shabalin commented 6 months ago

Вот тут не понял. Что за сдвиг в source?

Имелась ввиду разница между source и build.

Да и в build — разве есть сдвиг, когда в исходнике лежит простая html-ка без инклюдов/макросов/etc? Он же просто выплёвывает файл таким, каким принял. И если минификатор отключён, то и он не влияет.

Да и в build — разве есть сдвиг, когда в исходнике лежит простая html-ка без инклюдов/макросов/etc? Он же просто выплёвывает файл таким, каким принял. И если минификатор отключён, то и он не влияет.

Если отключён, то всё должно быть нормально, потому что файл по сути копируется из source в build.

Но тут ещё один момент вскрывается: для линтинга HTML всегда должна быть запущена сборка:

Если сборка не запущена, но линтинг осложняется:

nikolai-shabalin commented 6 months ago

Потому что любой студент может захотеть воспользоваться шаблонизатором, который уже есть в сборке.

Это всегда опционально и не должно вредить разработке из HTML-файлов, так как на курсах не сборки, как и в дальнейшей профессии.

Можно конечно для курса ещё и это переключать — с билда на сорцы пути для всех трёх проверяторов разметки. А наставникам выдать мануал, что поправить, если студент готов к подвигам.

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

Кажется, что так и должно быть. Как минимум с оптимизациями уже так и будет происходить. Но тут сейчас как раз дефолт и обсуждается, к которому курсы в итоге должны приходить.

- минификация в начале курса отключена
- доходим до раздела "оптимизации"
- учим включать оптимизации
- проверяем, что стало быстренько
- получается что дошли до дефолта сборки
firefoxic commented 6 months ago

Если сборка не запущена, но линтинг осложняется:

* запустили линтер
* поправил ошибку
* запустил линтер увидел, что ошибка не исправилась
* запустил сборку
* запустил линтер, чтобы проверить исправилась ошибка или нет

Так и есть. И я предупреждал об этом… когда-то давно. Но без этого шаблонизация на курсе вообще никогда не будет. Можно смело выпиливать тогда его.

Но это странно. Должно же хоть что-то добавляться взамен сокращаемого. Гит урезан, форму не надо, автоматизацию писать не надо и тд — а нового взамен как-то чуть менее чем ничего 🤔

nikolai-shabalin commented 6 months ago

Так и есть. И я предупреждал об этом… когда-то давно. Но без этого шаблонизация на курсе вообще никогда не будет. Можно смело выпиливать тогда его.

Если никак не найти баланс прямо сейчас, то надо выпиливать. В будущем вернёмся к этому вопросу. Нет запретов вернуться и сделать лучше. Просто сейчас не подходит такой вариант.

Гит урезан, форму не надо

Господи, да не урезан он. Почему меня никто не слышит? На профе студент полностью получит этот навык. Мы даже добавим отдельный курс по гиту. Так что по гиту, в итоге, информации будет гораздо больше. А форму надо, только не в таком безграничном количестве "давайте месяц делать одну форму".

Но это странно. Должно же хоть что-то добавляться взамен сокращаемого. Гит урезан, форму не надо, автоматизацию писать не надо и тд — а нового взамен как-то чуть менее чем ничего

хех, не это же не так работает. Если упростили гит, значит, что-то надо усложнить. Сейчас проблема в том, что курс обновляется сложнее, чем хотелось бы, но недавно мы нашли решение. Но об этом не тут и не в этой таске

firefoxic commented 6 months ago

Значит выпиливаем.

вернуться и сделать лучше.

Неа, не вернуться, никак вообще. Ибо файлы шаблонов не проверяются линтерами для html, они про шаблоны ничего не знают.

nikolai-shabalin commented 6 months ago

Неа, не вернуться, никак вообще.

Мы можем добавить шаблонизатор на курсе. От этой идеи мы никогда не отказывались. Есть решения, которые надо принять прямо сейчас под текущий курс, и держать в голове как можно сделать, но изменения уже попадут в будущую версию курса