私のフロントエンドコードでは、require()
を使用してライブラリを取得します。ライブラリはUnderscore.jsの異なるバージョンに依存しています。その結果、私がbrowserifyを使ってすべてを束ねると、出力にアンダースコアの複数のコピーが含まれます。 require('underscore')
は常に特定のファイルをインポートする必要があることをブラウザに伝える方法はありますか?私はバンドルを作成するとき複数のサブ依存関係をbrowserifyに含めないようにするにはどうすればよいですか?
// main.js
var Backbone = require('backbone');
var Marionette = require('backbone.marionette');
console.log("Hello, world!");
、アンダースコアの複数のバージョンがあります:私は両方のライブラリを使用しmain.js
で
// package.json
"dependencies": {
// Depends on underscore 1.7.0
"backbone": "^1.1.2",
// Depends on underscore 1.6.0
"backbone.marionette": "^2.3.0"
}
:
問題のデモンストレーションとして、私は次の依存関係を持っている想像付属:
PS> browserify main.js -o out.js
PS> findstr _.VERSION out.js
_.VERSION = '1.7.0';
_.VERSION = '1.6.0';
(I created a GitHub repository with a more complete exampleそれを複製します。そして私は、次のように私のpackage.json
にbrowser
セクションを追加しようとしたが、どんな効果を持っていないようでした)アクションでそれを見るために
をnpm install && npm test
を実行します。
// package.json
"browser": {
"underscore": "./node_modules/underscore/underscore.js"
}
npm
が重複をインストールする理由を私は理解して(サーバー側のコードではこのようにするのが理にかなっていますが)browserifyを使用するときにこれを処理する正しい方法は何ですか?