2016-04-26 5 views
1

こんにちは、私はそこにあるすべてのリソースのためにここに来ることを余儀なくされています。外部ヘルパーでEs6のGrunt、Babelセットアップ

バベルのサイトだけでなく、すべての単一の投稿には、十分な情報が不足しています。

私はバベルのフォーラムで答えを出さないようにしました。

私はプロトタイプのライブラリをEs6に変換しようとしていて、可能な限り最もコードのないコードに変換しようとしています。だからbloaty重複したコードを生成し、可能であればbloaty requirejsと何かを生成するbrowserify。

私はバラバラとバベルを使ってプロジェクトを作成しようとしましたが、バベルのドキュメントに従って外部ヘルパープラグインを設定しました。

関連するヘルパーコードを含めることができず、インポートモジュールコードを完全に含めることができません。

すなわちAバベル設定などの

{ 
    options: { 
     sourceMap: false, 
     presets: ['es2015'], 
     "plugins": ["external-helpers"] 

    }, 
    dist: { 
     files: { 
      'build/<%= package.name %>.js': ['src/<%= package.name %>.js'] 
     } 
    } 
} 

メインのプロジェクトファイルは、エクスポートが余分なコードの下に配置されているかのようにモジュールのコードは次のようになります

import Button from './ui/buttons/Button'; 

などの輸入がそのために生成されています。

export default class ShareButton {} 

モジュールまたはヘルパーオブジェクトが含まれているのこの

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

require('babel-core/external-helpers'); 

var _Button = require('./ui/buttons/Button'); 

var _Button2 = babelHelpers.interopRequireDefault(_Button); 

なしソースのような出力を生成します。

私は外部ヘルパーに対処する方法のために懸命に検索し、それがすなわち別のファイルにインポートする

babel-external-helpers -l createClass > src/helpers.js 

を必要なだけのヘルパー関数を生成するには、このような何かを持っているが、任意のリソースがに関して示唆これはプロジェクトにインポートする方法までは行かない。

トランスフォームランタイムプラグインを使用すると、無効にすることができない大量のポリフィルが生成されるため、バグがあり、必要なものにはあまり役に立ちません。

"plugins": [ 
    ["transform-runtime", { "polyfill": false, "regenerator": false }] 
] 

私がbrowserify/babelifyを使用すると、ロイヤルな混乱を招き、コードを複製します。

設定などの

{ 
    options: { 
     "transform": [["babelify", { 

      "presets": ["es2015"], 

      "plugins": ["external-helpers"], 

      sourceMap: false 
     }]] 
    }, 
    dist: { 
     files: { 

      'build/<%= package.name %>.js': ['src/<%= package.name %>.js'] 

     } 
    } 
} 

が不足している外部のヘルパーでも、このようなコードを生成し、ヘルパーに関係のないコードを重複しました。すなわち

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

生成されたファイルのすべてのモジュール内にあります。私はすべてのファイルの一番下に、次のようにクラスをエクスポートする場合

export default class {} 

重複コードが

のようなbloatyのラッピングコードが含まれていないファイルサイズの点では

var _class = function _class() { 
    babelHelpers.classCallCheck(this, _class); 
}; 

exports.default = _class; 

のように生成されます

},{}],2:[function(require,module,exports){ 

すべてのプロトタイプクラスのファイルをまとめて1つのファイル内のファイルは勝者です。

ライブラリーを移植しますが、似たようにして、1つのファイルにまとめてください。

うまくいけば、これは簡潔であり、簡単な解決策があります。

FYIのブラウザでは、タブと4つのスペースを理解できません。コードブロックが機能するように私のエディタでこの投稿を編集しなければなりませんでした。 `` `` `のような他の場所のようなマークアップを持つといいでしょうか?

ありがとうございました。

+0

今私はヘルパーを手動で生成し、それを縮小して生成されたバベルのビルドに連結する必要があると考えました。すなわち バベル-外部ヘルパー-l createClass、classCallCheckは、継承、interopRequireDefault、possibleConstructorReturn>は、具体的にこれらをインポートすると、自動的に構築され得る方法を把握しようとすると を../../lib/babel/helpers.js。 ファイルを不必要に大きくするので、polyfill全体を生成するtransform-runtimeプラグインにはバグがあるようですが、それほど有用ではありません。 –

答えて

0

私はバベルでロールアップを使用しています。ロールアップは、umdモードとしてクリーンな出力を生成します。 Browserify自体は本当に塊状です。

変換されるポリフェルには問題があります。 WeakMapのように外部のものを連結しなければならない。

生成されたイテレータを使用しようとして問題が発生しました。そのためにポリフィルを見つけるために、イテレータを生成しない特定の方法でループをコーディングする必要があります。

バベルのpolyfillの生成は、まだあまりにも塊状で狂っています。それはかなりひどいです。だから私は非常に小さく、世界的に使用されている小型化ポリフィルを連結しています。

関連する問題