Или вот зашла речь о сборке JavaScript и CSS.
Собирать, подключаемые на странице ресурсы, в меньшее количество файлов, вещь хорошая и позволяющая повышать эффективность загрузки. Только многие не видят очевидных минусов.
Например, на одной страничке у нас подключаются файлы A.js
, B.js
и C.js
. Загружаются они браузером за три запроса и сохраняются в кэше.
Но мы, при деплое, запускаем свою супер-склеивалку и у нас вместо трёх файлов получается один ABC.js
. Браузеру приходится загружать тот же самый объём, но всего за один запрос, что намного оптимальнее. Пока всё хорошо.
А теперь мы переходим на другую страницу, на которой у нас используются сценарии A.js
, B.js
и D.js
. В обычной ситуации браузер бы запросил D.js
, а остальные два файла взял бы из кэша. Но теперь у нас на продакшене вместо трёх файлов — один ABD.js
. И браузеру приходится тащить к себе по второму разу содержимое A и B.
А потом мы вносим изменения в B.js
. В случае без сборки, браузеру пришлось бы обновить только один этот файл. В случае со сборокой же, пришлось обновлять все сборки, где участвует B. В нашем случае, это и ABC.js
и ABD.js
.
Мораль, как обычно: ни одна крутая тулза не избавляет от необходимости думать головой. Собирать имеет смысл только самое ядро, которое используется на всём сайте и очень редко меняется.