我有一个可以与node.js和浏览器一起使用的库.我正在使用CommonJS然后使用webpack发布Web版本.我的代码看起来像这样:
// For browsers use XHR adapter
if (typeof window !== 'undefined') {
// This adapter uses browser's XMLHttpRequest
require('./adapters/xhr');
}
// For node use HTTP adapter
else if (typeof process !== 'undefined') {
// This adapter uses node's `http`
require('./adapters/http');
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我运行webpack(browserify会做同样的事情)时,生成的输出包括http它的所有依赖项.这会导致HUGE文件对浏览器性能不是最佳的.
我的问题是如何在运行模块捆绑器时排除节点代码路径?我通过使用webpack的externals暂时解决了这个问题,并在包含时返回undefined './adapters/http'.这并不能解决其他开发人员使用CommonJS依赖我的库的用例.他们的构建最终会遇到同样的问题,除非他们使用类似的排除配置.
我看过使用envify,只是想知道是否还有其他/更好的解决方案.
谢谢!