2013-06-29 3 views
6

私はライブラリAとライブラリBを開発中です.Aに応じてBをBにします。 browserifyを使用して、私のブラウザで私が行うことができます:私はまた、唯一のAに依存しており、AがBに含まれている場合、それはからアクセスできなくなり、ライブラリCを開発していますようグローバルスコープのrequireから依存関係をまとめてロードするようにブラウザに指示します。

var A = require("A"); 
var B = require("B"); 

私は独立して、それらを束ねるしたいと思いますC、AがBとCの場合は重複があります。

だから私は、ライブラリA browserifyingで始まる:

browserify -r ./src/A.js:A -o build/A.js 

完全に正常に動作し、私はAを配布することができますし、他の人はそれで自分のアプリケーションを開発することができます。

その後、私は図書館B browserify:

browserify -r ./src/B.js:B -o build/B.js 

をしかし、私は今、だから私は防ぐことbrowserifyから-iオプションを使用してブラウザに独立してロードされ、再びB.とともにパッケージ化され、2回を持っていますそれが含まれてから:

browserify -r ./src/B.js -o build/B.js -i A 

しかし、BがAを必要とすると、ライブラリの代わりに空のオブジェクト{}が得られます。 ライブラリAは、依然としてrequire( "A")を実行することによってグローバルスコープから利用可能です。

-xで外部化しようとしましたが、グローバルスコープからライブラリを要求することはできません。

私は、生成されたBの出力をハッキングして、以前の要求からAを得るようにモジュールの解像度を強制することで、私が望む振る舞いを得ることができましたが、簡単な解決策があると思います。それを見つける。

私はそれを見てのbrowserify 2.18.1

+0

-x、--externalはあなたが探しているものである必要があります。参照してください:https://github.com/substack/node-browserify#multiple-bundles – Epeli

+0

@エペリ、私は - 外部オプションを使ってみましたが、AがまだBにあるので、何の効果もないようです。モジュール名: 'browserify -x A -r ./src/B.js:B -o build/B。js' またはファイルを指していることにより: 'browserify -x node_modules/A/A.js -r ./src/B.js:B -o構築/ B.js' 任意のアイデア何を-x有効な入力として受け入れることができますか? 私の問題は[browserifyのGitHub](https://github.com/substack/node-browserify/issues/404) – Olivier

+0

afaikでこの問題に関連しているようです.jsファイルとモジュール名へのパスを受け入れるべきです。 – Epeli

答えて

1

二つの方法を使用しています:jqueryのjqueryのよう-UIおよびAのようなBの

  • と思います。 jquery-uiを使いたい場合は、DOMにjqueryを含めることができます。 建物BはAを必要としません。

  • BにAが組み込まれていることを文書化してください。 Bを使用するユーザーは、Aをまったく含まないようにする必要があります。このシナリオでは、明らかにAを必要とし、BをAと共に束ねる必要があります。一般的に

  • あなたはSAMEページにインポートされている共通した部分を持つ2つのbrowserifiedバンドルを、持っているならば、あなたはすでにコンポーネントが何などで何かを行くものを、バンドル・組織/依存性の問題に陥っていますその基本をレビュー/変更する必要があります

関連する問題