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)? Может ли какое-либо из этих решений вызвать проблему с помощью рендеринга на стороне сервера?
Спасибо!