2015-12-03 12 views
19

मैं एनपीएम मॉड्यूल बनाने की कोशिश कर रहा हूं और मुझे आधिकारिक babeljs वेबसाइट पर एकल निर्देश नहीं मिल रहा है। आप बेबेल-रनटाइम पैकेज का उपयोग कैसे करते हैं? नाम से मैं अनुमान लगा रहा हूं कि इसे package.json के "निर्भरता" खंड में रखा जाना चाहिए, है ना?बेबेल 6 में बेबेल-रनटाइम का उपयोग कैसे करें?

बिल्कुल यहाँ कोई जानकारी नहीं: https://github.com/babel/babel/tree/master/packages/babel-runtime

मिले एक उदाहरण यहाँ: https://strongloop.com/strongblog/javascript-babel-future/ लेकिन जब मैं चलाने "कोलाहल -h" यह एक वैध पैरामीटर के रूप में --optional की सूची नहीं है।

उत्तर

6

रनटाइम वैकल्पिक है, लेकिन बैबेल 6 में बाकी सब कुछ की तरह, यह मुख्य रूप से प्लगइन जोड़कर सक्षम है। इस मामले में, आप की जरूरत http://babeljs.io/docs/plugins/transform-runtime/

plugins: ["transform-runtime"] 
  • babel-runtime एक पैकेज है कि एक polyfill और कई अन्य चीजें हैं जो कोलाहल संदर्भ ले सकते हैं है। आप npm install babel-runtime
  • transform-runtime अपने स्रोत कोड की प्रक्रिया और import foo from "babel-runtime" बयान इंजेक्षन ताकि babel-runtime वास्तव में प्रयोग किया जाता है के लिए एक कोलाहल प्लगइन आपके ऐप में इसे स्थापित होगी। आप इसे npm install babel-plugin-transform-runtime के साथ भी इंस्टॉल करेंगे।
+17

फिर 'ट्रांसफॉर्म-रनटाइम' प्लगइन पैकेज और 'बेबेल-रनटाइम' पैकेज के बीच क्या अंतर है? मैं कैसे सत्यापित कर सकता हूं कि यह काम कर रहा है? – cosmosb

23

दलील

जब आपके कोड transpiling, कोलाहल वास्तव में आप लक्षित ES संस्करण द्वारा समर्थित नहीं सुविधाओं का अनुकरण करने के सहायकों इंजेक्षन जाएगा।

उदाहरण के लिए: class MyClass {} इनलाइन सहायक _classCallCheck का लाभ उठाता है, जिसे require('babel-runtime/helpers/classCallCheck') के माध्यम से भी एक्सेस किया जा सकता है।

डिफ़ॉल्ट रूप से, उन सहायकों को संकलन इकाइयों (फ़ाइलों) के बीच साझा नहीं किया जाता है। बेबेल टीम हालांकि उन्हें एक स्थान पर कारगर बनाना दिलचस्प हो सकता है, जब वे कई बार उपयोग किए जाते हैं तो अंतरिक्ष को बचाने की अनुमति देते हैं।

इस समस्या को babel-plugin-transform-runtime प्लगइन बनाकर संबोधित किया गया है, जो एएसटी चलता है और babel-runtime मॉड्यूल की उचित आवश्यकता के अनुसार हेल्पर्स इंजेक्शन को प्रतिस्थापित करता है। इस तरह हेल्पर्स को कोडबेस में साझा किया जाता है और डुप्लिकेशन से बचा जाता है। जो सहायकों दूर करने के लिए अपने कोड को बदल देती है और babel-runtime में लोगों का उपयोग करता

  1. स्थापित babel-plugin-transform-runtime (एक devDependency के रूप में),:

    यह

    का उपयोग कैसे करें आप यह मानते हुए एक running Babel environment है। आप अपने कोलाहल विन्यास की plugins सरणी

  2. स्थापित babel-runtime (एक dependency के रूप में) है, जो वास्तविक पुस्तकालय babel-plugin-transform-runtime मान लिया गया है कि आप अपने dependencies में है करने के लिए जा रहे हैं करने के लिए इसे जोड़ने की जरूरत है, यह आपके transpiled कोड द्वारा उपयोग किया जाएगा चलने के समय पर। आपको अपने कोड में कहीं भी इसकी आवश्यकता नहीं है।

मिनिमल टुकड़ा

  • npm run builddist
  • npm start में lib फ़ोल्डर संकलित dist फ़ोल्डर (जो babel-runtime पर निर्भर करता है) शुरू होता है

package.json

{ 
    "scripts": { 
    "build": "babel lib --out-dir=dist", 
    "start": "node dist" 
    }, 
    "dependencies": { 
    "babel-runtime": "^6.9.2" 
    }, 
    "devDependencies": { 
    "babel-cli": "^6.10.1", 
    "babel-plugin-transform-runtime": "^6.9.0" 
    }, 
    "babel": { 
    "plugins": [ 
     "transform-runtime" 
    ] 
    } 
} 
+0

हाय @ मामेरिकबेमेट, मुझे लगता है कि आपका जवाब नोड वातावरण मानता है। क्या वो सही है? यदि हां, तो ब्राउज़र वातावरण में क्या किया जाना चाहिए (नोड बैकएंड के बिना)? क्या किसी रनटाइम आइटम की आवश्यकता है? – Zander

+0

@ ज़ैंडर: क्या आपका मतलब है कि ब्राउजर _in_ ब्राउज़र चलाएं? – aymericbeaumet

+0

hi @aymericbeaumet, मुझे स्पष्टीकरण दें: मेरा मतलब था कि ब्राउजर में एएस 6 कोड को चलाने के लिए पारदर्शी (जैसे गल्प/ग्रंट/वेबपैक इत्यादि) को पार करने के लिए बेबेल का उपयोग न करें। क्या इसका कोई मतलब है? – Zander

संबंधित मुद्दे