2017-01-25 39 views
16

Jak polyfillować fetch i promise dla Webpack 2?Jak polyfillować przynosić i obiecywać za pomocą pakietu internetowego 2?

Mam wiele punktów wejścia, więc Webpack 1-way, aby dodać je przed każdym punktem wejścia nie jest pożądanym rozwiązaniem.

+3

Dlaczego nie można po prostu zawierać polyfills jako pojedynczy wpis? Są to polyfills, więc żaden moduł nie będzie ich importować/wymagać. – lorefnon

+0

Czy chcesz załadować polyfills jako pojedynczy plik przed pakietami (nie mam pakietu SPA, 1 strona = 1. Dlaczego mam dużo punktów wejścia)? Jeśli tak - jest to jeszcze jedna prośba GET =/W każdym razie, dobra wskazówka, dzięki. – bravedick

Odpowiedz

3

Być może nie rozumiem poprawnie, ale czy nie możesz po prostu dodać babel-polyfill przed resztą punktów wejścia w konfiguracji komputera?

module.exports = { 
    entry: ['babel-polyfill', './app/js', '/app/js/whatever'] 
}; 
+0

wpisów jest obiekt: https://webpack.js.org/guides/code-splitting-libraries/#multiple- centries Muszę skopiować i wkleić je między klawiszami. Szukałem czegoś, importując je automatycznie dla każdego punktu wejścia. – bravedick

+0

Z mojego doświadczenia wynika, że ​​musisz dodać 'import 'babel-polyfill'' do uruchamiania aplikacji, zwykle plik' index.js' .. lub dodać go do każdego punktu wejścia ręcznie w pakiecie sieci Web. Gorąco polecam używanie tego pierwszego, ponieważ większość aplikacji ma jeden punkt startowy i nie musisz ciągle dodawać polyfill. –

+4

FYI: babel-polyfill nie zawiera pobierania – Andrew

11

Niezależnie od tego, ile punktów wejściowych trzeba, trzeba mieć osobny plik dla plików dostawców, takich jak ramy (reagują, kątowe, whatevs) oraz wszelkich bibliotek zawsze trzeba jednak rzadko się zmieni. Chcesz je jako osobny pakiet, aby można było go buforować. Ten pakiet powinien zawsze być załadowany. Wszystko, co umieścisz w tym pakiecie, będzie zawsze dostępne, ale nigdy nie będzie powtarzane w porcjach, jeśli użyjesz go z commonChunksPlugin.

Oto próbka z aplikacji robiłem (tylko pokazując odpowiednie opcje konfiguracyjne):

module.exports = { 
    entry: { 
    client: 'client', 
    vendor: [ 
     'react', 
     'react-addons-shallow-compare', 
     'react-addons-transition-group', 
     'react-dom', 
     'whatwg-fetch' 
    ] 
    }, 
    output: { 
    path: `${__dirname}/dist`, 
    filename: '[name].js', 
    publicPath: '/build/' 
    }, 
    plugins: [ 
    new webpack.optimize.CommonsChunkPlugin({ 
     names: ['vendor', 'manifest'] 
    }) 
    ] 
} 
+0

Dziękuję za odpowiedź. Bounty wkrótce wygaśnie, więc daję ci to, jako większość głosów, ale jeśli ktoś ma inne podejście, to zapraszam;) – bravedick

+0

Wystarczająco fair. Dzięki za nagrodę – shadymoses