Bootstrap & Webpack
A guida ufficiale per cumu include è bundle CSS è JavaScript di Bootstrap in u vostru prughjettu cù Webpack.
Istituisci
Custruemu un prughjettu Webpack cù Bootstrap da zero, dunque ci sò alcuni prerequisiti è passi in prima prima di pudè veramente inizià. Questa guida deve esse installatu Node.js è una certa familiarità cù u terminal.
-
Crea un cartulare di prughjettu è cunfigurà npm. Creemu u
my-project
cartulare è inizializemu npm cù l'-y
argumentu per evità di dumandà tutte e dumande interattive.mkdir my-project && cd my-project npm init -y
-
Installa Webpack. Dopu avemu bisognu di installà e nostre dipendenze di sviluppu Webpack:
webpack
per u core di Webpack,webpack-cli
cusì pudemu eseguisce cumandamenti Webpack da u terminal, èwebpack-dev-server
cusì pudemu eseguisce un servitore di sviluppu lucale. Avemu usatu--save-dev
per signalà chì queste dipendenze sò solu per l'usu di sviluppu è micca per a produzzione.npm i --save-dev webpack webpack-cli webpack-dev-server
-
Installa Bootstrap. Avà pudemu installà Bootstrap. Puderemu ancu installà Popper postu chì i nostri dropdowns, popovers, è tooltips dipendenu da ellu per u so pusizzioni. Se ùn pensate micca di utilizà quelli cumpunenti, pudete omette Popper quì.
npm i --save bootstrap @popperjs/core
-
Installa dipendenze supplementari. In più di Webpack è Bootstrap, avemu bisognu di uni pochi di più dipendenze per impurtà bè è bundle CSS è JS di Bootstrap cù Webpack. Questi include Sass, alcuni caricatori, è Autoprefixer.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
Avà chì avemu tutte e dependenzi necessarii installati, pudemu avè u travagliu per creà i schedarii di prughjettu è impurtà Bootstrap.
Struttura di u prugettu
Avemu digià creatu u my-project
cartulare è inizializatu npm. Avà avemu Mulateri Di L'ancu crià u nostru src
è dist
cartulare à round fora a struttura di u prugettu. Eseguite i seguenti da my-project
, o creà manualmente u cartulare è a struttura di u schedariu mostrata quì sottu.
mkdir {dist,src,src/js,src/scss}
touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js
Quandu avete finitu, u vostru prughjettu cumpletu deve esse cusì:
my-project/
├── dist/
│ └── index.html
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js
À questu puntu, tuttu hè in u locu ghjustu, ma Webpack ùn funziona micca perchè ùn avemu micca cumpletu u nostru webpack.config.js
.
Configurate Webpack
Cù dipendenze installate è u nostru cartulare di prughjettu prontu per noi per inizià a codificazione, pudemu avà cunfigurà Webpack è eseguisce u nostru prughjettu in u locu.
-
Aprite
webpack.config.js
in u vostru editore. Siccomu hè viotu, avemu bisognu di aghjunghje un pocu di cunfigurazione boilerplate per pudè inizià u nostru servitore. Questa parte di a cunfigurazione dice chì Webpack anu da circà u JavaScript di u nostru prughjettu, induve u codice compilatu à (dist
), è cumu si deve cumportà u servore di sviluppu (tirà da udist
cartulare cù ricaricamentu caldu).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 } }
-
Dopu compiemu i nostri
dist/index.html
. Questa hè a pagina HTML Webpack caricarà in u navigatore per utilizà u CSS è JS bundle chì aghjunghjemu in i passi più tardi. Prima di pudè fà quessa, avemu da dà qualcosa per rende è include uoutput
JS da u passu precedente.<!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>
Avemu includendu un pocu di stile Bootstrap quì cù u
div class="container"
è<button>
cusì chì vedemu quandu u CSS di Bootstrap hè caricatu da Webpack. -
Avà avemu bisognu di un script npm per eseguisce Webpack. Apertura
package.json
è aghjunghje ustart
script mostratu quì sottu (avete digià avè u script di prova). Useremu stu script per inizià u nostru servitore locale di Webpack dev.{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
È infine, pudemu inizià Webpack. Da u
my-project
cartulare in u vostru terminal, eseguite quellu script npm novu aghjuntu:npm start
In a sezione successiva è finale di sta guida, cunfiguremu i caricatori di Webpack è impurtaremu tutti i CSS è JavaScript di Bootstrap.
Import Bootstrap
L'importazione di Bootstrap in Webpack richiede i caricatori chì avemu installatu in a prima sezione. L'avemu installatu cù npm, ma avà Webpack deve esse cunfiguratu per aduprà.
-
Configurate i caricatori in
webpack.config.js
. U vostru schedariu di cunfigurazione hè avà cumpletu è deve currisponde à u snippet sottu. L'unica parte nova quì hè amodule
sezione.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' } ] } ] } }
Eccu un riassuntu di perchè avemu bisognu di tutti questi caricatori.
style-loader
injects the CSS in un<style>
elementu in a<head>
pagina HTML,css-loader
aiuta cù l'usu@import
èurl()
,postcss-loader
hè necessariu per Autoprefixer, èsass-loader
ci permette di utilizà Sass. -
Avà, impurtà u CSS di Bootstrap. Aghjunghjite i seguenti à
src/scss/styles.scss
impurtà tutte e fonti di Bootstrap Sass.// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
Pudete ancu impurtà i nostri stili individuali se vulete. Leghjite i nostri documenti di importazione Sass per i dettagli.
-
In seguitu carchemu u CSS è impurtate u JavaScript di Bootstrap. Aghjunghjite i seguenti à
src/js/main.js
per carricà u CSS è impurtà tuttu u JS di Bootstrap. Popper serà impurtatu automaticamente attraversu Bootstrap.// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
Pudete ancu impurtà i plugins JavaScript individualmente cumu necessariu per mantene e dimensioni di i pacchetti:
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
Leghjite i nostri documenti JavaScript per più infurmazione nantu à cumu utilizà i plugins di Bootstrap.
-
È avete finitu ! 🎉 Cù a fonte di Bootstrap Sass è JS cumplettamente caricate, u vostru servitore di sviluppu lucale deve avà vede cusì.
Avà pudete cumincià à aghjunghje qualsiasi cumpunenti Bootstrap chì vulete usà. Assicuratevi di verificà u prughjettu di esempiu Webpack cumpletu per cumu include Sass persunalizatu supplementu è ottimisate a vostra custruzione impurtendu solu e parti di CSS è JS di Bootstrap chì avete bisognu.
Ottimisazioni di pruduzzione
Sicondu a vostra cunfigurazione, pudete vulete implementà alcune ottimisazioni di sicurezza è velocità supplementari utili per eseguisce u prugettu in produzzione. Innota chì queste ottimisazioni ùn sò micca applicate nantu à u prughjettu di esempiu Webpack è sò à voi per implementà.
Estrazione di CSS
I style-loader
cunfigurati quì sopra emettenu CSS in u pacchettu in modu chì carica manualmente un schedariu CSS ùn dist/index.html
hè micca necessariu. Stu approcciu ùn pò micca funzionà cù una stretta Pulitica di Sicurezza di u Contenutu, però, è pò diventà un collu di bottiglia in a vostra applicazione per via di a grande dimensione di bundle.
Per separà u CSS in modu chì pudemu caricallu direttamente da dist/index.html
, utilizate u mini-css-extract-loader
plugin Webpack.
Prima, installate u plugin:
npm install --save-dev mini-css-extract-plugin
Allora istanziate è utilizate u plugin in a cunfigurazione 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
},
{
Dopu avè npm run build
tornatu, ci sarà un novu schedariu dist/main.css
, chì cuntene tutti i CSS impurtati da src/js/main.js
. Se vede dist/index.html
in u vostru navigatore avà, u stilu serà mancatu, cum'è avà hè in dist/main.css
. Pudete include u CSS generatu dist/index.html
cusì cusì:
--- 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>
Estrazione di fugliali SVG
U CSS di Bootstrap include parechje referenze à i fugliali SVG via data:
URI inline. Se definisce una Politica di Sicurezza di u Contenutu per u vostru prughjettu chì blucca l' data:
URI per l'imaghjini, allora questi schedari SVG ùn caricanu micca. Pudete aggira stu prublema estrattendu i fugliali SVG inline usendu a funzione di moduli di asset di Webpack.
Configurate Webpack per estrae i fugliali SVG in linea cum'è questu:
--- 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: [
Dopu avè npm run build
tornatu, truverete i fugliali SVG estratti in dist/icons
CSS è riferenziati currettamente.
Vede qualcosa di sbagliatu o fora di data quì? Per piacè apre un prublema in GitHub . Avete bisognu di aiutu per risolve i prublemi? Cerca o principià una discussione in GitHub.