2016-03-28 15 views
0

çıktı dosyasıİlave define dönüşümü-es2015-modülleri-AMD hırıltı-karmaşası

import Logger from "logger"; 
export default class Greeter { 
    constructor(name) { 
     this.name = name || ''; 
     console.log('Hello', name); 
    } 

    notify() { 
     console.log('It is my duty to inform you that this JS is ES6!'); 
    } 

    getName() { 
     Logger.log('Called getName'); 

     return this.name; 
    } 
} 

çıktı dosyası ile, hırıltı

define([], function() { 
    define(['exports', 'logger'], function (exports, _logger) { 
     'use strict'; 

     Object.defineProperty(exports, "__esModule", { 
      value: true 
     }); 

     var _logger2 = _interopRequireDefault(_logger); 

     function _interopRequireDefault(obj) { 
      return obj && obj.__esModule ? obj : { 
       default: obj 
      }; 
     } 

     function _classCallCheck(instance, Constructor) { 
      if (!(instance instanceof Constructor)) { 
       throw new TypeError("Cannot call a class as a function"); 
      } 
     } 

     var _createClass = function() { 
      function defineProperties(target, props) { 
       for (var i = 0; i < props.length; i++) { 
        var descriptor = props[i]; 
        descriptor.enumerable = descriptor.enumerable || false; 
        descriptor.configurable = true; 
        if ("value" in descriptor) descriptor.writable = true; 
        Object.defineProperty(target, descriptor.key, descriptor); 
       } 
      } 

      return function (Constructor, protoProps, staticProps) { 
       if (protoProps) defineProperties(Constructor.prototype, protoProps); 
       if (staticProps) defineProperties(Constructor, staticProps); 
       return Constructor; 
      }; 
     }(); 

     var Greeter = function() { 
      function Greeter(name) { 
       _classCallCheck(this, Greeter); 

       this.name = name || ''; 
       console.log('Hello', name); 
      } 

      _createClass(Greeter, [{ 
       key: 'notify', 
       value: function notify() { 
        console.log('It is my duty to inform you that this JS is ES6!'); 
       } 
      }, { 
       key: 'getName', 
       value: function getName() { 
        _logger2.default.log('Called getName'); 

        return this.name; 
       } 
      }]); 

      return Greeter; 
     }(); 

     exports.default = Greeter; 
    }); 
}); 

çıktı dosyası ile, CLI

ile
define(['exports', 'logger'], function (exports, _logger) { 
    'use strict'; 

    Object.defineProperty(exports, "__esModule", { 
     value: true 
    }); 

    var _logger2 = _interopRequireDefault(_logger); 

    function _interopRequireDefault(obj) { 
     return obj && obj.__esModule ? obj : { 
      default: obj 
     }; 
    } 

    function _classCallCheck(instance, Constructor) { 
     if (!(instance instanceof Constructor)) { 
      throw new TypeError("Cannot call a class as a function"); 
     } 
    } 

    var _createClass = function() { 
     function defineProperties(target, props) { 
      for (var i = 0; i < props.length; i++) { 
       var descriptor = props[i]; 
       descriptor.enumerable = descriptor.enumerable || false; 
       descriptor.configurable = true; 
       if ("value" in descriptor) descriptor.writable = true; 
       Object.defineProperty(target, descriptor.key, descriptor); 
      } 
     } 

     return function (Constructor, protoProps, staticProps) { 
      if (protoProps) defineProperties(Constructor.prototype, protoProps); 
      if (staticProps) defineProperties(Constructor, staticProps); 
      return Constructor; 
     }; 
    }(); 

    var Greeter = function() { 
     function Greeter(name) { 
      _classCallCheck(this, Greeter); 

      this.name = name || ''; 
      console.log('Hello', name); 
     } 

     _createClass(Greeter, [{ 
      key: 'notify', 
      value: function notify() { 
       console.log('It is my duty to inform you that this JS is ES6!'); 
      } 
     }, { 
      key: 'getName', 
      value: function getName() { 
       _logger2.default.log('Called getName'); 

       return this.name; 
      } 
     }]); 

     return Greeter; 
    }(); 

    exports.default = Greeter; 
}); 

{ 
    "presets": ["es2015"], 
    "plugins": ["transform-es2015-modules-amd"] 
} 

.babelrc ben hırıltı-babel eklentisi aracılığıyla dönüşümü yaparken fazladan define() benim ES5 kaynağına ekleniyor bu garip davranış içine çalıştırıyorum. Repo'yu çektim ve babel-core ve babel-preset-es2015'i en son sürümlere güncelledim ve işe yaramadı.

Babil-grunt içine kazmak, dönüşüm yapmak için babel.transformFileSync gibi görünüyor. Babel-cli paketinde babel.tranform kullanılır. Ancak babel.transformFileSync sadece bir dosya okuyor ve içeriği babel.tranform'a aktarıyor.

Bazı küçük yapılandırma seçeneklerinde veya başka bir yerde eksik gibi hissediyorum. Ne eksik olduğumu gören var mı?

cevap

1

Sorunumu buldum. Benim Gruntfile.js benim .babelrc dosyadan JSON dizesini okuma ve seçenekler nesnesine geçiriyordum. Bu, ikili tanımlamaya neden olmuş gibi görünüyor. Bunu kaldırdıktan sonra sorunun kendiliğinden çözüldüğünü.

Bunun neden bu davranışa neden olduğundan emin değilsiniz, ancak şimdi halledilir.

+0

Neden .babelrc'ünü okuyorsunuz? Bu, eklentinin hem mantığınız hem de Babel tarafından okunacağı anlamına gelir, yani iki kez belirtilir. Bu dönüşümü iki kez çalıştırır ve bunun gibi çift yuvaya neden olur. – loganfsmyth

+0

@Jason - Sen sadece pastamı kurtardın! Benim durumumda ek Babel yapılandırma bilgisi package.json içinde ve ben Gulp kullanıyorum. Fakat işler aynı kafa karıştırıcı şekilde çalışır. –

İlgili konular