Странный вопрос - чтобы сделать качественный и расширяемый проект, надо делать его качественно и закладывать расширяемость.
Для большей конкретики в ответах надо больше конкретики в вопросе.
"Адекватная модульность" заложена в вебпак и язык, остальное уже зависит исключительно от того как вы это используете.
Разбивайте приложение на чанки и загружайте только нужные. поддержка этого опять же есть в вебпаке, начните отсюда
https://webpack.js.org/guides/code-splitting/
если вы хотите раздельно грузить css то может помочь
https://webpack.js.org/plugins/mini-css-extract-plugin/
но я бы не рекомендовал это делать от слова совсем.
бэм уже не так актуален как раньше. но опять же если хочется - берите и применяйте.
css модули вам в помощь.