2016-02-02 19 views
5

Więc chcę zrobić:WebPACK config: Warunkowo moduł import

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

Ale eslint mówi:

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

Używam babel-eslint parsera.

Czy to oznacza, że ​​nie mogę załadować modułów warunkowo?

+1

Jeśli chcesz załadować moduły warunkowo, powinieneś po prostu wyłączyć tę regułę. –

+1

Specyfikacja ES6 nie jest możliwa. Zamiast tego możesz spróbować zwykłego wymagania. –

+0

Powiązany, choć nie do końca duplikat: https://stackoverflow.com/questions/36367532/how-can-i-onditionally-import-an-es6-module – ericsoco

Odpowiedz

6

Dynamiczne importowanie synchroniczne nie jest możliwe w przypadku modułów ES2015. Importowanie danych jest możliwe tylko przy asynchronicznym importowaniu za pośrednictwem import().

Dlaczego po prostu go nie zaimportujesz i nie zastosujesz warunkowo?

import StatsPlugin from 'webpack-stats-plugin'; 

... 

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

Jeśli importuję moduł i go nie odwołuję gdziekolwiek w moim kodzie później (tj. zasadniczo zawiera, ale nie używa), czy pakiet internetowy nadal zawiera go w pakiecie? –

+7

Pakiet internetowy 1 nadal będzie go uwzględniał, ponieważ CommonJS nie pozwala na taką optymalizację, pakiet Webpack 2 może usunąć nieużywane funkcje, gdy używane są moduły ES2015. Ta funkcja nazywa się drżenie drzewa. –

+1

@jhnns Czy możesz uwzględnić ten komentarz w swojej odpowiedzi? Wpadłem tu na podobną sytuację, ale wydaje się, że z Webpack 2 optymalizacja już trwa. –

Powiązane problemy