Bootstrap и Vite
Официальное руководство о том, как включить CSS и JavaScript Bootstrap в свой проект с помощью Vite.
Установка
Мы создаем проект Vite с Bootstrap с нуля, поэтому есть некоторые предварительные условия и предварительные шаги, прежде чем мы действительно сможем начать. Это руководство требует, чтобы у вас был установлен Node.js и вы немного знакомы с терминалом.
-
Создайте папку проекта и установите npm. Мы создадим папку
my-projectи инициализируем npm с аргументом-y, чтобы он не задавал нам все интерактивные вопросы.mkdir my-project && cd my-project npm init -y -
Установите Vite. В отличие от нашего руководства по Webpack, здесь есть только одна зависимость от инструмента сборки. Мы используем
--save-dev, чтобы указать, что эта зависимость предназначена только для разработки, а не для продакшена.npm i --save-dev vite -
Установите Bootstrap. Теперь мы можем установить Bootstrap. Мы также установим Popper, так как наши раскрывающиеся списки, всплывающие окна и всплывающие подсказки зависят от его позиционирования. Если вы не планируете использовать эти компоненты, вы можете опустить здесь Popper.
npm i --save bootstrap @popperjs/core -
Установите дополнительные зависимости. В дополнение к Vite и Bootstrap нам нужна еще одна зависимость (Sass), чтобы правильно импортировать и связывать CSS Bootstrap.
npm i --save-dev sass
Теперь, когда у нас установлены и настроены все необходимые зависимости, мы можем приступить к созданию файлов проекта и импорту Bootstrap.
Структура проекта
Мы уже создали папку my-project и инициализировали npm. Теперь мы также создадим нашу папку src, таблицу стилей и файл JavaScript, чтобы завершить структуру проекта. Запустите следующее из my-project или вручную создайте структуру папок и файлов, показанную ниже.
mkdir {src,src/js,src/scss}
touch src/index.html src/js/main.js src/scss/styles.scss vite.config.js
Когда вы закончите, ваш полный проект должен выглядеть так:
my-project/
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ | └── styles.scss
| └── index.html
├── package-lock.json
├── package.json
└── vite.config.js
На данный момент все в порядке, но Vite не будет работать, потому что мы еще не заполнили наш vite.config.js.
Конфигурация Vite
С установленными зависимостями и готовой папкой проекта для начала написания кода мы теперь можем настроить Vite и запустить наш проект локально.
-
Откройте
vite.config.jsв вашем редакторе. Поскольку он пуст, нам нужно добавить в него шаблонную конфигурацию, чтобы мы могли запустить наш сервер. Эта часть конфигурации сообщает Vite, где искать JavaScript нашего проекта и как должен вести себя сервер разработки (извлечение из папкиsrcс горячей перезагрузкой).const path = require('path') export default { root: path.resolve(__dirname, 'src'), server: { port: 8080, hot: true } } -
Далее мы заполняем
src/index.html. Это HTML-страница, которую Vite загрузит в браузер, чтобы использовать связанные CSS и JS, которые мы добавим к ней на последующих этапах.<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap w/ Vite</title> </head> <body> <div class="container py-4 px-3 mx-auto"> <h1>Hello, Bootstrap and Vite!</h1> <button class="btn btn-primary">Primary button</button> </div> <script type="module" src="./js/main.js"></script> </body> </html>Мы добавили сюда немного стилей Bootstrap с помощью
div class="container"и<button>, чтобы видеть, когда CSS Bootstrap загружается Vite. -
Теперь нам нужен скрипт npm для запуска Vite. Откройте
package.jsonи добавьте сценарийstart, показанный ниже (у вас уже должен быть тестовый сценарий). Мы будем использовать этот скрипт для запуска нашего локального сервера разработки Vite.{ // ... "scripts": { "start": "vite", "test": "echo \"Error: no test specified\" && exit 1" }, // ... } -
И, наконец, мы можем запустить Vite. Из папки
my-projectв вашем терминале запустите только что добавленный скрипт npm:npm start
В следующем и последнем разделе этого руководства мы импортируем весь CSS и JavaScript Bootstrap.
Импорт Bootstrap
-
Настройте импорт Sass для Bootstrap в
vite.config.js. Ваш файл конфигурации готов и должен соответствовать приведенному ниже фрагменту. Единственная новая часть здесь — это разделresolve— мы используем его, чтобы добавить псевдоним к нашим исходным файлам внутриnode_modules, чтобы максимально упростить импорт.const path = require('path') export default { root: path.resolve(__dirname, 'src'), resolve: { alias: { '~bootstrap': path.resolve(__dirname, 'node_modules/bootstrap'), } }, server: { port: 8080, hot: true } } -
Теперь давайте импортируем Bootstrap CSS. Добавьте следующее в
src/scss/styles.scss, чтобы импортировать весь исходный код Bootstrap Sass.// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";Вы также можете импортировать наши таблицы стилей по отдельности, если хотите. Прочитайте нашу документацию по импорту Sass для подробностей.
-
Далее мы загружаем CSS и импортируем JavaScript из Bootstrap. Добавьте следующее в
src/js/main.js, чтобы загрузить CSS и импортировать все JS из Bootstrap. Поппер будет автоматически импортирован через Bootstrap.// Импортируйте наш пользовательский CSS import '../scss/styles.scss' // Импортируйте весь JS Bootstrap import * as bootstrap from 'bootstrap'Вы также можете импортировать плагины JavaScript по отдельности, если это необходимо, чтобы уменьшить размеры пакетов:
import Alert from 'bootstrap/js/dist/alert'; // или укажите, какие плагины вам нужны: import { Tooltip, Toast, Popover } from 'bootstrap';Прочитайте нашу документацию по JavaScript для получения дополнительной информации о том, как использовать плагины Bootstrap.
-
И готово! 🎉 С полностью загруженным исходным кодом Bootstrap Sass и JS ваш локальный сервер разработки теперь должен выглядеть так.
Теперь вы можете начать добавлять любые компоненты Bootstrap, которые хотите использовать. Обязательно ознакомьтесь с полным примером проекта Vite, чтобы узнать, как включить дополнительный пользовательский Sass и оптимизировать свою сборку, импортируя только части CSS и JS Bootstrap, которые вам нужны.
Видите здесь что-то неправильное или устаревшее? Пожалуйста, откройте вопрос на GitHub. Нужна помощь в устранении неполадок? Выполните поиск или начните обсуждение на GitHub.