ライブラリAとライブラリB、Aに応じて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 を配布でき、他の人はそれを使用してアプリケーションを開発できます。
次に、ライブラリ B を参照します。
browserify -r ./src/B.js:B -o build/B.js
しかし、今では A が 2 回あります。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を使用しています