1. ProvidePlugin()
Похож на широко используемый подход. Об этом gist, демонстрируя, как включить whatwg-fetch polyfill в сборку Webpack. Многие ответы на StackOverflow используют здесь и здесь.
new webpack.ProvidePlugin({
  '$': 'jquery',
  'jQuery': 'jquery',
  'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'
})
👍 Плюсы
- Это работает. (пожалуйста, обновите этот список, если мне что-то не хватает)
 
👎 Минусы
- Необходимо отслеживать глобальные библиотеки в конфигурации Webpack.
 
 2. entry: [...]
Я был немного удивлен этим подходом, когда обнаружил его в этот смысл, но он работает так же хорошо.
entry: [
    'babel-polyfill',
    'whatwg-fetch',
    'jquery',
    'webpack-hot-middleware/client',
    path.join(process.cwd(), 'app/app.js')
],
👍 Плюсы
- Он работает.
 -  Я могу полностью удалить 
ProvidePlugin(). 
👎 Минусы
- Необходимо отслеживать глобальные библиотеки в конфигурации Webpack.
 
 3. Верхний уровень import
Это очень просто, см. пример app.js. Этот файл является точкой входа в приложение React.
/**
 * app.js
 */
import 'whatwg-fetch';
import 'babel-polyfill';
import 'jquery';
👍 Плюсы
- Он работает так же хорошо.
 - Простое добавление/удаление. Не нужно касаться конфигурации Webpack.
 
👎 Минусы
- Не похоже, что этот подход будет работать с плагинами jQuery, например. bootstrap.js.
 
Наблюдение. Между всеми тремя подходами я не заметил никаких изменений в размере пакета.
Есть ли один рекомендованный способ обработки глобальных библиотек с помощью Webpack (и React)? Может ли какое-либо из этих решений вызвать проблему с помощью рендеринга на стороне сервера?
Спасибо!