बूटस्ट्रैप अउर वेबपैक के बारे में बतावल गइल बा
वेबपैक के इस्तेमाल से अपना प्रोजेक्ट में बूटस्ट्रैप के सीएसएस आ जावास्क्रिप्ट के शामिल करे आ बंडल करे के तरीका खातिर आधिकारिक गाइड।
सेटअप
हमनी के बूटस्ट्रैप के संगे एगो वेबपैक प्रोजेक्ट के नयका से बनावत बानी जा, एहसे हमनी के सचमुच शुरू करे से पहिले कुछ पूर्व शर्त अवुरी अप फ्रंट स्टेप बा। एह गाइड में रउरा के Node.js इंस्टॉल होखे के चाहीं आ टर्मिनल से कुछ परिचित होखे के चाहीं.
-
एगो प्रोजेक्ट फोल्डर बनाईं आ npm सेटअप करीं। हमनी के
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
-
बूटस्ट्रैप के इंस्टॉल करीं। अब हमनी के बूटस्ट्रैप इंस्टॉल क सकेनी जा। हमनी के पॉपर के भी इंस्टॉल करब जा काहे कि हमनी के ड्रॉपडाउन, पॉपओवर, आ टूलटिप अपना पोजीशनिंग खातिर एकरा पर निर्भर करेला। अगर रउआँ ओह घटक सभ के इस्तेमाल करे के योजना नइखीं बनावत, त रउआँ इहाँ पॉपर के छोड़ सकत बानी।
npm i --save bootstrap @popperjs/core
-
अतिरिक्त निर्भरता के इंस्टॉल करीं। वेबपैक आ बूटस्ट्रैप के अलावा, हमनी के बूटस्ट्रैप के सीएसएस आ जेएस के वेबपैक के साथे ठीक से आयात आ बंडल करे खातिर कुछ अउरी निर्भरता के जरूरत बा। एह में सास, कुछ लोडर, आ ऑटोप्रिफिक्सर शामिल बा.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
अब जब हमनी के लगे सभ जरूरी निर्भरता इंस्टॉल हो गईल बा त हमनी के प्रोजेक्ट फाइल बनावे अवुरी बूटस्ट्रैप के आयात करे के काम में लाग सकतानी।
परियोजना के संरचना के बारे में बतावल गइल बा
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.config.js
अबहीं ले आपन नइखीं भरले.
वेबपैक के कॉन्फ़िगर करीं
डिपेंडेंसी इंस्टॉल हो गइल बा आ हमनी के प्रोजेक्ट फोल्डर हमनी के कोडिंग शुरू करे खातिर तइयार हो गइल बा, अब हमनी का वेबपैक के कॉन्फ़िगर कर सकेनी जा आ आपन प्रोजेक्ट स्थानीय रूप से चला सकेनी जा.
-
webpack.config.js
अपना संपादक में खोलीं . चुकी इ खाली बा एहसे हमनी के एकरा में कुछ बॉयलरप्लेट कॉन्फ़िगरेशन जोड़ल जरूरी होई ताकि हमनी के आपन सर्वर शुरू क सकी। कॉन्फ़िगरेशन के ई हिस्सा वेबपैक के बतावेला कि हमनी के प्रोजेक्ट के जावास्क्रिप्ट के खोज करे के रहे, संकलित कोड के कहाँ आउटपुट करे के बा ( ), आ डेवलपमेंट सर्वर के कइसे व्यवहार करे के चाहीं ( हॉट रिलोड के साथ फोल्डर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 पन्ना ह वेबपैक ब्राउजर में लोड हो जाई बंडल कइल सीएसएस आ जेएस के उपयोग करे खातिर हमनी के बाद के चरण में एकरा में जोड़ब जा। हमनी के अयीसन करे से पहिले ओकरा के रेंडर करे खाती कुछ देवे के होई अवुरीoutput
पिछला स्टेप से जेएस के शामिल करे के होई।<!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>
ताकि हमनी के देख सकी जा कि बूटस्ट्रैप के सीएसएस कब वेबपैक से लोड होखेला। -
अब हमनी के वेबपैक चलावे खातिर एगो npm स्क्रिप्ट के जरूरत बा। नीचे देखावल स्क्रिप्ट खोलीं
package.json
आ जोड़ींstart
(रउरा लगे पहिले से परीक्षण स्क्रिप्ट होखे के चाहीं)। हमनी के एह स्क्रिप्ट के इस्तेमाल आपन स्थानीय वेबपैक देव सर्वर शुरू करे खातिर करब जा।{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
आ अंत में हमनी का वेबपैक शुरू कर सकीले. अपना टर्मिनल में फोल्डर से
my-project
, ऊ नया जोड़ा गइल npm स्क्रिप्ट चलाईं:npm start
एह गाइड के अगिला आ अंतिम खंड में हमनी के वेबपैक लोडर के सेटअप करब जा आ बूटस्ट्रैप के सभ सीएसएस आ जावास्क्रिप्ट के आयात करब जा।
बूटस्ट्रैप के आयात करीं
वेबपैक में बूटस्ट्रैप के आयात करे खातिर हमनी के पहिला खंड में इंस्टॉल कईल लोडर के जरूरत बा। हमनी के एकरा के npm से इंस्टॉल क देले बानी जा, लेकिन अब वेबपैक के एकर इस्तेमाल करे खाती कॉन्फ़िगर करे के जरूरत बा।
-
में लोडर सेट कर लीं
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 के इंजेक्ट करेला, आ के इस्तेमाल में मदद करेला , ऑटोप्रिफिक्सर खातिर जरूरी बा, आ हमनी के Sass के इस्तेमाल करे के अनुमति देला।<style>
<head>
css-loader
@import
url()
postcss-loader
sass-loader
-
अब, बूटस्ट्रैप के सीएसएस आयात कइल जाव.
src/scss/styles.scss
बूटस्ट्रैप के सभ स्रोत Sass आयात करे खातिर निम्नलिखित में जोड़ीं ।// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
अगर रउरा चाहत बानी त हमनी के स्टाइलशीट के अलग-अलग आयात भी कर सकेनी। विस्तार से जाने खातिर हमनी के Sass आयात डॉक्स पढ़ीं ।
-
एकरा बाद हमनी के सीएसएस लोड क के बूटस्ट्रैप के जावास्क्रिप्ट आयात करेनी जा।
src/js/main.js
सीएसएस लोड करे खातिर निम्नलिखित में जोड़ीं आ बूटस्ट्रैप के सभ जेएस आयात करीं। पॉपर के बूटस्ट्रैप के माध्यम से स्वचालित रूप से आयात कईल जाई।// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
बंडल के साइज कम रखे खातिर जरूरत के हिसाब से आप जावास्क्रिप्ट प्लगइन के अलग-अलग आयात भी कर सकत बानी:
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
बूटस्ट्रैप के प्लगइन के इस्तेमाल करे के तरीका के बारे में अधिक जानकारी खातिर हमनी के जावास्क्रिप्ट डॉक्स पढ़ीं ।
-
आ रउरा त काम हो गइल! 🎉 बूटस्ट्रैप के स्रोत सास आ जेएस पूरा लोड होखला के बाद अब राउर लोकल डेवलपमेंट सर्वर अइसन होखे के चाहीं।
अब रउआ कवनो बूटस्ट्रैप घटक के जोड़ल शुरू कर सकेनी जवना के रउआ इस्तेमाल करे के चाहत बानी। पूरा वेबपैक उदाहरण प्रोजेक्ट के जरूर देखीं कि कइसे अतिरिक्त कस्टम Sass शामिल कइल जा सकेला आ अपना बिल्ड के अनुकूलित कइल जा सकेला खाली बूटस्ट्रैप के CSS आ JS के ओह हिस्सा के आयात करके जवना के रउरा जरूरत बा.
उत्पादन के अनुकूलन के बारे में बतावल गइल बा
अपना सेटअप के आधार पर, रउआँ कुछ अतिरिक्त सुरक्षा आ गति अनुकूलन लागू कइल चाहत होखीं जे प्रोडक्शन में प्रोजेक्ट चलावे खातिर उपयोगी होखी। ध्यान दीं कि ई अनुकूलन वेबपैक उदाहरण प्रोजेक्ट पर लागू ना होला आ लागू कइल रउआँ पर निर्भर बा।
सीएसएस निकालल जा रहल बा
हमनी के style-loader
ऊपर कॉन्फ़िगर कइल सुविधाजनक रूप से बंडल में सीएसएस उत्सर्जित करेला ताकि मैन्युअल रूप से सीएसएस फाइल में लोड कइल 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>
एसवीजी फाइल के निकालल जा रहल बा
बूटस्ट्रैप के सीएसएस में इनलाइन यूआरआई के माध्यम से एसवीजी फाइल सभ के कई गो संदर्भ शामिल बा data:
। अगर रउआँ अपना प्रोजेक्ट खातिर कौनों सामग्री सुरक्षा नीति परिभाषित करीं जे 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 में निकालल आ ठीक से संदर्भित मिल जाई।
इहाँ कुछ गलत भा पुरान देखत बानी? कृपया गिटहब पर एगो मुद्दा खोलीं . समस्या निवारण में मदद के जरूरत बा? गिटहब पर खोज करीं भा चर्चा शुरू करीं .