6

私は Backbone with Marionette とその他の依存関係で書かれたアプリケーションを持っており、bowerを通して管理されています:

{
  "name": "admin",
  "version": "0.1.1",
  "main": "public/javascripts/app.js",
  "dependencies": {
    "lodash": "~2.4.1",
    "console-polyfill": "~0.1.0",
    "jquery": "~2.1.1",
    "normalize-css": "~2.1.2",
    "marionette": "~1.7.4",
    "bootstrap": "~3.1.1",
    "font-awesome": "~4.1.0",
    "backbone-pageable": "~1.4.5",
    "moment": "~2.5.1",
    "swag": "~0.6.1",
    "jquery-form": "~3.46.0",
    "jquery-file-upload": "~9.5.7",
    "underscore.string": "~2.3.3",
    "bootstrap-switch": "~3.0.1",
    "joint": "~0.9.0"
  },
  "overrides": {
    "backbone": {
      "dependencies": {
        "lodash": "*",
        "jquery": "*"
      },
      "main": "backbone.js"
    },
    "backbone.wreqr": {
      "dependencies": {
        "backbone": "*"
      },
      "main": "lib/amd/backbone.wreqr.js"
    },
    "backbone-pageable": {
      "dependencies": {
        "backbone": "*"
      },
      "main": "lib/backbone-pageable.js"
    },
    "jquery-file-upload": {
      "dependencies": {
        "jquery": "*"
      },
      "main": [
        "js/vendor/jquery.ui.widget.js",
        "js/jquery.iframe-transport.js",
        "js/jquery.fileupload.js"
      ]
    },
    "underscore.string": {
      "dependencies": {
        "lodash": "*"
      },
      "main": "lib/underscore.string.js"
    },
    "joint": {
      "dependencies": {
        "lodash": "*"
      },
      "main": "dist/joint.clean.js"
    }
  },
  "resolutions": {
    "jquery": "~2.1.1"
  }
}

Lodash (アンダースコアの置き換え) に依存するJoint.js ( http://www.jointjs.com/ )を追加したいのですが、私の構成でこれを置き換える方法がわかりません。 、および他のいくつかのライブラリはアンダースコアに直接依存しています。そのため、ロード時にアンダースコアが lodash をオーバーライドし、アプリケーションを正しく起動できません。

4

1 に答える 1

4

順序を変更し、lodash を最新の依存関係にすると、うまくいきました。

また、解決策として、次の回答に記載されているように、バウアーフックを使用するオプションがあります https://stackoverflow.com/a/23289270/575338

Backbone が の Underscore に依存する同様の状況がありましたbower.jsonが、代わりに Lo-Dash を使用しているため、Bower はインストールごとに Underscore を不必要に引き下げていました。サード パーティのライセンス コンプライアンスのチェックを自動化したので、実際に使用しないものは必要ありませんでした。

これはまさに彼らが意図したものではないことはわかっていますが、Bowerの インストールフック を使用して、インストール後に不要なdepをクリーンアップできます(少なくとも、Bowerがあなたが示唆したような「ノーサンキュー」の解決策を得るまで)。あなたの .bowerrc

{
    "directory": "app/bower_components",
    "scripts": {
        "postinstall": "rm -rf app/bower_components/underscore"
    }
}

ちょっとしたハックですが、機能します。

于 2014-07-02T07:18:37.673 に答える