Bootstrap va veb-paket
Webpack yordamida loyihangizga Bootstrap-ning CSS va JavaScript-ni qanday kiritish va to'plash bo'yicha rasmiy qo'llanma.
Sozlash; o'rnatish
Biz noldan boshlab Bootstrap bilan Webpack loyihasini qurmoqdamiz, shuning uchun biz chindan ham boshlashimiz uchun ba'zi bir shartlar va oldingi qadamlar mavjud. Ushbu qo'llanma sizdan Node.js o'rnatilgan bo'lishi va terminal bilan biroz tanish bo'lishingizni talab qiladi.
-
Loyiha papkasini yarating va npm ni o'rnating. Biz papkani yaratamiz va barcha interaktiv savollarni bermaslik uchun argument
my-project
bilan npm ni ishga tushiramiz.-y
mkdir my-project && cd my-project npm init -y
-
Webpack-ni o'rnating. Keyin biz Webpackni ishlab chiqishga bog'liqliklarini o'rnatishimiz kerak: Webpack
webpack
yadrosi uchun,webpack-cli
biz terminaldan Webpack buyruqlariniwebpack-dev-server
ishga tushirishimiz va mahalliy ishlab chiqish serverini ishga tushirishimiz uchun. Biz--save-dev
ushbu bog'liqliklar ishlab chiqarish uchun emas, balki faqat ishlab chiqish uchun ekanligini bildirish uchun foydalanamiz.npm i --save-dev webpack webpack-cli webpack-dev-server
-
Bootstrap-ni o'rnating. Endi biz Bootstrap-ni o'rnatishimiz mumkin. Shuningdek, biz Popperni o'rnatamiz, chunki bizning ochiladigan menyular, popoverlar va maslahatlar ularning joylashishiga bog'liq. Agar siz ushbu komponentlardan foydalanishni rejalashtirmasangiz, bu erda Popperni qoldirishingiz mumkin.
npm i --save bootstrap @popperjs/core
-
Qo'shimcha bog'liqliklarni o'rnating. Bootstrap-ning CSS va JS-larini Webpack bilan to'g'ri import qilish va to'plash uchun Webpack va Bootstrap-ga qo'shimcha ravishda bizga yana bir nechta bog'liqliklar kerak. Bularga Sass, ba'zi yuklagichlar va Autoprefixer kiradi.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
Endi bizda barcha kerakli bog'liqliklar o'rnatilgan bo'lsa, biz loyiha fayllarini yaratish va Bootstrap-ni import qilishni boshlashimiz mumkin.
Loyiha tuzilishi
Biz allaqachon my-project
jildni yaratdik va npm ni ishga tushirdik. Endi biz loyiha tuzilmasini yaxlitlash uchun o'zimizning src
va papkalarimizni ham yaratamiz. dist
dan quyidagilarni ishga tushiring my-project
yoki quyida ko'rsatilgan papka va fayl strukturasini qo'lda yarating.
mkdir {dist,src,src/js,src/scss}
touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js
Ishingiz tugagach, to'liq loyihangiz quyidagicha ko'rinishi kerak:
my-project/
├── dist/
│ └── index.html
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js
Ayni paytda hamma narsa o'z joyida, lekin Webpack ishlamaydi, chunki biz webpack.config.js
hali to'ldirmaganmiz.
Webpackni sozlang
O'rnatilgan bog'liqliklar va loyiha papkamiz kodlashni boshlashimiz uchun tayyor bo'lsa, endi biz Webpackni sozlashimiz va loyihamizni mahalliy sifatida ishga tushirishimiz mumkin.
-
Muharriringizda oching
webpack.config.js
. U bo'sh bo'lgani uchun serverimizni ishga tushirishimiz uchun unga ba'zi qozon konfiguratsiyasini qo'shishimiz kerak bo'ladi. Konfiguratsiyaning ushbu qismi Webpack-ga loyihamizning JavaScript-ni qidirishi, kompilyatsiya qilingan kodni qayerda (dist
) ga chiqarishi va ishlab chiqish serveri qanday ishlashi kerakligi (dist
qayta yuklangan papkadan olib tashlash) kerakligini aytadi.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 } }
-
Keyin biz o'zimizni to'ldiramiz
dist/index.html
. Bu CSS va JS-dan foydalanish uchun veb-paket brauzerga yuklanadigan HTML-sahifa bo'lib, biz unga keyingi bosqichlarda qo'shamiz. Buni qilishdan oldin, biz unga ko'rsatish uchun biror narsa berishimiz vaoutput
oldingi bosqichdagi JS ni kiritishimiz kerak.<!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>
div class="container"
Bootstrap-ning CSS-ni qachon Webpack tomonidan yuklanganligini ko'rishimiz uchun<button>
biz bu erda bir oz Bootstrap uslubini qo'shmoqdamiz. -
Endi Webpackni ishga tushirish uchun bizga npm skripti kerak. Quyida ko'rsatilgan skriptni oching
package.json
va qo'shingstart
(sizda allaqachon sinov skripti bo'lishi kerak). Biz ushbu skriptdan mahalliy Webpack dev serverimizni ishga tushirish uchun foydalanamiz.{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
Va nihoyat, biz Webpackni ishga tushirishimiz mumkin.
my-project
Terminalingizdagi papkadan yangi qo'shilgan npm skriptini ishga tushiring :npm start
Ushbu qo'llanmaning keyingi va oxirgi qismida biz Webpack yuklagichlarini o'rnatamiz va barcha Bootstrap CSS va JavaScript-ni import qilamiz.
Bootstrap import
Bootstrap-ni Webpack-ga import qilish biz birinchi bo'limda o'rnatgan yuklagichlarni talab qiladi. Biz ularni npm bilan o'rnatdik, ammo endi Webpack ulardan foydalanish uchun sozlanishi kerak.
-
Yuklagichlarni o'rnating
webpack.config.js
. Konfiguratsiya faylingiz tugallandi va u quyidagi parchaga mos kelishi kerak. Bu erda yagona yangi qism - bumodule
bo'lim.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' } ] } ] } }
Mana nima uchun bizga bu yuklagichlar kerakligi haqida qisqacha ma'lumot.
style-loader
CSS -ni HTML sahifasidagi<style>
elementga kiritadi, va dan foydalanishda yordam beradi , Autoprefixer uchun talab qilinadi va Sass-dan foydalanishga imkon beradi.<head>
css-loader
@import
url()
postcss-loader
sass-loader
-
Keling, Bootstrap CSS-ni import qilaylik.
src/scss/styles.scss
Bootstrap-ning barcha Sass manbasini import qilish uchun quyidagilarni qo'shing .// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
Agar xohlasangiz, uslublar jadvallarini alohida import qilishingiz mumkin. Tafsilotlar uchun Sass import hujjatlarini o'qing .
-
Keyin biz CSS-ni yuklaymiz va Bootstrap-ning JavaScript-ni import qilamiz.
src/js/main.js
CSS-ni yuklash va Bootstrap-ning barcha JS-larini import qilish uchun quyidagilarni qo'shing . Popper avtomatik ravishda Bootstrap orqali import qilinadi.// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
Toʻplam oʻlchamlarini kamaytirish uchun JavaScript plaginlarini alohida import qilishingiz mumkin:
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
Bootstrap plaginlaridan qanday foydalanish haqida ko'proq ma'lumot olish uchun JavaScript hujjatlarini o'qing .
-
Va siz tugatdingiz! 🎉 Bootstrap manbasi Sass va JS toʻliq yuklangan boʻlsa, mahalliy ishlab chiqish serveringiz endi shunday koʻrinishi kerak.
Endi siz foydalanmoqchi bo'lgan har qanday Bootstrap komponentlarini qo'shishni boshlashingiz mumkin. Qo'shimcha maxsus Sassni qanday kiritish va faqat Bootstrap CSS va JS qismlarini import qilish orqali tuzilmangizni optimallashtirish haqida to'liq Webpack misol loyihasini ko'rib chiqing.
Ishlab chiqarishni optimallashtirish
O'rnatishingizga qarab, loyihani ishlab chiqarishda ishlatish uchun foydali bo'lgan qo'shimcha xavfsizlik va tezlikni optimallashtirishni amalga oshirishni xohlashingiz mumkin. E'tibor bering, ushbu optimallashtirishlar Webpack misol loyihasida qo'llanilmaydi va ularni amalga oshirish sizga bog'liq.
CSS dan chiqarilmoqda
Biz style-loader
yuqorida sozlaganimiz CSS-ni to'plamga qulay tarzda chiqaradi, shuning uchun CSS faylini qo'lda yuklash dist/index.html
shart emas. Biroq, bu yondashuv qat'iy Kontent xavfsizligi siyosati bilan ishlamasligi mumkin va bu to'plamning kattaligi tufayli ilovangizda to'siq bo'lib qolishi mumkin.
CSS-ni to'g'ridan-to'g'ri dan yuklashimiz uchun ajratish uchun Webpack plaginidan dist/index.html
foydalaning .mini-css-extract-loader
Birinchidan, plaginni o'rnating:
npm install --save-dev mini-css-extract-plugin
Keyin Webpack konfiguratsiyasida plaginni ishga tushiring va foydalaning:
--- 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
},
{
Qayta ishga tushirilgandan so'ng , tomonidan import qilingan barcha CSS-larni o'z ichiga olgan npm run build
yangi fayl paydo bo'ladi . Agar siz hozir brauzeringizda ko'rsangiz, uslub hozirda bo'lgani kabi yo'qoladi . Yaratilgan CSS-ni quyidagi tarzda kiritishingiz mumkin :dist/main.css
src/js/main.js
dist/index.html
dist/main.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 fayllarni chiqarish
data:
Bootstrap-ning CSS-da inline URI -lar orqali SVG fayllariga bir nechta havolalar mavjud . Agar siz loyihangiz data:
uchun tasvirlar uchun URI-larni bloklaydigan Kontent xavfsizligi siyosatini belgilasangiz, bu SVG fayllari yuklanmaydi. Ushbu muammoni Webpack aktiv modullari xususiyatidan foydalanib, ichki SVG fayllarini chiqarib olishingiz mumkin.
Quyidagi kabi ichki SVG fayllarni chiqarish uchun Webpackni sozlang:
--- 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: [
Qayta ishga tushirgandan so'ng , siz CSS-ga chiqarilgan va to'g'ri havola qilingan npm run build
SVG fayllarini topasiz .dist/icons
Bu yerda notoʻgʻri yoki eskirgan narsani koʻrdingizmi? Iltimos , GitHub da muammoni oching . Muammolarni bartaraf etishda yordam kerakmi? GitHub-da qidiring yoki muhokama boshlang .