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
. Энэ бол багцалсан CSS болон JS-г ашиглахын тулд вэб багцыг хөтөч дээр ачаалах HTML хуудас бөгөөд бид дараа дараагийн алхамуудад нэмж оруулах болно. Үүнийг хийхийн өмнө бид түүнд үзүүлэх ямар нэг зүйл өгч,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-ийн CSS-г Webpack-д ачаалах үед харахын тулд Bootstrap
div class="container"
- ийн загварчлалыг бага зэрэг оруулсан болно.<button>
-
Одоо бидэнд 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 импортлох
Webpack руу Bootstrap-г импортлохын тулд эхний хэсэгт суулгасан дуудагч хэрэгтэй. Бид тэдгээрийг 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-г импортлохын тулд дараахыг нэмнэ үү . 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'
Bootstrap-ийн залгаасуудыг хэрхэн ашиглах талаар дэлгэрэнгүй мэдээлэл авахыг хүсвэл манай JavaScript баримтуудыг уншина уу .
-
Тэгээд та дууслаа! 🎉 Bootstrap-ийн эх сурвалж Sass болон JS бүрэн ачаалагдсан үед таны локал хөгжүүлэлтийн сервер одоо иймэрхүү харагдах болно.
Одоо та ашиглахыг хүссэн Bootstrap бүрэлдэхүүн хэсгүүдээ нэмж эхлэх боломжтой. Өөрт хэрэгтэй Bootstrap-ын CSS болон JS-ийн хэсгүүдийг импортлох замаар нэмэлт захиалгат Sass-ийг хэрхэн оруулах, бүтээцээ оновчтой болгох талаар бүрэн гүйцэд Webpack жишээ төслийг шалгахаа мартуузай .
Үйлдвэрлэлийн оновчлол
Таны тохиргооноос хамааран та төслийг үйлдвэрлэлд явуулахад хэрэгтэй нэмэлт аюулгүй байдал, хурдыг оновчтой болгохыг хүсч болно. Эдгээр оновчлолыг Webpack жишээ төсөл дээр хэрэгжүүлээгүй бөгөөд хэрэгжүүлэх нь танаас хамаарна гэдгийг анхаарна уу.
CSS задалж байна
Бидний style-loader
дээр тохируулсан нь CSS-г багцад хялбархан гаргадаг тул CSS файлыг гараар ачаалах dist/index.html
шаардлагагүй болно. Энэ арга нь Агуулгын аюулгүй байдлын хатуу бодлоготой ажиллахгүй байж магадгүй бөгөөд багцын хэмжээ том учраас таны аппликешнд саад болж болзошгүй.
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 файлуудыг задалж байна
data:
Bootstrap-ийн CSS нь inline URI -уудаар дамжуулан SVG файлуудын олон лавлагааг агуулдаг . Хэрэв та data:
зургийн URI-г блоклодог төслийнхөө Агуулгын аюулгүй байдлын бодлогыг тодорхойлсон бол эдгээр 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 дээр хайлт хийх эсвэл хэлэлцүүлэг эхлүүлэх .