Bootstrap & Webpack
Opinber leiðarvísir um hvernig á að innihalda og sameina Bootstrap CSS og JavaScript í verkefnið þitt með því að nota Webpack.
Uppsetning
Við erum að byggja upp Webpack verkefni með Bootstrap frá grunni, svo það eru nokkrar forsendur og fyrstu skref áður en við getum byrjað fyrir alvöru. Þessi handbók krefst þess að þú hafir Node.js uppsett og þekkir flugstöðina.
-
Búðu til verkefnamöppu og settu upp npm. Við búum til
my-project
möppuna og frumstillum npm með-y
rökunum til að forðast að hún spyrji okkur allra gagnvirku spurninganna.mkdir my-project && cd my-project npm init -y
-
Settu upp Webpack. Næst þurfum við að setja upp Webpack þróunarfíknina okkar:
webpack
fyrir kjarna Webpack,webpack-cli
svo við getum keyrt Webpack skipanir frá flugstöðinni ogwebpack-dev-server
svo við getum keyrt staðbundinn þróunarþjón. Við notum--save-dev
til að gefa til kynna að þessi ósjálfstæði séu aðeins til notkunar í þróun en ekki til framleiðslu.npm i --save-dev webpack webpack-cli webpack-dev-server
-
Settu upp Bootstrap. Nú getum við sett upp Bootstrap. Við munum einnig setja upp Popper þar sem fellivalmyndir okkar, sprettigluggar og verkfæraleiðbeiningar eru háðar staðsetningu þeirra. Ef þú ætlar ekki að nota þessa íhluti geturðu sleppt Popper hér.
npm i --save bootstrap @popperjs/core
-
Settu upp fleiri ósjálfstæði. Til viðbótar við Webpack og Bootstrap, þurfum við nokkrar fleiri ósjálfstæðir til að flytja inn og sameina Bootstrap's CSS og JS með Webpack. Þar á meðal eru Sass, sumir hleðslutæki og Autoprefixer.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
Nú þegar við höfum öll nauðsynleg ósjálfstæði uppsett, getum við byrjað að búa til verkefnaskrárnar og flytja inn Bootstrap.
Uppbygging verkefnis
Við höfum þegar búið til my-project
möppuna og frumstillt npm. Nú munum við líka búa til okkar src
og dist
möppur til að klára verkefnisskipulagið. Keyrðu eftirfarandi úr my-project
, eða búðu til handvirkt möppuna og skráarskipulagið sem sýnt er hér að neðan.
mkdir {dist,src,src/js,src/scss}
touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js
Þegar þú ert búinn ætti heildarverkefnið þitt að líta svona út:
my-project/
├── dist/
│ └── index.html
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js
Á þessum tímapunkti er allt á réttum stað, en Webpack mun ekki virka vegna þess að við höfum ekki fyllt út okkar webpack.config.js
ennþá.
Stilla Webpack
Með ósjálfstæði uppsett og verkefnamöppan okkar tilbúin fyrir okkur til að byrja að kóða, getum við nú stillt Webpack og keyrt verkefnið okkar á staðnum.
-
Opnaðu
webpack.config.js
í ritlinum þínum. Þar sem það er autt, þurfum við að bæta einhverjum boilerplate config við það svo við getum ræst þjóninn okkar. Þessi hluti af stillingunni segir Webpack að leita að JavaScript verkefnisins okkar, hvar á að gefa út samantekna kóðann í (dist
), og hvernig þróunarþjónninn ætti að haga sér (draga úrdist
möppunni með heitri endurhleðslu).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 } }
-
Næst fyllum við út okkar
dist/index.html
. Þetta er HTML síðan sem Webpack mun hlaða í vafranum til að nota búnt CSS og JS sem við munum bæta við það í síðari skrefum. Áður en við getum gert það verðum við að gefa því eitthvað til að gera og innihaldaoutput
JS frá fyrra skrefi.<!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>
Við erum að setja smá af Bootstrap stíl hér með
div class="container"
og<button>
svo að við sjáum hvenær CSS Bootstrap er hlaðið af Webpack. -
Nú þurfum við npm skriftu til að keyra Webpack. Opnaðu
package.json
og bættu viðstart
handritinu sem sýnt er hér að neðan (þú ættir nú þegar að hafa prófunarforskriftina). Við munum nota þetta handrit til að ræsa staðbundna Webpack þróunarþjóninn okkar.{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
Og loksins getum við byrjað Webpack. Í
my-project
möppunni í flugstöðinni þinni skaltu keyra þetta nýlega bætta npm forskrift:npm start
Í næsta og síðasta hluta þessarar handbókar munum við setja upp Webpack hleðslutækin og flytja inn allt CSS og JavaScript frá Bootstrap.
Flytja inn Bootstrap
Innflutningur Bootstrap í Webpack krefst hleðslutækja sem við settum upp í fyrsta hlutanum. Við höfum sett þá upp með npm, en nú þarf að stilla Webpack til að nota þá.
-
Settu upp hleðslutækin í
webpack.config.js
. Stillingarskránni þinni er nú lokið og ætti að passa við brotið hér að neðan. Eini nýi hlutinn hér ermodule
kaflinn.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' } ] } ] } }
Hér er samantekt á því hvers vegna við þurfum öll þessi hleðslutæki.
style-loader
dælir CSS inn í<style>
frumefni<head>
á HTML síðunni,css-loader
hjálpar við að nota@import
ogurl()
,postcss-loader
er nauðsynlegt fyrir Autoprefixer ogsass-loader
gerir okkur kleift að nota Sass. -
Nú skulum við flytja inn CSS Bootstrap. Bættu eftirfarandi við til
src/scss/styles.scss
að flytja inn allan uppruna Sass frá Bootstrap.// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
Þú getur líka flutt inn stílblöðin okkar fyrir sig ef þú vilt. Lestu Sass innflutningsskjölin okkar fyrir frekari upplýsingar.
-
Næst hleðum við CSS og flytjum inn JavaScript Bootstrap. Bættu eftirfarandi við til
src/js/main.js
að hlaða CSS og flytja inn alla Bootstrap's JS. Popper verður fluttur inn sjálfkrafa í gegnum Bootstrap.// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
Þú getur líka flutt inn JavaScript viðbætur hver fyrir sig eftir þörfum til að halda búntastærðum niðri:
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
Lestu JavaScript skjölin okkar til að fá frekari upplýsingar um hvernig á að nota viðbætur Bootstrap.
-
Og þú ert búinn! 🎉 Með uppruna Sass og JS frá Bootstrap fullhlaðin ætti staðbundinn þróunarþjónn þinn núna að líta svona út.
Nú geturðu byrjað að bæta við hvaða Bootstrap íhlutum sem þú vilt nota. Vertu viss um að skoða heildar Webpack dæmi verkefnið um hvernig á að innihalda viðbótar sérsniðið Sass og fínstilla byggingu þína með því að flytja aðeins inn þá hluta Bootstrap CSS og JS sem þú þarft.
Framleiðsluhagræðingar
Það fer eftir uppsetningu þinni, þú gætir viljað innleiða nokkrar viðbótaröryggis- og hraðastillingar sem eru gagnlegar til að keyra verkefnið í framleiðslu. Athugaðu að þessar hagræðingar eru ekki notaðar á Webpack dæmi verkefninu og er undir þér komið að útfæra.
Að draga út CSS
Það style-loader
sem við stilltum hér að ofan sendir CSS á þægilegan hátt í búntinn þannig að dist/index.html
ekki er nauðsynlegt að hlaða CSS skrá handvirkt inn. Þessi nálgun gæti hins vegar ekki virkað með ströngum öryggisstefnu um efni og hún gæti orðið flöskuháls í umsókn þinni vegna stórrar búntastærðar.
Til að aðskilja CSS þannig að við getum hlaðið það beint frá dist/index.html
, notaðu mini-css-extract-loader
Webpack viðbótina.
Settu fyrst upp viðbótina:
npm install --save-dev mini-css-extract-plugin
Settu síðan upp og notaðu viðbótina í uppsetningu 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
},
{
Eftir að hafa keyrt npm run build
aftur mun það koma ný skrá dist/main.css
sem mun innihalda allt CSS sem flutt er inn af src/js/main.js
. Ef þú skoðar dist/index.html
í vafranum þínum núna vantar stílinn, eins og hann er núna í dist/main.css
. Þú getur látið mynda CSS fylgja með dist/index.html
svona:
--- 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>
Að draga út SVG skrár
CSS Bootstrap inniheldur margar tilvísanir í SVG skrár í gegnum innbyggða data:
URI. Ef þú skilgreinir efnisöryggisstefnu fyrir verkefnið þitt sem hindrar data:
URI fyrir myndir, þá hlaðast þessar SVG skrár ekki. Þú getur komist í kringum þetta vandamál með því að draga út innbyggðu SVG skrárnar með því að nota eignaeiningareiginleika Webpack.
Stilltu Webpack til að draga út innbyggðar SVG skrár eins og þetta:
--- 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: [
Eftir að hafa keyrt npm run build
aftur muntu finna SVG skrárnar sem eru unnar út í dist/icons
CSS og vísað til þeirra á réttan hátt.
Sérðu eitthvað rangt eða úrelt hér? Vinsamlegast opnaðu mál á GitHub . Þarftu hjálp við bilanaleit? Leitaðu eða byrjaðu umræðu á GitHub.