mav*_*azy 6 underscore.js jointjs bower lodash
我有一个用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"
}
}
Run Code Online (Sandbox Code Playgroud)
我想添加Joint.js(http://www.jointjs.com/),这取决于lodash(下划线的替代品),但我无法弄清楚如何在我的配置中替换它,因为Marionette,Backbone ,以及其他一些库直接依赖于下划线.所以在加载下划线覆盖lodash,应用程序无法正常启动.
我改变了顺序,并将 lodash 作为最新的依赖项,它起作用了。
另外,作为一种解决方案,可以选择使用凉亭挂钩,就像下面的答案中所述 /sf/answers/1630248931/
我们遇到过类似的情况,我们的 Backbone 依赖于 Underscore
bower.json,但我们使用 Lo-Dash 代替,因此 Bower 不必要为每次安装拉下 Underscore。我们对第三方许可证合规性进行了自动检查,因此我们不想要任何我们实际上不使用的东西。我意识到这并不完全是它们的用途,但是 Bower 的 安装挂钩 可以用于在安装后清理不需要的 deps(至少直到 Bower 得到您暗示的那种“不,谢谢”解决方案)。在你的
.bowerrc:Run Code Online (Sandbox Code Playgroud){ "directory": "app/bower_components", "scripts": { "postinstall": "rm -rf app/bower_components/underscore" } }这有点像黑客,但有效。