बूटस्ट्रॅप आणि वेबपॅक
Webpack वापरून तुमच्या प्रोजेक्टमध्ये Bootstrap चे CSS आणि JavaScript कसे समाविष्ट करायचे आणि बंडल कसे करायचे याचे अधिकृत मार्गदर्शक.
सेटअप
आम्ही सुरवातीपासून बूटस्ट्रॅपसह एक वेबपॅक प्रकल्प तयार करत आहोत, त्यामुळे आम्ही खरोखर प्रारंभ करू शकण्यापूर्वी काही पूर्वतयारी आणि पुढील पायऱ्या आहेत. या मार्गदर्शकासाठी तुम्हाला Node.js स्थापित करणे आणि टर्मिनलशी काही परिचित असणे आवश्यक आहे.
-
प्रोजेक्ट फोल्डर तयार करा आणि एनपीएम सेट करा. आम्ही
my-project
फोल्डर तयार करू आणि npm ला-y
युक्तिवादासह प्रारंभ करू जेणेकरून ते आम्हाला सर्व परस्परसंवादी प्रश्न विचारू नये.mkdir my-project && cd my-project npm init -y
-
वेबपॅक स्थापित करा. पुढे आम्हाला आमचे वेबपॅक डेव्हलपमेंट अवलंबित्व स्थापित करावे लागेल:
webpack
वेबपॅकच्या मुख्य भागासाठी,webpack-cli
जेणेकरून आम्ही टर्मिनलवरून वेबपॅक कमांड्स चालवू शकतो आणिwebpack-dev-server
त्यामुळे आम्ही स्थानिक विकास सर्व्हर चालवू शकतो.--save-dev
हे अवलंबित्व केवळ विकास वापरासाठी आहे आणि उत्पादनासाठी नाही हे सूचित करण्यासाठी आम्ही वापरतो .npm i --save-dev webpack webpack-cli webpack-dev-server
-
बूटस्ट्रॅप स्थापित करा. आता आपण Bootstrap इन्स्टॉल करू शकतो. आम्ही पॉपर देखील स्थापित करू कारण आमचे ड्रॉपडाउन, पॉपओव्हर्स आणि टूलटिप्स त्यांच्या स्थितीसाठी त्यावर अवलंबून असतात. तुम्ही ते घटक वापरण्याची योजना करत नसल्यास, तुम्ही येथे पॉपर वगळू शकता.
npm i --save bootstrap @popperjs/core
-
अतिरिक्त अवलंबित्व स्थापित करा. वेबपॅक आणि बूटस्ट्रॅप व्यतिरिक्त, आम्हाला बूटस्ट्रॅपचे सीएसएस आणि जेएस वेबपॅकसह योग्यरित्या आयात आणि बंडल करण्यासाठी आणखी काही अवलंबित्वांची आवश्यकता आहे. यामध्ये Sass, काही लोडर आणि Autoprefixer यांचा समावेश आहे.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
आता आमच्याकडे सर्व आवश्यक अवलंबन स्थापित केले आहेत, आम्ही प्रकल्प फायली तयार करणे आणि बूटस्ट्रॅप आयात करण्याचे काम करू शकतो.
प्रकल्प रचना
आम्ही आधीच my-project
फोल्डर तयार केले आहे आणि एनपीएम सुरू केले आहे. आता आम्ही प्रोजेक्ट स्ट्रक्चर पूर्ण करण्यासाठी आमचे 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.config.js
अद्याप भरलेले नाही.
वेबपॅक कॉन्फिगर करा
डिपेंडेंसी इन्स्टॉल केल्यामुळे आणि कोडिंग सुरू करण्यासाठी आमचे प्रोजेक्ट फोल्डर तयार असल्याने, आम्ही आता वेबपॅक कॉन्फिगर करू शकतो आणि आमचा प्रोजेक्ट स्थानिक पातळीवर चालवू शकतो.
-
webpack.config.js
तुमच्या संपादकात उघडा . ते रिकामे असल्याने, आम्हाला त्यात काही बॉयलरप्लेट कॉन्फिगरेशन जोडावे लागेल जेणेकरून आम्ही आमचा सर्व्हर सुरू करू शकू. कॉन्फिगरेशनचा हा भाग वेबपॅकला आमच्या प्रोजेक्टची 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 पृष्ठ आहे वेबपॅक एकत्रित 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>
आम्ही येथे थोडेसे बूटस्ट्रॅप स्टाइलिंग समाविष्ट करत आहोत
div class="container"
आणि<button>
जेणेकरून आम्ही बूटस्ट्रॅपचे CSS वेबपॅकद्वारे लोड केले जाते तेव्हा पाहू. -
आता वेबपॅक चालवण्यासाठी आम्हाला एनपीएम स्क्रिप्टची आवश्यकता आहे. खाली दर्शविलेली स्क्रिप्ट उघडा
package.json
आणि जोडाstart
(तुमच्याकडे आधीपासूनच चाचणी स्क्रिप्ट असणे आवश्यक आहे). आम्ही आमचा स्थानिक वेबपॅक डेव्हल सर्व्हर सुरू करण्यासाठी या स्क्रिप्टचा वापर करू.{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
आणि शेवटी, आम्ही वेबपॅक सुरू करू शकतो. तुमच्या टर्मिनलमधील
my-project
फोल्डरमधून, नवीन जोडलेली एनपीएम स्क्रिप्ट चालवा:npm start
या मार्गदर्शकाच्या पुढील आणि अंतिम विभागात, आम्ही वेबपॅक लोडर सेट करू आणि बूटस्ट्रॅपचे सर्व CSS आणि JavaScript आयात करू.
बूटस्ट्रॅप आयात करा
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
-
आता, बूटस्ट्रॅपचे CSS आयात करू.
src/scss/styles.scss
बूटस्ट्रॅपचे सर्व स्त्रोत Sass आयात करण्यासाठी खालील जोडा .// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
तुम्हाला हवे असल्यास तुम्ही आमची स्टाइलशीट स्वतंत्रपणे आयात देखील करू शकता. तपशीलांसाठी आमचे Sass आयात दस्तऐवज वाचा .
-
पुढे आपण CSS लोड करतो आणि बूटस्ट्रॅपची JavaScript आयात करतो. CSS लोड करण्यासाठी खालील जोडा
src/js/main.js
आणि बूटस्ट्रॅपचे सर्व JS आयात करा. बूटस्ट्रॅपद्वारे पॉपर स्वयंचलितपणे आयात केले जाईल.// 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 डॉक्स वाचा .
-
आणि तुम्ही पूर्ण केले! 🎉 बूटस्ट्रॅपचा स्त्रोत Sass आणि JS पूर्णपणे लोड झाल्यामुळे, तुमचा स्थानिक विकास सर्व्हर आता यासारखा दिसला पाहिजे.
आता तुम्ही वापरू इच्छित असलेले कोणतेही बूटस्ट्रॅप घटक जोडणे सुरू करू शकता. तुम्हाला आवश्यक असलेले बूटस्ट्रॅपचे CSS आणि JS चे भाग आयात करून अतिरिक्त सानुकूल Sass कसे समाविष्ट करायचे आणि तुमची बिल्ड कशी ऑप्टिमाइझ करायची यासाठी संपूर्ण वेबपॅक उदाहरण प्रकल्प तपासण्याचे सुनिश्चित करा .
उत्पादन ऑप्टिमायझेशन
तुमच्या सेटअपच्या आधारावर, तुम्हाला प्रोडक्शनमध्ये प्रोजेक्ट चालवण्यासाठी उपयुक्त काही अतिरिक्त सुरक्षा आणि स्पीड ऑप्टिमायझेशन लागू करायचे आहेत. लक्षात घ्या की हे ऑप्टिमायझेशन Webpack उदाहरण प्रकल्पावर लागू केले जात नाही आणि ते अंमलात आणणे तुमच्यावर अवलंबून आहे.
CSS काढत आहे
आम्ही वर कॉन्फिगर केलेले style-loader
CSS बंडलमध्ये सहजतेने उत्सर्जित करते जेणेकरून CSS फाइल व्यक्तिचलितपणे लोड dist/index.html
करणे आवश्यक नसते. हा दृष्टीकोन कठोर सामग्री सुरक्षा धोरणासह कार्य करू शकत नाही, तथापि, आणि मोठ्या बंडल आकारामुळे ते आपल्या अनुप्रयोगात अडथळा बनू शकते.
CSS वेगळे करण्यासाठी जेणेकरुन आम्ही ते थेट वरून लोड करू शकू , वेबपॅक प्लगइन dist/index.html
वापरा .mini-css-extract-loader
प्रथम, प्लगइन स्थापित करा:
npm install --save-dev mini-css-extract-plugin
नंतर वेबपॅक कॉन्फिगरेशनमध्ये प्लगइन इन्स्टंट करा आणि वापरा:
--- 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 फाइल्स काढत आहे
data:
बूटस्ट्रॅपच्या CSS मध्ये इनलाइन URI द्वारे SVG फाइल्सचे अनेक संदर्भ समाविष्ट आहेत . तुम्ही तुमच्या प्रोजेक्टसाठी सामग्री सुरक्षा धोरण परिभाषित केल्यास जे इमेजसाठी data:
URI ब्लॉक करते, तर या 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: [
पुन्हा चालवल्यानंतर npm run build
, तुम्हाला SVG फाइल्स dist/icons
CSS मधून काढलेल्या आणि योग्यरित्या संदर्भित केलेल्या आढळतील.
येथे काहीतरी चुकीचे किंवा कालबाह्य दिसत आहे? कृपया GitHub वर एक समस्या उघडा . समस्यानिवारणासाठी मदत हवी आहे? GitHub वर शोधा किंवा चर्चा सुरू करा.