Ставишь терминал, node.js, npm, webpack - на своем сайте я писал про подключение этого хозяйства, когда я делал плагин к гутенбергу.
Каждый компонент - отдельный js и css
Потом все пакуешь в отдельный бандл (например просто по сохранению файла). На выходе получается 1 js и 1 css файл. Причем уже минимизированные и сжатые. Т.к. все висит на сохранении файла - результат видно сразу в браузере. Ничего дополнительно делать не надо - автоматом пакуется.
Можно css через автопрефиксер натравить - тогда будут добавляться вендорные префиксы -moz- -webkit- - как настроишь по правилам. Например поддержка только 2х последних версий.
Но лучше конфиг собирать по логике - core.js, non-logged.js, logged.js, single-page.js - т.е. не сразу паковать всё в один, а соблюдая логику - в кор - то что нужно всем и везде. Ну и т.д.
По поводу css - посмотри BEM - очень здорово помогает на сложном проекте не повторяться.
js - тоже надо дублирующие сущности в отдельные функции вынести.
Еще - важно осознавать где и когда файл нужен. Например css, не критичный для первого экрана - нет смысла грузить в шапке - его смело грузи в подвале.
По возможности отказаться от инлайн стилей и скриптов. В скрипты можно с помощью php получать динамические данные, настройки и выводить в js объект инлайном. А из объекта уже в js файле брать то что надо.
Потому как статика - она кешируется, а то что у вас простынёй в html - нет. И каждый раз передается по сети.