Bootstrap & Webpack
Պաշտոնական ուղեցույց, թե ինչպես ներառել և փաթեթավորել Bootstrap-ի CSS-ը և JavaScript-ը ձեր նախագծում՝ օգտագործելով Webpack-ը:
Կարգավորում
Մենք զրոյից կառուցում ենք Webpack նախագիծ Bootstrap-ով, այնպես որ կան որոշ նախադրյալներ և առաջնահերթ քայլեր նախքան իսկապես սկսելը: Այս ուղեցույցը պահանջում է, որ դուք ունենաք Node.js-ի տեղադրում և որոշակի ծանոթություն տերմինալի հետ:
-
Ստեղծեք նախագծի թղթապանակ և կարգավորեք npm: Մենք կստեղծենք
my-project
թղթապանակը և նախաստորագրենք npm-ը-y
արգումենտով, որպեսզի խուսափենք մեզ բոլոր ինտերակտիվ հարցերից:mkdir my-project && cd my-project npm init -y
-
Տեղադրեք Webpack. Այնուհետև մենք պետք է տեղադրենք մեր Webpack-ի մշակման կախվածությունը
webpack
՝ Webpack-ի հիմքի համար,webpack-cli
որպեսզի կարողանանք գործարկել Webpack հրամանները տերմինալից, ևwebpack-dev-server
այդպիսով մենք կարող ենք գործարկել տեղական զարգացման սերվեր: Մենք օգտագործում--save-dev
ենք ազդանշան տալու, որ այդ կախվածությունները միայն զարգացման համար են, այլ ոչ արտադրության համար:npm i --save-dev webpack webpack-cli webpack-dev-server
-
Տեղադրեք Bootstrap-ը: Այժմ մենք կարող ենք տեղադրել Bootstrap: Մենք նաև կտեղադրենք Popper-ը, քանի որ մեր բացվող էջերը, popover-ները և գործիքների հուշումները կախված են դրանցից իրենց դիրքավորման համար: Եթե դուք չեք պլանավորում օգտագործել այդ բաղադրիչները, կարող եք այստեղ բաց թողնել Popper-ը:
npm i --save bootstrap @popperjs/core
-
Տեղադրեք լրացուցիչ կախվածություն: Բացի Webpack-ից և Bootstrap-ից, մեզ անհրաժեշտ են ևս մի քանի կախվածություն Bootstrap-ի CSS-ն ու JS-ը Webpack-ով պատշաճ ներմուծելու և փաթեթավորելու համար: Դրանք ներառում են Sass-ը, որոշ բեռնիչներ և Autoprefixer:
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
Այժմ, երբ մենք տեղադրված ենք բոլոր անհրաժեշտ կախվածությունները, մենք կարող ենք սկսել աշխատել նախագծի ֆայլերի ստեղծման և Bootstrap-ի ներմուծման վրա:
Ծրագրի կառուցվածքը
Մենք արդեն ստեղծել ենք my-project
թղթապանակը և սկզբնավորել npm: Այժմ մենք նաև կստեղծենք մեր src
և dist
պանակները՝ նախագծի կառուցվածքը կլորացնելու համար: Գործարկեք հետևյալը my-project
կամ ձեռքով ստեղծեք ստորև ներկայացված թղթապանակը և ֆայլի կառուցվածքը:
mkdir {dist,src,src/js,src/scss}
touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js
Երբ ավարտեք, ձեր ամբողջական նախագիծը պետք է այսպիսի տեսք ունենա.
my-project/
├── dist/
│ └── index.html
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js
Այս պահին ամեն ինչ ճիշտ տեղում է, բայց Webpack-ը չի աշխատի, քանի որ մենք webpack.config.js
դեռ չենք լրացրել մերը:
Կարգավորել Webpack
Տեղադրված կախվածություններով և մեր ծրագրի թղթապանակը պատրաստ է, որպեսզի մենք սկսենք կոդավորումը, մենք այժմ կարող ենք կարգավորել Webpack-ը և գործարկել մեր նախագիծը տեղում:
-
Բացեք
webpack.config.js
ձեր խմբագրում: Քանի որ այն դատարկ է, մենք պետք է դրան ավելացնենք կաթսայի կոնֆիգուրացիա, որպեսզի կարողանանք գործարկել մեր սերվերը: Կազմաձևի այս հատվածն ասում է, որ Webpack-ը պետք է փնտրի մեր նախագծի JavaScript-ը, որտեղ պետք է դուրս բերի կոմպիլացված կոդը (dist
) և ինչպես պետք է վարվի մշակման սերվերը (թղթապանակից հանելովdist
տաք վերաբեռնումով):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 } }
-
Հաջորդիվ լրացնում ենք մեր
dist/index.html
. Սա այն HTML էջն է, որը Webpack-ը կբեռնվի զննարկիչում՝ օգտագործելու CSS-ն ու JS-ը, որոնք մենք կավելացնենք դրան հետագա քայլերում: Մինչև մենք կարող ենք դա անել, մենք պետք է դրան տրամադրենք ինչ-որ բան, որպեսզի այն ներկայացվի և ներառիoutput
նախորդ քայլի 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>
Մենք ներառում ենք Bootstrap-ի մի փոքր ոճավորում այստեղ
div class="container"
և<button>
այնպես, որ տեսնենք, թե երբ է Bootstrap-ի CSS-ը բեռնվում Webpack-ի կողմից: -
Այժմ մեզ անհրաժեշտ է npm սկրիպտ՝ Webpack-ը գործարկելու համար: Բացեք
package.json
և ավելացրեքstart
ստորև ներկայացված սցենարը (դուք արդեն պետք է ունենաք թեստային սցենարը): Մենք կօգտագործենք այս սցենարը մեր տեղական Webpack մշակող սերվերը գործարկելու համար:{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
Եվ վերջապես, մենք կարող ենք սկսել Webpack-ը: Ձեր տերմինալի
my-project
թղթապանակից գործարկեք նոր ավելացված npm սցենարը.npm start
Այս ուղեցույցի հաջորդ և վերջին բաժնում մենք կտեղադրենք Webpack բեռնիչները և կներմուծենք Bootstrap-ի CSS-ն ու JavaScript-ը:
Ներմուծեք Bootstrap
Bootstrap-ը Webpack ներմուծելու համար անհրաժեշտ են բեռնիչներ, որոնք մենք տեղադրել ենք առաջին բաժնում: Մենք դրանք տեղադրել ենք npm-ով, բայց այժմ Webpack-ը պետք է կարգավորվի դրանք օգտագործելու համար:
-
Տեղադրեք բեռնիչները
webpack.config.js
: Ձեր կազմաձևման ֆայլն այժմ ավարտված է և պետք է համապատասխանի ստորև բերված հատվածին: Այստեղ միակ նոր մասըmodule
բաժինն է: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' } ] } ] } }
Ահա, թե ինչու են մեզ անհրաժեշտ այս բոլոր բեռնիչները:
style-loader
ներարկում է CSS-ը HTML էջի<style>
տարրի մեջ , օգնում է օգտագործել և , պահանջվում է Autoprefixer-ի համար և թույլ է տալիս մեզ օգտագործել Sass-ը:<head>
css-loader
@import
url()
postcss-loader
sass-loader
-
Հիմա եկեք ներմուծենք Bootstrap-ի CSS-ը: Ավելացրեք հետևյալը
src/scss/styles.scss
՝ Bootstrap-ի Sass-ի բոլոր աղբյուրները ներմուծելու համար:// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
Եթե ցանկանում եք, կարող եք նաև անհատապես ներմուծել մեր ոճաթերթերը: Մանրամասների համար կարդացեք մեր Sass ներմուծման փաստաթղթերը :
-
Հաջորդը մենք բեռնում ենք CSS-ը և ներմուծում Bootstrap-ի JavaScript-ը: Ավելացրեք հետևյալը
src/js/main.js
՝ CSS-ը բեռնելու և Bootstrap-ի բոլոր JS-ները ներմուծելու համար: Popper-ը ավտոմատ կերպով կներմուծվի Bootstrap-ի միջոցով:// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
Դուք կարող եք նաև անհատականորեն ներմուծել JavaScript պլագինները՝ ըստ անհրաժեշտության՝ փաթեթների չափերը փոքրացնելու համար.
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
Կարդացեք մեր JavaScript փաստաթղթերը Bootstrap-ի պլագինների օգտագործման վերաբերյալ լրացուցիչ տեղեկությունների համար:
-
Եվ դու վերջացրիր: 🎉 Եթե Bootstrap-ի Sass-ի և JS-ի աղբյուրները լիովին բեռնված են, ձեր տեղական զարգացման սերվերն այժմ պետք է այսպիսի տեսք ունենա:
Այժմ կարող եք սկսել ավելացնել Bootstrap-ի ցանկացած բաղադրիչ, որը ցանկանում եք օգտագործել: Համոզվեք, որ ստուգեք ամբողջական Webpack-ի օրինակ նախագիծը , թե ինչպես ներառել լրացուցիչ մաքսային Sass և օպտիմալացնել ձեր կառուցվածքը՝ ներմուծելով միայն Bootstrap-ի CSS-ի և JS-ի այն մասերը, որոնք ձեզ անհրաժեշտ են:
Արտադրության օպտիմալացում
Կախված ձեր կարգավորումից, դուք կարող եք կիրառել անվտանգության և արագության լրացուցիչ օպտիմիզացումներ, որոնք օգտակար են նախագիծը արտադրության մեջ գործարկելու համար: Նկատի ունեցեք, որ այս օպտիմալացումները չեն կիրառվում Webpack-ի օրինակ նախագծում և ձեր գործն է:
CSS-ի արդյունահանում
Վերևում style-loader
մենք կազմաձևեցինք CSS-ը փաթեթում, որպեսզի CSS ֆայլը ձեռքով բեռնելն dist/index.html
անհրաժեշտ չէ: Այնուամենայնիվ, այս մոտեցումը կարող է չաշխատել բովանդակության անվտանգության խիստ քաղաքականության հետ, և այն կարող է խոչընդոտ դառնալ ձեր հավելվածում՝ փաթեթի մեծ չափի պատճառով:
CSS-ն առանձնացնելու համար, որպեսզի կարողանանք այն ուղղակիորեն բեռնել ից dist/index.html
, օգտագործեք mini-css-extract-loader
Webpack հավելվածը:
Նախ, տեղադրեք plugin-ը.
npm install --save-dev mini-css-extract-plugin
Այնուհետև տեղադրեք և օգտագործեք հավելվածը 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
},
{
Կրկին գործարկումից հետո npm run build
կլինի նոր ֆայլ dist/main.css
, որը կպարունակի ամբողջ CSS-ը, որը ներմուծվել է src/js/main.js
. Եթե dist/index.html
հիմա դիտեք ձեր բրաուզերում, ոճը կբացակայի, ինչպես հիմա է dist/main.css
: Ստեղծված CSS-ը կարող եք ներառել dist/index.html
այսպես.
--- 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>
SVG ֆայլերի արդյունահանում
Bootstrap-ի CSS-ը ներառում է բազմաթիվ հղումներ SVG ֆայլերին ներկառուցված data:
URI-ների միջոցով: Եթե ձեր նախագծի համար սահմանեք բովանդակության անվտանգության քաղաքականություն, որն արգելափակում data:
է URI-ները պատկերների համար, ապա այս SVG ֆայլերը չեն բեռնվի: Դուք կարող եք հաղթահարել այս խնդիրը՝ արդյունահանելով ներկառուցված SVG ֆայլերը՝ օգտագործելով Webpack-ի ակտիվների մոդուլների հատկությունը:
Կազմաձևեք Webpack-ը՝ ներկառուցված SVG ֆայլեր հանելու համար, ինչպիսիք են.
--- 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: [
Կրկին գործարկվելուց հետո npm run build
դուք կգտնեք SVG ֆայլերը, որոնք արդյունահանվել են dist/icons
և պատշաճ կերպով հղում կատարել CSS-ից:
Տեսնու՞մ եք այստեղ ինչ-որ բան սխալ կամ հնացած: Խնդրում ենք բացել խնդիր GitHub-ում : Օգնությա՞ն է պետք անսարքությունների վերացման համար: Որոնեք կամ սկսեք քննարկում GitHub-ում: