2016-01-03 4 views
15

मैं वेबपैक के साथ एक बंडल बनाने की कोशिश कर रहा हूं। मेरे पास थोड़ा जटिल निर्भरता है: कुछ घटकों को अन्य /home/.../ फ़ोल्डर में स्थित अन्य लोगों की आवश्यकता होती है।बेबेल-लोडर प्रीसेट के लिए संकल्प कैसे सेट करें

घटक (/home/.../far-away-components/base-component.js फ़ाइल):

import {base_component} from "base-component"; 
exports class MyComponent extends base_component { 
    ... 
} 

webpack.config.js: Couldn't find preset "react" relative to directory "/home/.../far-away-components":

var path = require("path"); 
module.exports = { 
    ... 
    module: { 
     loaders: [ 
      { 
       test: /\.(js)$/, 
       loader: "babel", 
       query: { 
        presets: ['react', 'es2015', "stage-0"] 
       } 
      } 
     ] 
    }, 
    resolve: { 
     alias: { 
      "base-component": "/home/.../far-away-components/base-component.js" 
    } 
}; 

समस्या यह है कि far-away-components फ़ोल्डर node_modules शामिल नहीं है और मैं कोई त्रुटि मिलती है।

babel-loader प्रीसेट के लिए मैं resolve कैसे सेट कर सकता हूं?

उत्तर

37

समाधान from github issue:

query: { 
    presets: [ 
    'babel-preset-es2015', 
    'babel-preset-react', 
    'babel-preset-stage-0', 
    ].map(require.resolve), 
} 
+0

अच्छा लगता है। व्यक्तिगत हित के लिए: क्या आपने .babelrc फ़ाइल को आजमाया है क्योंकि यह बेबेल उपयोग एटीएम के लिए गोटो दृष्टिकोण है? और सावधान रहें: जिस क्रम में आप प्रीसेट को कॉल करते हैं। –

+0

@ रिकोहेरविग, हाँ मैंने किया, त्रुटि वही थी। – mqklin

+1

महान काम करता है! धन्यवाद @ mqklin। दूसरों के लिए बस 'बेबेल-प्रीसेट-' उपसर्ग को न भूलें ताकि इसे हल किया जा सके। – supNate

0

कैसे रन

npm init 
/home/.../far-away-components फ़ोल्डर में

, और फिर स्थापित करने के लिए आप क्या जरूरत है NPM का उपयोग के बारे में।

+0

में मदद करता है, क्योंकि मैं इसे नहीं करना चाहता, क्योंकि मेरे पास सभी आवश्यक 'node_modules'' webpack.config.js'। मुझे 'resol.fallback' जैसे विकल्प की आवश्यकता है लेकिन' बेबेल-लोडर 'प्रीसेट के लिए। – mqklin

1

@mqklin: आपको ".map (require.resolve)" का उपयोग करके इस कार्य-आसपास की आवश्यकता है, क्योंकि आपने अपने लोडर में/node_modules/बहिष्कृत नहीं किया है। नीचे दिया गया प्रारूप काम करना चाहिए:

loaders: [ 
    { 
    test: [/\.js$/, /\.es6$/], 
    exclude: /node_modules/, 
    loader: 'babel-loader', 
    query: { 
     cacheDirectory: true, 
     presets: ['react', 'es2015'], 
    } 
    } 
] 
संबंधित मुद्दे