2015-03-03 10 views
7

मैं ईएस 6 को ईएस 5 को पार करने के लिए बेबेल का उपयोग कर रहा हूं और यह बहुत अच्छा काम करता है। ,बेबेल/6to5 - मॉड्यूल निर्यात करते समय डुप्लिकेट कोड

var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; 
var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; 
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; 

अपने आवेदन के रूप में अधिक से अधिक मॉड्यूल को परिभाषित वर्गों के लिए जा रहा है मैं तो बस इन दोहराया कोड की वजह से इतना स्थान waisting कल्पना नहीं कर सकते: केवल समस्या यह है कि प्रत्येक मॉड्यूल एक बार transpiled इन पंक्तियों के डुप्लिकेट है।

क्या बैबेल को प्रत्येक मॉड्यूल में शामिल न करने का कोई तरीका है ताकि हम उन्हें केवल एक बार बाद में जोड़ सकें?

मैं घूंट उपयोग कर रहा हूँ और मेरे config है:

var gulp = require('gulp'); 
var concat = require('gulp-concat'); 
var babel = require('gulp-babel'); 

gulp.task('default', function() { 

    return gulp.src('src/**/*.es6') 
     .pipe(babel({ playground: true, experimental: true, modules: 'amd', moduleIds: true })) 
     .pipe(concat('tmp/src.js')) 
     .pipe(gulp.dest('dist')); 
}); 

धन्यवाद आपकी मदद के लिए एक बहुत!

उत्तर

5

हाँ, के रूप में यह documentation में वर्णित है:

कोलाहल ऐसे _extend के रूप में आम कार्यों के लिए बहुत छोटे सहायकों का उपयोग करता है। डिफ़ॉल्ट रूप से यह प्रत्येक फ़ाइल में जोड़ा जाएगा जिसके लिए इसकी आवश्यकता होती है। यह डुप्लिकेशंस कभी-कभी अनावश्यक होता है, खासकर जब आपका एप्लिकेशन एकाधिक फ़ाइलों पर फैलता है।

यह वह जगह है जहां रनटाइम वैकल्पिक ट्रांसफॉर्मर आता है। सभी सहायक आपके मॉड्यूल आउटपुट में डुप्लिकेशंस से बचने के लिए मॉड्यूल babel-runtime मॉड्यूल का संदर्भ लेंगे।

प्रयोग

require("babel").transform("code", { optional: ["runtime"] }); 

$ babel --optional runtime script.js 
+6

मैं इस पर स्पष्ट नहीं कर रहा हूँ: यह है कि इस विकल्प को कोर-js, जो, जब तक आप core- की जरूरत के सभी कहते हैं दस्तावेज़ से लगता है जेएस, निश्चित रूप से सहायक पुनरावृत्ति से बचकर शेविंग बाइट्स के लाभ को हरा देगा, है ना? क्या कोर-जेएस जोड़ने के बिना हेल्पर्स को डुप्लिकेट करने का कोई तरीका नहीं है? – davidtheclark

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