Comments 23
По мне так лучше решать эту проблему организационно, просто распределив элементы для стилизации или создав список имен заранее. Если все же напутали, то git вам в помощь. Сравниваем файлы и если есть конфликты в названии, то решаем какой оставляем.
Что на счёт vite вместо webpack?
Я дед, мне с вебпаком удобно :) если вопрос про то, как настроить похожую инфраструктуру в Vite, то сходу я сказать не могу, так как не пользовался им ни разу.
Веб все больше приобретает черты адекватной сферы деятельности человека :D
Такими темпами и JS языком со своей философией (помимо прото-ООП) станет
Ну, такое оно... Если SCSS проекта использует какие-то общие файлы, то они включаются в проекте несколько раз.
Алиасы модулей CSS/SCSS не поддерживаются в VSCode. Причём, просто потому, что разработчики плагина -"гордые и независимые'.
Выгрузить модуль стилей нельзя. В результате для больших и долгоживущих страниц html body круто засирается мусором
Генерация sourcemap кривая. Причем, у каждого плагина по своему кривая. И только потому, что разработчики ленивые жопы.
Ну, и куча всего подобного, что в "нормальных" языках и средах просто невозможно представить - таким продуктом просто никто не стал бы пользоваться, а в авторов бы тыкали пальцами и высмеивали.
А мы точно про один и тот же плагин говорим?
Это не про плагин, это про общий урвень тулчейна. Плагин работает. Только выгружать стили нельзя.
Вебпаком и любым другим бандлером довольно легко выгрузить получившиеся стили. Мне кажется наоборот прикольно, что каждый инструмент делает свою конкретную задачу и передаёт результат дальше.
Модуль-то вы выгрузите, но сами добавленные стили от этого из страницы не пропадут. Для того, чтобы выгрузить модуль полностью (а не просто из кэша загрузчика webpack), нужно знать какому тэгу <style> соответствует модуль, а это информации нет. Т.е. только велосипед с ручной загрузкой/выгрузкой модуля.
Кажется, я перестал понимать, какую задачу нужно решить)
Грузите вы CCS-модули. Программа большая, в ней могут быть какие-то динамические части (модули). Если это single page application, то это всё грузится и никогда не выгружается.
Даже если вы динамически грузите CSS-модуль через require, то его содержимое добавляется в <head> и больше никогда не удаляется. В результате там скапливается фантастическое количество мусора и могут начаться тормоза браузера даже на небольших страницах по причине разрастания CSS таблиц до неприличных размеров.
Всё это усугубляется отсутствием поддержки каскадный модулей - т.е. если вы в CSS/SCCS используете (импортите) какие-то общие (глобальные) файлы со стилями, то это всё дублируется - на каждый импорт из CSS будет сгенерирован свой комплект одинаковых селекторов и правил. Даже если их в SCCS глобальными объявлять, то они на практике в стилях страницы будет куча одинаковых объявлений одинаковых селекторов. В сумме с невозможностью выгрузки CSS-модулей это приводит к тому, что в небольшом WEB-приложении может оказаться миллион селекторов и всё начинает тормозить и лагать при обновлении стилей.
А причина - сугубо в сырости непродуманности тулчейна. Все эти проблемы были сразу видны и предсказуемы, но во фронте своя атмосфера, и принято каждое новое колесо, которое уже 20 лет есть в других сферах IT, изобретать с болью и торжествами.
(вопрос новичка в вебпаке)
А если вы в двух разных файлах .js в двумя отдельными модулями реквайрите один и тот же модуль, а потом эти два ваших модуля собираете ещё где-нибудь в один файл, этот вот тот, которого вы реквайрили в них обоих - он повторится два раза?
(хотя почему бы ручками не проверить, но вдруг это вообще известная тема)
Оно как-то строит деревья/графы того, что грузит на js/ts? Чтобы если там где-то три обращения к одной вершине графа в итоге, чтобы её содержимое записать один раз?
(проверяя ручками я могу не дойти до всей глубины проблемы, если она имеется)
Мотивирую вопрос: если я правильно поняла, с модулями CSS проблема как раз такая - граф не выстраивается, и одно и то же грузится ровно по стольку раз, сколько оно реквайрится.
А можно было просто ttsc вместо tsc использовать и плагины заработают...
Если бы была возможность даунвота у меня я бы задаунвотил. Вообще уже опустили уровень хабра.. Если бы я подобные "статьи" публиковал репутации для даунвота было бы достаточно... Но в отличие от автора я не хочу такими "статьями" превращать хабр в помойку...
Статья отличная. Есть чётко описанная задача, какую она проблематику решает и собственно представлено решение с описанием. Кому-то будет полезно.
Webpack + CSS Modules + TS = Love