У меня есть библиотека, которая может использоваться как с node.js, так и с браузером. Я использую CommonJS, а затем публикую для веб-версии с помощью webpack. Мой код выглядит следующим образом:
// For browsers use XHR adapter
if (typeof window !== 'undefined') {
// This adapter uses browser XMLHttpRequest
require('./adapters/xhr');
}
// For node use HTTP adapter
else if (typeof process !== 'undefined') {
// This adapter uses node `http`
require('./adapters/http');
}
Проблема, с которой я сталкиваюсь, заключается в том, что при запуске webpack (браузер будет делать то же самое) сгенерированный вывод включает http
вместе со всеми его зависимостями. Это приводит к созданию файла HUGE, который не является оптимальным для производительности браузера.
Мой вопрос в том, как я могу исключить путь кода node при запуске модуля? Я решил это временно, используя внешние ресурсы webpack и возвращая undefined при включении './adapters/http'
. Это не решает случай использования, когда другие разработчики зависят от моей библиотеки, используя CommonJS. Их сборка закончится той же проблемой, если они не используют аналогичную конфигурацию исключений.
Я посмотрел на использование envify, просто интересно, есть ли другое/лучшее решение.
Спасибо!