Bower覆盖依赖

时间:2014-06-15 15:30:19

标签: underscore.js bower lodash jointjs

我有一个用Backbone编写的应用程序,使用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"
  }
}

我想添加 Joint.js http://www.jointjs.com/),这取决于 lodash (替换下划线),但我无法弄清楚如何在我的配置中替换它,因为Marionette,Backbone和其他一些库直接依赖于下划线。所以在加载下划线覆盖lodash,应用程序无法正常启动。

1 个答案:

答案 0 :(得分:4)

我已经改变了顺序,并将lodash作为最新的依赖项,并且它有效。

同样作为解决方案,有一个选项可以有一个凉亭钩子,就像它在下面的答案中所述 https://stackoverflow.com/a/23289270/575338

  

我们遇到类似的情况,我们让Backbone依赖于Underscore   在bower.json,但我们正在使用Lo-Dash,所以Bower   每次安装都不必要地拉下Underscore。我们有   自动检查第三方许可证合规性,因此我们不想要   我们实际上没有使用的任何东西。

     

我意识到这不是他们的意思,而是Bower的   install-hooks   可以用来在安装后清理不需要的deps(至少直到Bower   得到你所暗示的那种“不,谢谢”的决议。在你的   .bowerrc

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

这有点像黑客,但有效。