【发布时间】:2014-11-08 04:10:27
【问题描述】:
我有一个可以与 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,只是想知道是否有其他/更好的解决方案。
谢谢!
【问题讨论】:
标签: javascript node.js build webpack