Да не стоит заморачиваться разделением компонентов на отдельные файлы.
Собирайте один бандл. По крайней мере пока он меньше 200-300kb точно не стоит.
Потом можно использовать встроенный в webpack code splitter/ Например через magiс comments
Сами компоненты я монтирую так
<div id="calculator"></div>
export function mountVueComponent(targetId, component) {
if (document.getElementById(targetId)) {
new (Vue.extend(component))().$mount(`#${targetId}`);
}
}
import Calculator from '....';
mountVueComponent('calculator', Calculator);
Или так
<div class="mini-calc"></div>
Array.from(document.querySelectorAll('.mini-calc')).forEach(el => {
let yandexGoal = el.dataset['goal'];
new Vue({
el : el,
render: createElement => createElement(Calculator, {
props: {
displayAs: CALC_DISPLAY_AS_MINI,
yandexGoal,
},
}),
});
});