Bootstrap & Webpack
Virallinen opas Bootstrapin CSS:n ja JavaScriptin sisällyttämiseen ja yhdistämiseen projektiisi Webpackin avulla.
Perustaa
Rakennamme Webpack-projektia Bootstrapin avulla tyhjästä, joten meillä on joitain edellytyksiä ja alkuvaiheita ennen kuin voimme todella aloittaa. Tämä opas edellyttää, että sinulla on Node.js asennettuna ja terminaalin tuntemus.
-
Luo projektikansio ja määritä npm. Luomme
my-project
kansion ja alustamme npm:n-y
argumentilla, jotta se ei kysy meiltä kaikkia interaktiivisia kysymyksiä.mkdir my-project && cd my-project npm init -y
-
Asenna Webpack. Seuraavaksi meidän on asennettava Webpack-kehitysriippuvuutemme:
webpack
Webpackin ytimeen,webpack-cli
jotta voimme suorittaa Webpack-komentoja päätteestä jawebpack-dev-server
jotta voimme käyttää paikallista kehityspalvelinta. Käytämme--save-dev
viestiä siitä, että nämä riippuvuudet ovat vain kehityskäyttöön eivätkä tuotantoon.npm i --save-dev webpack webpack-cli webpack-dev-server
-
Asenna Bootstrap. Nyt voimme asentaa Bootstrapin. Asennamme myös Popperin, koska pudotusvalikot, ponnahdusikkunamme ja työkaluvinkkimme riippuvat siitä niiden sijainnista. Jos et aio käyttää näitä komponentteja, voit jättää Popperin pois täältä.
npm i --save bootstrap @popperjs/core
-
Asenna lisäriippuvuuksia. Webpackin ja Bootstrapin lisäksi tarvitsemme vielä muutamia riippuvuuksia Bootstrapin CSS:n ja JS:n oikein tuomiseksi ja niputtamiseksi Webpackin kanssa. Näitä ovat Sass, jotkut kuormaajat ja Autoprefixer.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
Nyt kun kaikki tarvittavat riippuvuudet on asennettu, voimme aloittaa projektitiedostojen luomisen ja Bootstrapin tuomisen.
Hankkeen rakenne
Olemme jo luoneet my-project
kansion ja alustaneet npm:n. Nyt luomme myös kansioitamme src
ja dist
kansioita täydentämään projektin rakennetta. Suorita seuraava osoitteesta my-project
tai luo manuaalisesti alla näkyvä kansio- ja tiedostorakenne.
mkdir {dist,src,src/js,src/scss}
touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js
Kun olet valmis, koko projektisi pitäisi näyttää tältä:
my-project/
├── dist/
│ └── index.html
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js
Tässä vaiheessa kaikki on oikeassa paikassa, mutta Webpack ei toimi, koska emme ole vielä täyttäneet webpack.config.js
.
Määritä Webpack
Kun riippuvuudet on asennettu ja projektikansiomme on valmis aloittamaan koodauksen, voimme nyt määrittää Webpackin ja suorittaa projektimme paikallisesti.
-
Avaa
webpack.config.js
editorissasi. Koska se on tyhjä, meidän on lisättävä siihen joitakin yleiskuvausasetuksia, jotta voimme käynnistää palvelimemme. Tämä osa konfiguraatiosta kertoo Webpackin etsivän projektimme JavaScriptiä, mistä käännetty koodi tulostetaan osoitteeseen (dist
) ja kuinka kehityspalvelimen tulisi käyttäytyä (poimimaandist
kansiosta hot reloadilla).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 } }
-
Seuraavaksi täytämme
dist/index.html
. Tämä on HTML-sivu, jonka Webpack lataa selaimeen käyttääkseen mukana toimitettua CSS:ää ja JS:ää, jonka lisäämme siihen myöhemmissä vaiheissa. Ennen kuin voimme tehdä sen, meidän on annettava sille jotain renderoitavaa ja sisällytettäväoutput
edellisen vaiheen JS.<!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>
Lisäämme tähän hieman Bootstrap-tyyliä
div class="container"
ja<button>
jotta näemme, milloin Webpack lataa Bootstrapin CSS:n. -
Nyt tarvitsemme npm-komentosarjan Webpackin suorittamiseen. Avaa
package.json
ja lisäästart
alla näkyvä skripti (sinulla pitäisi jo olla testiskripti). Käytämme tätä komentosarjaa paikallisen Webpack-kehittäjäpalvelimen käynnistämiseen.{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
Ja lopuksi voimme aloittaa Webpackin. Suorita äskettäin lisätty npm-skripti terminaalisi
my-project
kansiosta:npm start
Tämän oppaan seuraavassa ja viimeisessä osiossa määritämme Webpack-lataajat ja tuomme kaikki Bootstrapin CSS- ja JavaScript-koodit.
Tuo Bootstrap
Bootstrapin tuominen Webpackiin vaatii ensimmäisessä osiossa asentamamme lataajat. Olemme asentaneet ne npm:llä, mutta nyt Webpack on määritettävä käyttämään niitä.
-
Asenna kuormaajat sisään
webpack.config.js
. Määritystiedostosi on nyt valmis ja sen pitäisi vastata alla olevaa katkelmaa. Ainoa uusi osa tässä onmodule
jakso.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' } ] } ] } }
Tässä on yhteenveto siitä, miksi tarvitsemme kaikkia näitä kuormaajia.
style-loader
ruiskuttaa CSS :n HTML-sivun<style>
elementtiin , auttaa ja käytössä , tarvitaan Autoprefixerille ja sallii Sassin käytön.<head>
css-loader
@import
url()
postcss-loader
sass-loader
-
Tuodaan nyt Bootstrapin CSS. Lisää seuraava
src/scss/styles.scss
kohtaan tuodaksesi kaikki Bootstrapin lähdekoodit Sass.// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
Voit halutessasi myös tuoda tyylisivumme yksitellen. Lue lisätietoja Sass-tuontiasiakirjoistamme .
-
Seuraavaksi lataamme CSS:n ja tuomme Bootstrapin JavaScriptin. Lisää seuraava
src/js/main.js
kohtaan ladataksesi CSS ja tuodaksesi kaikki Bootstrapin JS-tiedostot. Popper tuodaan automaattisesti Bootstrapin kautta.// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
Voit myös tuoda JavaScript-laajennuksia yksitellen tarpeen mukaan pitääksesi nippukoot pienenä:
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
Lue JavaScript-dokumenteistamme lisätietoja Bootstrapin lisäosien käytöstä.
-
Ja olet valmis! 🎉 Kun Bootstrapin lähde Sass ja JS on ladattu täyteen, paikallisen kehityspalvelimesi pitäisi nyt näyttää tältä.
Nyt voit aloittaa minkä tahansa Bootstrap-komponenttien lisäämisen, joita haluat käyttää. Muista tarkistaa täydellinen Webpack-esimerkkiprojekti , kuinka voit sisällyttää mukautettuja Sass-tiedostoja ja optimoida koontiversiosi tuomalla vain tarvitsemasi Bootstrapin CSS- ja JS-osat.
Tuotannon optimoinnit
Asetuksistasi riippuen saatat haluta toteuttaa joitain lisäturva- ja nopeusoptimointeja, jotka ovat hyödyllisiä projektin suorittamiseksi tuotannossa. Huomaa, että näitä optimointeja ei käytetä Webpack-esimerkkiprojektissa, ja ne on sinun tehtäväsi toteuttaa.
Puretaan CSS
Yllä style-loader
määrittämämme lähettää kätevästi CSS:n nippuun, joten CSS-tiedoston manuaalinen lataaminen dist/index.html
ei ole tarpeen. Tämä lähestymistapa ei kuitenkaan välttämättä toimi tiukan sisällön suojauskäytännön kanssa, ja siitä voi tulla sovelluksesi pullonkaula suuren nippukoon vuoksi.
Erota CSS, jotta voimme ladata sen suoraan osoitteesta dist/index.html
, käyttämällä mini-css-extract-loader
Webpack-laajennusta.
Asenna ensin laajennus:
npm install --save-dev mini-css-extract-plugin
Instantoi sitten ja käytä laajennusta Webpack-kokoonpanossa:
--- 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
},
{
Uudelleen suorituksen npm run build
jälkeen tulee uusi tiedosto dist/main.css
, joka sisältää kaiken käyttäjän tuoman CSS:n src/js/main.js
. Jos tarkastelet dist/index.html
nyt selaimessasi, tyyli puuttuu, koska se on nyt dist/main.css
. Voit sisällyttää luodun CSS:n dist/index.html
seuraavasti:
--- 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>
Puretaan SVG-tiedostoja
Bootstrapin CSS sisältää useita viittauksia SVG-tiedostoihin upotetun data:
URI:n kautta. Jos määrität projektillesi sisällön suojauskäytännön, joka estää data:
kuvien URI:t, nämä SVG-tiedostot eivät lataudu. Voit kiertää tämän ongelman purkamalla upotetut SVG-tiedostot Webpackin omaisuusmoduuliominaisuuden avulla.
Määritä Webpack purkamaan upotetut SVG-tiedostot seuraavasti:
--- 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: [
Kun olet suorittanut npm run build
sen uudelleen, löydät SVG-tiedostot purettuna dist/icons
CSS:ään ja niihin viitataan oikein.
Näetkö tässä jotain vialla tai vanhentunutta? Avaa ongelma GitHubissa . Tarvitsetko apua vianetsinnässä? Hae tai aloita keskustelu GitHubissa.