2016-02-02 14 views
5

だから私がやりたい:のWebPACKの設定:条件付きインポートモジュール

if (process.env.NODE_ENV === 'production') { 
    import StatsPlugin from 'webpack-stats-plugin'; 
} 

しかしeslintは言う:

Parsing error: 'import' and 'export' may only appear at the top level 

私はバベル-eslintパーサーを使用しています。

これは、条件付きでモジュールをロードできないことを意味しますか?

+1

条件付きでモジュールをロードする場合は、このルールを無効にするだけです。 –

+1

ES6の仕様では、これは不可能です。代わりに通常の要求を試すことができます。 –

+0

関連性はありますが、重複はありません。 https://stackoverflow.com/questions/36367532/how-can-i-conditionally-import-an-es6-module – ericsoco

答えて

6

動的同期インポートはES2015モジュールでは不可能です。 import()で非同期インポートを使用して動的に物資をインポートすることは可能です。

なぜそれをインポートして条件付きで適用しないのですか?

import StatsPlugin from 'webpack-stats-plugin'; 

... 

if (process.env.NODE_ENV === 'production') { 
    config.plugins.push(new Statsplugin()) 
} 
+0

モジュールをインポートして参照していない場合後で自分のコードのどこにでも(つまり、基本的にはインクルードしていますが使用していません)、Webpackはそれをバンドルに含めますか? –

+7

CommonJSはこの種の最適化を許可していないため、Webpack 1にも含まれています.Webpack 2は、ES2015モジュールを使用すると未使用の機能を削除できます。この機能をツリーシェイキングと呼びます。 –

+1

@jhnns答えにそのコメントを含めることはできますか?私はここでも同様の状況で運転されましたが、Webpack 2では最適化がすでに行われているようです。 –