webpack
विकास सर्वर: वेबपैक-देव-सर्वर
खोज…
स्थापना
webpack-dev-server को npm माध्यम से स्थापित किया जा सकता है
npm --save-dev webpack-dev-server
अब आप सर्वर शुरू कर सकते हैं
./node_modules/.bin/webpack-dev-server
उपयोग को सरल बनाने के लिए आप स्क्रिप्ट को package.json जोड़ सकते हैं
// package.json
{
...
"scripts": {
"start": "webpack-dev-server"
},
...
}
अब सर्वर चलाने के लिए आप उपयोग कर सकते हैं
npm run start
webpack-dev-server को webpack.config.js फ़ाइल में खंड devServer में कॉन्फ़िगर किया गया है।
सर्वर सामग्री आधार निर्देशिका को बदलने के लिए आप विकल्प contentBase उपयोग कर सकते हैं। उदाहरण कॉन्फ़िगरेशन public_html रूट डायरेक्टरी की तरह दिख सकता है
let path = require("path");
module.exports = {
...
devServer: {
contentBase: path.resolve(__dirname, "public_html")
},
...
}
प्रॉक्सी का उपयोग करना
webpack-dev-server कुछ अनुरोधों को अन्य सर्वरों पर प्रॉक्सी कर सकता है। जब आप उसी डोमेन पर अनुरोध भेजना चाहते हैं तो एपीआई क्लाइंट को विकसित करने के लिए यह उपयोगी हो सकता है।
प्रॉक्सी को proxy पैरामीटर के माध्यम से कॉन्फ़िगर किया गया है।
पोर्ट 8080 पर सुनने वाली अन्य सेवा के लिए /api से गुजरने वाले देव सर्वर के उदाहरण विन्यास इस तरह दिख सकते हैं
// webpack.config.js
module.exports = {
...
devServer: {
proxy: {
"/api": {
target: "http://localhost:8080"
}
}
}
...
}
पुनर्लेखन
pathRewrite विकल्प का उपयोग करके गंतव्य पथ को फिर से लिखना संभव है।
मान लें कि आप पिछले उदाहरण से पट्टी /api उपसर्ग करना चाहते हैं, तो आपका कॉन्फिगर कैसा दिख सकता है
// webpack.config.js
...
devServer: {
proxy: {
"/api": {
target: "http://localhost:8080",
pathRewrite: {"^/api" : ""}
}
}
}
...
अनुरोध /api/user/256 को http://localhost:8080/user/256 परिवर्तित किया जाएगा।
फिल्टर
केवल कुछ अनुरोधों को प्रॉक्सी करना संभव है। bypass आपको फ़ंक्शन प्रदान करने की अनुमति देता है जो वापसी मूल्य निर्धारित करेगा कि क्या अनुरोध को अनुमानित किया जाना चाहिए या नहीं।
यह मानकर कि आप केवल POST अनुरोधों को /api लिए प्रॉक्सी करना चाहते हैं और webpack संभाल कर रखें, बाकी आपके कॉन्फ़िगरेशन इस तरह दिख सकते हैं
// webpack.config.js
...
devServer: {
proxy: {
"/api": {
target: "http://localhost:8080",
bypass: function(req, res, proxyOptions) {
if(req.method != 'POST') return false;
}
}
}
}
...