नोड_मॉडल को छोड़कर वेबपैक नहीं


85

मैं एक नोड फ्रेमवर्क के लिए वेबपैक का उपयोग कर रहा हूं जो मैं निर्माण कर रहा हूं (हालांकि मुझे संभवतः गल्प का उपयोग करना चाहिए, संयुक्त रूप से)। जब मैं ईजेएस मॉड्यूल शामिल करता हूं, तो वेबपैक इसे संकलित स्रोत में शामिल करता है, भले ही मैं स्पष्ट रूप से इसे नोड_मॉड्यूल्स डीआईआर को बाहर करने के लिए कहता हूं।

module.exports = {
    context: __dirname,
    target: 'node',
    // ...
    output: {
        libraryTarget: 'commonjs'
        // ...
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'babel-loader?{ "stage": 0, "optional": ["runtime"] }'
            }
        ]
    }
};

जैसा कि आप देख सकते हैं, मेरे पास जेएस फ़ाइलों के लिए एक परीक्षण है, और मैं इसे नोड_मॉडल को बाहर करने के लिए कहता हूं; यह मेरे बहिष्कार की अनदेखी क्यों कर रहा है?

जवाबों:


183

आपकी कॉन्फ़िग फ़ाइल से, ऐसा लगता है कि आप केवल node_modulesपार्स होने से बाहर कर रहे हैं babel-loader, लेकिन बंडल किए जाने से नहीं

node_modulesदेशी नोड पुस्तकालयों को बंडल से बाहर करने के लिए , आपको निम्न करने की आवश्यकता है:

  1. target: 'node'अपने में जोड़ें webpack.config.js। यह देशी नोड मॉड्यूल (पथ, एफएस, आदि) को बंडल होने से बाहर कर देगा ।
  2. अन्य को बाहर करने के लिए वेबपैक-नोड-एक्सटर्नल का उपयोग करें node_modules

तो आपका परिणाम विन्यास फाइल जैसा दिखना चाहिए:

var nodeExternals = require('webpack-node-externals');
...
module.exports = {
    ...
    target: 'node', // in order to ignore built-in modules like path, fs, etc. 
    externals: [nodeExternals()], // in order to ignore all modules in node_modules folder 
    ...
};

7
क्या ब्राउज़र पर भी कुछ ऐसा ही है? (अर्थात लक्ष्य: 'ब्राउज़र')
Andrea.cabral

मैं समझने की कोशिश कर रहा हूं कि क्या exclude: /node_modules/करता है। क्या आप विस्तृत कर सकते हैं? अगर हम इसे छोड़ देंगे तो क्या हो सकता है?
41इमे विद

यह एक regex है। यदि आप इसे छोड़ देते हैं, तो नोड_मॉड्यूल्स शामिल होंगे
मर्ड्रीका

शानदार जवाब और क्षमता।
गीक स्टॉक

2
@ IrimeVidas यह इसके ऊपर रन node_modulesहोने से डीआईआर को बाहर करेगा babel-loader, लेकिन इसे बंडल से बाहर नहीं करेगा
mlg87

16

यदि आप टाइपस्क्रिप्ट का उपयोग करते समय इस समस्या में भाग गए हैं, तो आपको skipLibCheck: trueअपनी tsconfig.jsonफ़ाइल में जोड़ना पड़ सकता है ।


7

पूर्ण पथ का उपयोग करने का प्रयास करें:

exclude:path.resolve(__dirname, "node_modules")

क्या आप हमें दिखा सकते हैं कि परियोजना कैसे संरचित है? फ़ाइल संरचना
एलन

-1

नीचे दिए गए इस उपाय को आजमाएं:

exclude:path.resolve(__dirname, "node_modules")

6
StackOverflow में आपका स्वागत है। बेहतर होगा कि आप अन्य उत्तरों के शीर्ष पर अतिरिक्त मूल्य प्रदान करें। इस मामले में, आपका जवाब अतिरिक्त मूल्य प्रदान नहीं करता है, क्योंकि एक और (एलन) उपयोगकर्ता 5 साल पहले ही उस समाधान को पोस्ट कर चुका है। एक बार जब आपके पास पर्याप्त प्रतिष्ठा हो, तो आपको इसे वोट करना चाहिए
ओलेग वाल्टर

-2

यह मेरे लिए काम किया:

बाहर करें: [/ bower_compenders /, / node_modules /]

module.loaders

स्वचालित रूप से लागू लोडर की एक सरणी।

प्रत्येक आइटम में ये गुण हो सकते हैं:

परीक्षण: एक शर्त जो पूरी होनी चाहिए

बहिष्कृत: एक शर्त जो पूरी नहीं होनी चाहिए

शामिल करें: एक शर्त जो पूरी होनी चाहिए

लोडर: "की एक स्ट्रिंग!" अलग लोडर

लोडर: स्ट्रिंग के रूप में लोडर की एक सरणी

एक शर्त एक RegExp, एक पूर्ण पथ प्रारंभ या इनमें से एक "और" के साथ संयुक्त की एक सरणी हो सकती है।

Http://webpack.github.io/docs/configuration.html#module-loaders देखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.