Bootstrap & Webpack
Oficiálna príručka, ako zahrnúť a zbaliť CSS a JavaScript Bootstrapu do vášho projektu pomocou Webpacku.
Nastaviť
Vytvárame projekt Webpack s Bootstrap od nuly, takže pred tým, ako môžeme skutočne začať, sú potrebné určité predpoklady a prvé kroky. Táto príručka vyžaduje, aby ste mali nainštalovaný súbor Node.js a určitú znalosť terminálu.
-
Vytvorte priečinok projektu a nastavte npm. Vytvoríme
my-project
priečinok a inicializujeme npm s-y
argumentom, aby nám nekládol všetky interaktívne otázky.mkdir my-project && cd my-project npm init -y
-
Nainštalujte Webpack. Ďalej musíme nainštalovať naše vývojové závislosti Webpacku:
webpack
pre jadro Webpacku,webpack-cli
aby sme mohli spúšťať príkazy Webpacku z terminálu awebpack-dev-server
aby sme mohli spustiť lokálny vývojový server. Používame--save-dev
na signalizáciu, že tieto závislosti sú len na vývojové použitie a nie na výrobu.npm i --save-dev webpack webpack-cli webpack-dev-server
-
Nainštalujte Bootstrap. Teraz môžeme nainštalovať Bootstrap. Nainštalujeme aj Popper, pretože naše rozbaľovacie ponuky, kontextové okná a popisy nástrojov závisia od toho, pokiaľ ide o ich umiestnenie. Ak tieto komponenty neplánujete používať, môžete tu Popper vynechať.
npm i --save bootstrap @popperjs/core
-
Nainštalujte ďalšie závislosti. Okrem Webpack a Bootstrap potrebujeme niekoľko ďalších závislostí, aby sme správne importovali a spojili CSS a JS Bootstrapu s Webpack. Patria sem Sass, niektoré nakladače a Autoprefixer.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
Teraz, keď máme nainštalované všetky potrebné závislosti, môžeme začať vytvárať súbory projektu a importovať Bootstrap.
Štruktúra projektu
Už sme vytvorili my-project
priečinok a inicializovali sme npm. Teraz vytvoríme src
aj dist
priečinky a na doplnenie štruktúry projektu. Spustite nasledujúce z my-project
, alebo manuálne vytvorte štruktúru priečinkov a súborov zobrazenú nižšie.
mkdir {dist,src,src/js,src/scss}
touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js
Keď skončíte, váš kompletný projekt by mal vyzerať takto:
my-project/
├── dist/
│ └── index.html
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js
V tomto bode je všetko na správnom mieste, ale Webpack nebude fungovať, pretože sme ešte nevyplnili naše webpack.config.js
.
Nakonfigurujte webový balík
S nainštalovanými závislosťami a s priečinkom projektu pripraveným na to, aby sme mohli začať kódovať, môžeme teraz nakonfigurovať Webpack a spustiť náš projekt lokálne.
-
Otvorte
webpack.config.js
vo svojom editore. Keďže je prázdny, budeme doň musieť pridať nejakú štandardnú konfiguráciu, aby sme mohli spustiť náš server. Táto časť konfigurácie hovorí, že Webpack má hľadať JavaScript nášho projektu, kam vypísať skompilovaný kód do (dist
) a ako sa má správať vývojový server (sťahovanie zdist
priečinka s hot reload).const path = require('path') module.exports = { entry: './src/js/main.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist') }, devServer: { static: path.resolve(__dirname, 'dist'), port: 8080, hot: true } }
-
Ďalej vyplníme naše
dist/index.html
. Toto je HTML stránka, ktorú Webpack načíta do prehliadača, aby využil pribalený CSS a JS, ktorý k nemu pridáme v neskorších krokoch. Predtým, ako to urobíme, musíme mu dať niečo na vykreslenie a zahrnúťoutput
JS z predchádzajúceho kroku.<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap w/ Webpack</title> </head> <body> <div class="container py-4 px-3 mx-auto"> <h1>Hello, Bootstrap and Webpack!</h1> <button class="btn btn-primary">Primary button</button> </div> <script src="./main.js"></script> </body> </html>
Zahŕňame tu trochu štýlu Bootstrap s
div class="container"
a<button>
, aby sme videli, kedy je CSS Bootstrapu načítané Webpackom. -
Teraz potrebujeme skript npm na spustenie Webpacku. Otvorte
package.json
a pridajtestart
skript zobrazený nižšie (testovací skript by ste už mali mať). Tento skript použijeme na spustenie nášho lokálneho servera Webpack dev.{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
A nakoniec môžeme spustiť Webpack. Z
my-project
priečinka vo vašom termináli spustite tento novo pridaný skript npm:npm start
V ďalšej a poslednej časti tejto príručky nastavíme zavádzače Webpack a importujeme všetky CSS a JavaScript od Bootstrapu.
Importovať Bootstrap
Import Bootstrapu do Webpack vyžaduje zavádzače, ktoré sme nainštalovali v prvej časti. Nainštalovali sme ich pomocou npm, ale teraz je potrebné nakonfigurovať Webpack, aby ich používal.
-
Nastavte nakladače v
webpack.config.js
. Váš konfiguračný súbor je teraz kompletný a mal by zodpovedať úryvku nižšie. Jediná nová časť je tumodule
sekcia.const path = require('path') module.exports = { entry: './src/js/main.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist') }, devServer: { static: path.resolve(__dirname, 'dist'), port: 8080, hot: true }, module: { rules: [ { test: /\.(scss)$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'postcss-loader', options: { postcssOptions: { plugins: () => [ require('autoprefixer') ] } } }, { loader: 'sass-loader' } ] } ] } }
Tu je zhrnutie toho, prečo potrebujeme všetky tieto nakladače.
style-loader
vkladá CSS do<style>
prvku na<head>
stránke HTML,css-loader
pomáha s používaním@import
aurl()
,postcss-loader
je potrebný pre Autoprefixer asass-loader
umožňuje nám používať Sass. -
Teraz importujme CSS Bootstrapu.
src/scss/styles.scss
Ak chcete importovať všetky zdroje Sass Bootstrapu, pridajte nasledujúce .// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
Ak chcete, môžete tiež importovať naše šablóny štýlov jednotlivo. Podrobnosti nájdete v našich dokumentoch o importe Sass .
-
Ďalej načítame CSS a importujeme JavaScript Bootstrapu. Pridajte nasledujúce do
src/js/main.js
, aby ste načítali CSS a importovali všetky JS Bootstrap. Popper bude importovaný automaticky cez Bootstrap.// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
Doplnky JavaScript môžete podľa potreby importovať aj jednotlivo, aby ste znížili veľkosť balíkov:
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
Prečítajte si naše dokumenty JavaScript , kde nájdete ďalšie informácie o tom, ako používať doplnky Bootstrap.
-
A hotovo! 🎉 S plne načítaným zdrojom Sass a JS Bootstrapu by váš lokálny vývojový server mal teraz vyzerať takto.
Teraz môžete začať pridávať komponenty Bootstrap, ktoré chcete použiť. Nezabudnite si pozrieť celý vzorový projekt Webpack, kde nájdete informácie o tom, ako zahrnúť ďalšie vlastné Sass a optimalizovať svoju zostavu importovaním iba častí CSS a JS Bootstrap, ktoré potrebujete.
Optimalizácia výroby
V závislosti od vášho nastavenia možno budete chcieť implementovať niektoré ďalšie optimalizácie zabezpečenia a rýchlosti užitočné na spustenie projektu v produkcii. Upozorňujeme, že tieto optimalizácie nie sú aplikované na vzorovom projekte Webpack a je na vás, aby ste ich implementovali.
Extrahovanie CSS
Vyššie style-loader
nakonfigurované zariadenie pohodlne vysiela CSS do balíka, takže nie je potrebné manuálne načítanie súboru CSS dist/index.html
. Tento prístup však nemusí fungovať s prísnou politikou zabezpečenia obsahu a môže sa stať prekážkou vo vašej aplikácii z dôvodu veľkej veľkosti balíka.
Na oddelenie CSS, aby sme ho mohli načítať priamo z dist/index.html
, použite mini-css-extract-loader
doplnok Webpack.
Najprv nainštalujte doplnok:
npm install --save-dev mini-css-extract-plugin
Potom vytvorte inštanciu a použite doplnok v konfigurácii Webpack:
--- a/webpack/webpack.config.js
+++ b/webpack/webpack.config.js
@@ -1,8 +1,10 @@
+const miniCssExtractPlugin = require('mini-css-extract-plugin')
const path = require('path')
module.exports = {
mode: 'development',
entry: './src/js/main.js',
+ plugins: [new miniCssExtractPlugin()],
output: {
filename: "main.js",
path: path.resolve(__dirname, "dist"),
@@ -18,8 +20,8 @@ module.exports = {
test: /\.(scss)$/,
use: [
{
- // Adds CSS to the DOM by injecting a `<style>` tag
- loader: 'style-loader'
+ // Extracts CSS for each JS file that includes CSS
+ loader: miniCssExtractPlugin.loader
},
{
Po opätovnom spustení npm run build
sa vytvorí nový súbor dist/main.css
, ktorý bude obsahovať všetky CSS importované pomocou src/js/main.js
. Ak si dist/index.html
teraz prezeráte vo svojom prehliadači, štýl bude chýbať, ako je teraz v dist/main.css
. Vygenerovaný CSS môžete zahrnúť dist/index.html
takto:
--- a/webpack/dist/index.html
+++ b/webpack/dist/index.html
@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="stylesheet" href="./main.css">
<title>Bootstrap w/ Webpack</title>
</head>
<body>
Extrahovanie súborov SVG
CSS Bootstrapu obsahuje viacero odkazov na súbory SVG prostredníctvom vložených data:
URI. Ak pre svoj projekt definujete politiku zabezpečenia obsahu, ktorá blokuje data:
identifikátory URI pre obrázky, tieto súbory SVG sa nenačítajú. Tento problém môžete obísť extrahovaním vložených súborov SVG pomocou funkcie modulov aktív Webpack.
Nakonfigurujte Webpack na extrahovanie vložených súborov SVG takto:
--- a/webpack/webpack.config.js
+++ b/webpack/webpack.config.js
@@ -16,6 +16,14 @@ module.exports = {
},
module: {
rules: [
+ {
+ mimetype: 'image/svg+xml',
+ scheme: 'data',
+ type: 'asset/resource',
+ generator: {
+ filename: 'icons/[hash].svg'
+ }
+ },
{
test: /\.(scss)$/,
use: [
Po opätovnom spustení npm run build
nájdete súbory SVG extrahované do dist/icons
CSS a správne na ne odkazované.
Vidíte tu niečo nesprávne alebo neaktuálne? Otvorte problém na GitHub . Potrebujete pomoc pri riešení problémov? Vyhľadajte alebo začnite diskusiu na GitHub.