2016-02-02 15 views
5

yüzden yapmak istiyorum:WebPack yapılandırma: Şartlı ithalat modülü

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

Ama eslint diyor ki: Ben babel-eslint ayrıştırıcı kullanıyorum

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

.

Bu, modülleri koşullu olarak yükleyemediğimi gösterir mi?

+1

Modülleri koşullu olarak yüklemek isterseniz, bu kuralı devre dışı bırakmanız gerekir. –

+1

ES6, bu mümkün değil. Bunun yerine düzenli bir gereksinimi deneyebilirsiniz. –

+0

İlgili, ancak tam olarak değil: https://stackoverflow.com/questions/36367532/how-can-i-conditionally-import-an-es6-module – ericsoco

cevap

6

Dinamik senkronize itmeler ES2015 modülleriyle mümkün değildir. Yalnızca import() aracılığıyla eşzamansız içe aktarmalarla dinamik olarak öğeleri içe aktarmak mümkündür.

Neden onu içe aktarıp koşullu olarak uygulansın?

import StatsPlugin from 'webpack-stats-plugin'; 

... 

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

Bir modülü içe aktarırsam ve buna başvurmuyorsa Daha sonra kodumun herhangi bir yerinde (yani esas olarak kullan ama kullanmama), web paketi hala pakete dahil mi? –

+7

webpack 1 hala bunu içerecektir çünkü CommonJS bu tür bir optimizasyona izin vermez, webpack 2 ES2015 modülleri kullanıldığında kullanılmayan işlevleri kaldırabilir. Bu özellik ağaç titreme denir. –

+1

@jhnns Bu yorumu cevabınıza dahil edebilir misiniz? Buraya benzer bir durum tarafından yönlendirildim, ancak Webpack 2 ile optimizasyon zaten yapıldı. –