我正在根据 A 开发库 A 和库 B、B。我想使用 browserify 将它们独立捆绑起来,所以在我的浏览器中我可以这样做:
var A = require("A");
var B = require("B");
我想将它们独立捆绑起来,因为我还在开发仅依赖于 A 的库 C,如果 A 包含在 B 中,那么 C 将无法访问它,如果 A 在 B 和 C 中,我已经有重复。
所以我从浏览库 A 开始:
browserify -r ./src/A.js:A -o build/A.js
效果很好,我可以分发 A,其他人可以用它开发他们的应用程序。
然后我browserify库B:
browserify -r ./src/B.js:B -o build/B.js
但是我现在有两次 A,A 在浏览器中独立加载,并再次与 B 打包。所以我使用 browserify 中的 -i 选项来防止它被包含:
browserify -r ./src/B.js -o build/B.js -i A
但是,当 B 需要 A 时,它会得到一个空对象 {} 而不是库。尽管库 A 仍然可以通过 require("A") 从全局范围内使用。
我尝试使用 -x 进行外部化,但是我不再需要全局范围内的库。
我设法通过破解 B 的生成输出来获得我想要的行为,强制模块解析从以前的要求中获取 A,这让我认为可以有一个简单的解决方案,但我找不到它。
我正在使用 browserify 2.18.1