我有一个可以与 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
它的所有依赖项。这会产生一个对于浏览器性能来说不是最佳的巨大文件。
我的问题是如何在运行模块捆绑器时排除节点代码路径?我通过使用 webpack 的外部临时解决了这个问题,并且在包含'./adapters/http'
. 这并不能解决其他开发人员使用 CommonJS 依赖我的库的用例。除非他们使用类似的排除配置,否则他们的构建最终会遇到同样的问题。
我看过使用 envify,只是想知道是否有另一个/更好的解决方案。
谢谢!