Bootstrap & Webpack
ຄູ່ມືທີ່ເປັນທາງການສໍາລັບວິທີການລວມແລະມັດ CSS ແລະ JavaScript ຂອງ Bootstrap ໃນໂຄງການຂອງທ່ານໂດຍໃຊ້ 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 ຈາກ terminal, ແລະwebpack-dev-server
ດັ່ງນັ້ນພວກເຮົາສາມາດດໍາເນີນການເຄື່ອງແມ່ຂ່າຍການພັດທະນາທ້ອງຖິ່ນ. ພວກເຮົາໃຊ້--save-dev
ເພື່ອໃຫ້ສັນຍານວ່າຄວາມເພິ່ງພາອາໄສເຫຼົ່ານີ້ແມ່ນພຽງແຕ່ສໍາລັບການນໍາໃຊ້ການພັດທະນາແລະບໍ່ແມ່ນການຜະລິດ.npm i --save-dev webpack webpack-cli webpack-dev-server
-
ຕິດຕັ້ງ Bootstrap. ຕອນນີ້ພວກເຮົາສາມາດຕິດຕັ້ງ Bootstrap ໄດ້. ພວກເຮົາຍັງຈະຕິດຕັ້ງ Popper ນັບຕັ້ງແຕ່ dropdowns ຂອງພວກເຮົາ, popovers, ແລະຄໍາແນະນໍາເຄື່ອງມືແມ່ນຂຶ້ນກັບມັນສໍາລັບຕໍາແຫນ່ງຂອງເຂົາເຈົ້າ. ຖ້າທ່ານບໍ່ວາງແຜນທີ່ຈະໃຊ້ອົງປະກອບເຫຼົ່ານັ້ນ, ທ່ານສາມາດຍົກເລີກ Popper ຢູ່ທີ່ນີ້.
npm i --save bootstrap @popperjs/core
-
ຕິດຕັ້ງການເພິ່ງພາອາໄສເພີ່ມເຕີມ. ນອກເໜືອໄປຈາກ Webpack ແລະ Bootstrap, ພວກເຮົາຕ້ອງການຄວາມເພິ່ງພາອາໄສອີກໜ້ອຍໜຶ່ງເພື່ອນຳເຂົ້າ ແລະ ມັດ Bootstrap's CSS ແລະ JS ກັບ Webpack ຢ່າງຖືກຕ້ອງ. ເຫຼົ່ານີ້ລວມມີ Sass, ບາງ loaders, ແລະ 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
ດ້ວຍການຕິດຕັ້ງ dependencies ແລະໂຟນເດີ້ໂຄງການຂອງພວກເຮົາພ້ອມທີ່ຈະເລີ່ມຕົ້ນການຂຽນລະຫັດ, ພວກເຮົາສາມາດ configure Webpack ແລະດໍາເນີນການໂຄງການຂອງພວກເຮົາໃນທ້ອງຖິ່ນ.
-
ເປີດ
webpack.config.js
ໃນບັນນາທິການຂອງທ່ານ. ເນື່ອງຈາກມັນຫວ່າງເປົ່າ, ພວກເຮົາຈະຕ້ອງເພີ່ມການຕັ້ງຄ່າ boilerplate ບາງຢ່າງໃສ່ມັນເພື່ອໃຫ້ພວກເຮົາສາມາດເລີ່ມຕົ້ນເຄື່ອງແມ່ຂ່າຍຂອງພວກເຮົາໄດ້. ພາກສ່ວນນີ້ຂອງ config ບອກ 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>
ເພື່ອໃຫ້ພວກເຮົາເຫັນເວລາທີ່ CSS ຂອງ Bootstrap ຖືກໂຫລດໂດຍ Webpack. -
ໃນປັດຈຸບັນພວກເຮົາຕ້ອງການ npm script ເພື່ອດໍາເນີນການ Webpack. ເປີດ
package.json
ແລະເພີ່ມສະstart
ຄິບທີ່ສະແດງຂ້າງລຸ່ມນີ້ (ທ່ານຄວນມີສະຄິບທົດສອບແລ້ວ). ພວກເຮົາຈະໃຊ້ສະຄຣິບນີ້ເພື່ອເລີ່ມຕົ້ນເຊີບເວີ Webpack dev ທ້ອງຖິ່ນຂອງພວກເຮົາ.{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
ແລະສຸດທ້າຍ, ພວກເຮົາສາມາດເລີ່ມຕົ້ນ Webpack. ຈາກ
my-project
ໂຟນເດີໃນ terminal ຂອງທ່ານ, ດໍາເນີນການ npm script ທີ່ເພີ່ມໃຫມ່:npm start
ໃນພາກຕໍ່ໄປແລະສຸດທ້າຍຂອງຄໍາແນະນໍານີ້, ພວກເຮົາຈະຕັ້ງຄ່າ Webpack loaders ແລະນໍາເຂົ້າທັງຫມົດຂອງ CSS ແລະ JavaScript ຂອງ Bootstrap.
ນໍາເຂົ້າ Bootstrap
ການນໍາເຂົ້າ Bootstrap ເຂົ້າໄປໃນ Webpack ຕ້ອງການຕົວໂຫຼດທີ່ພວກເຮົາຕິດຕັ້ງຢູ່ໃນພາກທໍາອິດ. ພວກເຮົາໄດ້ຕິດຕັ້ງພວກມັນດ້ວຍ npm, ແຕ່ດຽວນີ້ Webpack ຕ້ອງໄດ້ຮັບການຕັ້ງຄ່າເພື່ອໃຊ້ພວກມັນ.
-
ຕັ້ງຄ່າ loaders ໃນ
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
injects CSS ເຂົ້າໄປໃນ<style>
ອົງປະກອບໃນ<head>
ຫນ້າ HTML,css-loader
ຊ່ວຍໃນການນໍາໃຊ້@import
ແລະurl()
,postcss-loader
ແມ່ນຕ້ອງການສໍາລັບ Autoprefixer, ແລະsass-loader
ອະນຸຍາດໃຫ້ພວກເຮົານໍາໃຊ້ Sass. -
ຕອນນີ້, ໃຫ້ນໍາເຂົ້າ CSS ຂອງ Bootstrap. ເພີ່ມສິ່ງຕໍ່ໄປນີ້ເພື່ອ
src/scss/styles.scss
ນໍາເຂົ້າ Sass ແຫຼ່ງຂອງ Bootstrap ທັງໝົດ.// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
ນອກນັ້ນທ່ານຍັງສາມາດນໍາເຂົ້າແຜ່ນສະໄຕລ໌ຂອງພວກເຮົາເປັນສ່ວນບຸກຄົນຖ້າຫາກວ່າທ່ານຕ້ອງການ. ອ່ານເອກະສານນໍາເຂົ້າ Sass ຂອງພວກເຮົາ ສໍາລັບລາຍລະອຽດ.
-
ຕໍ່ໄປພວກເຮົາໂຫລດ CSS ແລະນໍາເຂົ້າ JavaScript ຂອງ Bootstrap. ເພີ່ມສິ່ງຕໍ່ໄປນີ້ເພື່ອ
src/js/main.js
ໂຫລດ CSS ແລະນໍາເຂົ້າ JS ຂອງ Bootstrap ທັງຫມົດ. Popper ຈະຖືກນໍາເຂົ້າໂດຍອັດຕະໂນມັດຜ່ານ Bootstrap.// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
ນອກນັ້ນທ່ານຍັງສາມາດນໍາເຂົ້າ plugins JavaScript ສ່ວນບຸກຄົນຕາມຄວາມຕ້ອງການເພື່ອຮັກສາຂະຫນາດມັດລົງ:
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
ອ່ານເອກະສານ JavaScript ຂອງພວກເຮົາ ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບວິທີການໃຊ້ plugins ຂອງ Bootstrap.
-
ແລະເຈົ້າສຳເລັດແລ້ວ! 🎉 ດ້ວຍແຫຼ່ງ Sass ແລະ JS ຂອງ Bootstrap ເຕັມທີ່, ເຊີບເວີການພັດທະນາທ້ອງຖິ່ນຂອງທ່ານຄວນຈະເປັນແບບນີ້.
ໃນປັດຈຸບັນທ່ານສາມາດເລີ່ມຕົ້ນການເພີ່ມອົງປະກອບ Bootstrap ໃດທີ່ທ່ານຕ້ອງການໃຊ້. ໃຫ້ແນ່ໃຈວ່າຈະ ກວດເບິ່ງໂຄງການຕົວຢ່າງ Webpack ທີ່ສົມບູນ ສໍາລັບວິທີການລວມເອົາ Sass ແບບກໍາຫນົດເອງເພີ່ມເຕີມແລະເພີ່ມປະສິດທິພາບການສ້າງຂອງທ່ານໂດຍການນໍາເຂົ້າພຽງແຕ່ສ່ວນຂອງ CSS ແລະ JS ຂອງ Bootstrap ທີ່ທ່ານຕ້ອງການ.
ການເພີ່ມປະສິດທິພາບການຜະລິດ
ອີງຕາມການຕິດຕັ້ງຂອງທ່ານ, ທ່ານອາດຈະຕ້ອງການປະຕິບັດການເພີ່ມປະສິດທິພາບຄວາມປອດໄພແລະຄວາມໄວເພີ່ມເຕີມບາງຢ່າງທີ່ເປັນປະໂຫຍດສໍາລັບການດໍາເນີນໂຄງການໃນການຜະລິດ. ໃຫ້ສັງເກດວ່າການເພີ່ມປະສິດທິພາບເຫຼົ່ານີ້ບໍ່ໄດ້ຖືກນໍາໃຊ້ໃນ ໂຄງການຕົວຢ່າງ Webpack ແລະຂຶ້ນກັບທ່ານທີ່ຈະປະຕິບັດ.
ສະກັດ CSS
ທີ່ style-loader
ພວກເຮົາຕັ້ງຄ່າຂ້າງເທິງນີ້ສະດວກປ່ອຍ CSS ເຂົ້າໄປໃນມັດເພື່ອໃຫ້ການໂຫຼດໄຟລ໌ CSS ດ້ວຍຕົນເອງ dist/index.html
ບໍ່ຈໍາເປັນ. ວິທີການນີ້ອາດຈະບໍ່ເຮັດວຽກກັບນະໂຍບາຍຄວາມປອດໄພຂອງເນື້ອຫາທີ່ເຂັ້ມງວດ, ແນວໃດກໍ່ຕາມ, ແລະມັນອາດຈະກາຍເປັນຂໍ້ບົກຜ່ອງໃນຄໍາຮ້ອງສະຫມັກຂອງທ່ານເນື່ອງຈາກຂະຫນາດມັດໃຫຍ່.
ເພື່ອແຍກ CSS ເພື່ອໃຫ້ພວກເຮົາສາມາດໂຫລດໄດ້ໂດຍກົງ dist/index.html
, ໃຫ້ໃຊ້ mini-css-extract-loader
Webpack plugin.
ກ່ອນອື່ນ ໝົດ, ຕິດຕັ້ງ plugin:
npm install --save-dev mini-css-extract-plugin
ຫຼັງຈາກນັ້ນ, instantiate ແລະນໍາໃຊ້ 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
CSS ຂອງ Bootstrap ລວມມີການອ້າງອີງຫຼາຍອັນຕໍ່ກັບໄຟລ໌ SVG ຜ່ານ data:
URIs ໃນແຖວ. ຖ້າທ່ານກໍານົດນະໂຍບາຍຄວາມປອດໄພເນື້ອຫາສໍາລັບໂຄງການຂອງທ່ານທີ່ບລັອກ data:
URIs ສໍາລັບຮູບພາບ, ຫຼັງຈາກນັ້ນໄຟລ໌ 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.