Bootstrap & Webpack
Webpack аркылуу долбооруңузга Bootstrap'тин CSS жана JavaScriptти кантип кошуу жана таңгактоо боюнча расмий колдонмо.
Жайгашуу
Биз Bootstrap менен Webpack долбоорун нөлдөн баштап куруп жатабыз, андыктан чындап баштоого чейин кээ бир шарттар жана алдыңкы кадамдар бар. Бул колдонмо сизден 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 орното алабыз. Попперди да орнотобуз, анткени биздин ачылуучу тизмелерибиз, попоперлерибиз жана кеңештерибиз алардын жайгашуусуна көз каранды. Эгер сиз ал компоненттерди колдонууну пландабасаңыз, анда Попперди бул жерден калтырсаңыз болот.
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 тарабынан жүктөлгөнүн көрөбүз. -
Эми Webpack иштетүү үчүн бизге npm скрипт керек. Төмөндө көрсөтүлгөн скриптти ачып
package.json
, кошуңузstart
(сизде тест скрипт болушу керек). Бул скриптти жергиликтүү Webpack dev серверибизди баштоо үчүн колдонобуз.{ // ... "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' } ] } ] } }
Бул жүктөгүчтөрдүн бардыгы эмне үчүн керек экенин кыскача карап көрөлү. HTML баракчасынын элементине
style-loader
CSS инжекциялайт, жана колдонууга жардам берет , Autoprefixer үчүн талап кылынат жана бизге Sass колдонууга мүмкүндүк берет.<style>
<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 импорттоо үчүн төмөнкүнү кошуңуз . Поппер автоматтык түрдө 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'
Bootstrap плагиндерин кантип колдонуу керектиги жөнүндө көбүрөөк маалымат алуу үчүн биздин JavaScript документтерибизди окуңуз .
-
А сен бүттүң! 🎉 Bootstrap булагы Sass жана JS толук жүктөлгөндө, сиздин жергиликтүү өнүктүрүү сервериңиз азыр ушундай болушу керек.
Эми сиз колдонгуңуз келген каалаган Bootstrap компоненттерин кошо баштасаңыз болот. Кошумча ыңгайлаштырылган Sass кошуу жана Bootstrap'тын CSS жана JS бөлүктөрүн гана импорттоо менен түзүлүшүңүздү оптималдаштыруу үчүн толук Webpack мисал долбоорун текшерип көрүңүз .
Өндүрүштү оптималдаштыруу
Орнотууңузга жараша, сиз өндүрүштө долбоорду иштетүү үчүн пайдалуу кээ бир кошумча коопсуздукту жана ылдамдыкты оптималдаштырууну ишке ашыргыңыз келиши мүмкүн. Бул оптималдаштыруулар Webpack үлгүсүндөгү долбоордо колдонулбайт жана аларды ишке ашыруу сизден көз каранды экенин эске алыңыз.
CSS чыгарылууда
Биз style-loader
жогоруда конфигурациялаганыбыз CSS файлын кол менен жүктөөнүн dist/index.html
кереги жок болушу үчүн таңгакка CSSти ыңгайлуу чыгарат. Бул ыкма катуу Мазмунду Коопсуздук Саясаты менен иштебеши мүмкүн жана таңгактын чоңдугуна байланыштуу колдонмоңузда тоскоолдук болуп калышы мүмкүн.
CSSти биз аны түз жүктөй тургандай кылып бөлүү dist/index.html
үчүн, mini-css-extract-loader
Webpack плагинин колдонуңуз.
Биринчиден, плагинди орнотуу:
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
},
{
Кайра иштетилгенден кийин, импорттолгон бардык CSS файлдарын камтыган npm run build
жаңы файл пайда болот . Эгер сиз азыр браузериңизден көрсөңүз, стил азыр . Түзүлгөн CSSти төмөнкүдөй кошсоңуз болот :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 файлдары чыгарылууда
Bootstrap's CSS SVG файлдарына бир нече шилтемелерди камтыйт data:
. Сүрөттөр үчүн URI'лерди бөгөттөп турган долбооруңуз үчүн Мазмундун Коопсуздук Саясатын аныктасаңыз data:
, анда бул SVG файлдары жүктөлбөйт. Бул көйгөйдү Webpack'тин активдик модулдар өзгөчөлүгүн колдонуп, линиядагы SVG файлдарын чыгарып алуу менен чече аласыз.
Вебпакетті төмөнкүдөй саптык 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: [
Кайра иштеткенден кийин, сиз CSSке алынган жана туура шилтеме берилген npm run build
SVG файлдарын табасыз .dist/icons
Бул жерден туура эмес же эскирип калган нерсени көрүп жатасызбы? Сураныч , GitHubда маселени ачыңыз . Мүчүлүштүктөрдү аныктоого жардам керекпи? GitHub'да издеңиз же талкуу баштаңыз .