Что касается использования общих элементов и библиотек, то суть сводится к следующей проблеме: если мы выносим их в отдельное место, то мы теряем в компактности, так как библиотеки нужны только там, где используются, а устанавливать придется всё. Если же мы кладем библиотеку в каждый отдельный компонент, мы мало того, что раздуваем размер самой библиотеки, так еще и теряем возможность следить за версиями этих библиотек, так как в каждом компоненте оказывается своя копия. В итоге эту проблему решали через установку зависимостей в самих компонентах, чтобы локальный компонент был связан с папкой с глобальными компонентами.