Нужно не изобретать велосипед и использовать готовые решения: реакт/вью/ангуляр или любой другой из десятков библиотек/фреймворков для постройки пользовательского интерфейса.
Для реакта есть CRA, Next.js и Vite, в которых все настроено за тебя.
Для вью есть vue CLI, Nuxtjs и Vite, в которых опять же все настроено за тебя.
Для ангуляра наверняка есть что-то похожее.