Узнайте, как интегрировать Bootstrap в Angular проект с использованием чистой и модульной SCSS структуры, поддерживающей простую кастомизацию и масштабируемость.

Существует несколько способов подключить CSS-библиотеку к вашему проекту. Под «CSS-библиотекой» я имею в виду любой современный CSS-фреймворк или UI-библиотеку, например Bootstrap, NG-Zorro, PrimeNG и т. д. Хотя все эти методы рабочие, многие из них не обеспечивают достаточной гибкости или не позволяют глубоко настраивать выбранный фреймворк.
Чтобы построить надежную основу для вашей дизайн-системы и обеспечить простую кастомизацию в будущем, лучше использовать стили из исходного кода (файлы SASS или LESS) выбранного фреймворка, а не минифицированные версии. Такой подход обеспечивает более удобный рабочий процесс, уменьшает количество лишнего кода и увеличивает гибкость.
В этом гайде предполагается, что вы обладаете базовыми знаниями Angular и менеджеров пакетов, таких как Yarn или npm.
Для демонстрации мы будем использовать Bootstrap в качестве примера UI-библиотеки и Angular как фронтенд-фреймворк. Однако этот же подход применим практически к любой UI-библиотеке, так как все они следуют схожим принципам разработки.
Создание нового Angular проекта
Первый шаг — создать новое Angular приложение. Подробные инструкции есть в официальной документации, а тут перечислены основные команды (при условии, что используется менеджер Yarn):
yarn global add @angular/cli
ng new <project-name>
После выполнения будет создан новый проект в папке <project-name>
.
Добавление Bootstrap
Далее нужно добавить библиотеку Bootstrap в проект. Существует несколько npm-пакетов, но мы будем использовать NG Bootstrap, так как это самая популярная версия для Angular (более чем 450 000 загрузок в неделю). Дополнительные инструкции можно найти на официальном сайте.
Чтобы добавить его в проект, выполните команду в папке проекта:
ng add @ng-bootstrap/ng-bootstrap
Модификация структуры
Теперь у нас есть Angular приложение с UI-библиотекой Bootstrap и нам необходимо немного оптимизировать конфигурацию:
1. Создайте новую папку /src/styles
для хранения всех стилей проекта.
2. Добавьте в неё два новых файла: app.scss
и vendor.scss
. Разделение стилей на эти два файла позволяет хранить сторонние стили отдельно от пользовательских, что упрощает поддержку. Новая структура будет выглядеть так:
/src
/styles
├── app.scss
├── vendor.scss
styles.scss
3. Импортируйте созданные файлы в /src/styles.scss
:
@import "styles/vendor";
@import "styles/app";
4. В /src/styles/vendor.scss
подключите только необходимые компоненты Bootstrap. Ненужные можно закомментировать, чтобы уменьшить итоговый размер сборки:
@import "bootstrap/scss/mixins/banner";
@include bsBanner("");
// Bootstrap's variables and mixins
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
// Bootstrap's core
@import "bootstrap/scss/root";
@import "bootstrap/scss/reboot";
@import "bootstrap/scss/type";
@import "bootstrap/scss/images";
@import "bootstrap/scss/containers";
@import "bootstrap/scss/grid";
// Bootstrap's form elements
@import "bootstrap/scss/forms";
@import "bootstrap/scss/buttons";
@import "bootstrap/scss/transitions";
// @import "bootstrap/scss/dropdown";
// @import "bootstrap/scss/button-group";
// Bootstrap's components
// @import "bootstrap/scss/tables";
// @import "bootstrap/scss/nav";
@import "bootstrap/scss/navbar";
@import "bootstrap/scss/card";
// @import "bootstrap/scss/accordion";
// @import "bootstrap/scss/breadcrumb";
@import "bootstrap/scss/pagination";
@import "bootstrap/scss/badge";
@import "bootstrap/scss/alert";
@import "bootstrap/scss/progress";
@import "bootstrap/scss/list-group";
@import "bootstrap/scss/close";
@import "bootstrap/scss/toasts";
@import "bootstrap/scss/modal";
// @import "bootstrap/scss/tooltip";
// @import "bootstrap/scss/popover";
// @import "bootstrap/scss/carousel";
// @import "bootstrap/scss/spinners";
// @import "bootstrap/scss/offcanvas";
@import "bootstrap/scss/placeholders";
// Bootstrap's helpers
@import "bootstrap/scss/helpers";
// Bootstrap's utilities
@import "bootstrap/scss/utilities/api";
5. Файл /src/styles/app.scss
пока оставьте пустым — в будущем здесь будут храниться пользовательские стили приложения.
Заключение
Следуя этой настройке, вы получите:
Новый Angular проект с установленным и готовым к использованию Bootstrap.
Возможность управлять подключением компонентов Bootstrap через файл
vendor.scss
, уменьшая размер сборки.Структурированный подход к стилям, позволяющий легко переопределять переменные Bootstrap для глубокой кастомизации.
В следующей статье мы рассмотрим, как кастомизировать переменные Bootstrap, чтобы вы получили полный контроль над дизайном приложения при сохранении чистого кода. Следите за обновлениями!