我有一个可以在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');
}
我遇到的问题是,当我运行webpack(browserify也会有同样的情况),生成的输出包括了http
及其所有依赖项。这导致文件非常巨大,不利于浏览器性能。我的问题是,在运行模块打包程序时如何排除Node代码路径?我通过使用webpack的外部(externals)并在包含'./adapters/http'
时返回未定义(undefined)来暂时解决了这个问题。但这无法解决其他开发人员使用CommonJS依赖于我的库的情况。他们的构建将面临相同的问题,除非他们使用类似的排除配置。
我已经尝试使用envify,只是想知道是否还有另一个/更好的解决方案。
谢谢!