Я являюсь автором arangojs, который предназначен для работы как в браузере, так и в узле.js, но для некоторых его внутренних компонентов требуется различная реализация в зависимости от среды, в которой он используется (например, для создания HTTP-запросов и т. Д.).Как сделать webpack загружать версии браузера подмодулей в качестве автора библиотеки?
Конфигурация по умолчанию Webpack 1 имел resolve.extensions
набор включает .web.js
и .webpack.js
с приоритетом над .js
, что позволило нацеливание Webpack специально, обеспечивая реализацию браузера подмодулей использованием .web.js
вместо .js
в качестве расширения файла.
Но этот подход является хрупким, и по умолчанию конфигурация Webpack 2 уже не включает эти два. Другим способом было бы явно определить заменители в конфигурации, но опять же это хрупкое и требует сознательных усилий на конце пользователя.
Предоставление два различных версий одного и тот же модуль на НОМ (например arangojs-node
и arangojs-browser
), кажется, самый надежный подход, но наказывает пользователь, пишущие универсальные приложения, потому что они теперь должны явно установить оба (и все равно придется возиться с их конфигурацией для обеспечения универсальной загрузки кода любой из двух по необходимости).
В качестве автора библиотеки у меня нет прямого контроля над конфигурацией webpack пользователя, поэтому на практике это означает, что я должен сказать пользователям обновить их конфигурацию вручную.
Каков наилучший подход для решения этой проблемы? По-видимому, не существует каких-либо установленных рекомендаций для авторов библиотек в сообществе webpack.