2017-04-12 3 views
1

私たちは巨大なコードベースの部分を盛り上げようとしています。私たちはwebpackで構築されたモジュールを持ってきています。コードの重複を避けるために、Webpacksの外部オプションを使用しています。browserifyとwebpackの外部を混在させる

私たちのモジュールを現在browserifyを使用しているメインコードベースに統合すると、共有依存関係が2回含まれて問題が発生するという問題があります。

webpackにパッケージ版の依存関係を使用させる方法はありますか?したがって、最終的にブラウズされたバンドルでは、依存関係は一度だけ含まれていますか?私はWebPACKの上に私たちのコードベースの残りの部分を動かすためにプッシュする場合には、このように私には思える

は、可能ではないかもしれない(それがすでに進行中です)。

私は今のところ出ている唯一の解決策は、WebPACKのモジュールは、共有依存関係をエクスポートし、メインのアプリはその輸出を使う必要があり持っていることですが、これは理想的ではありません。

私は両方のnode_modulesフォルダの依存関係が同じバージョンであることを確認しましたが、まだ2つのインスタンスを取得しています。

私は、アプリケーションnode_modulesのみを解決するようにBrowserifyに指示するか、トップからボトムに解決するように指示する必要があります。つまり、最上位node_modulesを最初に見てください。

cliを使用しない場合にNODE_PATHオプションを設定しようとしました。

**更新**

だから、問題はBrowserifyはWebPACKのバンドルで必要()文に当たったとき、それはローカルnode_modulesフォルダから解決し、私たちは、依存関係の2つのインスタンスで終わるということです。私は、アプリケーションrequire()またはwebpacks externalオプションのどちらかで相対パスを使用して、同じファイルを使用するようにしてこれを修正できます。

答えて

0

だから、私もこれに取り組んでいたように、モジュール、問題は私が(NPMリンクに)シンボリックリンクしていたという事実によって引き起こされたと思われます。 Browserifyがシンボリックリンクされたモジュールのrequireを解決すると、それはそれ自身のnode_modulesに解決され、2つのコピーで終わるようです。

私は通常、モジュールをインストールすると、それはすべて正常に動作しますので、モジュールの他の消費者は何の問題はないはず、これはOKです。このように動作するのは面倒ですが、私はモジュールと一緒に開発するときに私の主なアプリケーションで同じ依存関係を指すようにする必要があります。私はシンボリックリンクしない場合は通常通り必要とすることができ

require('./node_modules/my-module/node_modules/shared-dependency/index.js'); 

(シンボリックリンクながら)だから私のメインアプリで声明を必要とは次のようになります。

関連する問題