如何使用我的项目bower.json限制Bootstrap中的jQuery依赖?

时间:2014-06-04 09:20:19

标签: javascript jquery twitter-bootstrap bower

我需要在网络应用中支持IE8,并且必须确保使用jquery 1.10+而不是2.0 +。

我的项目bower.json文件的依赖关系如下:

"dependencies": {
    "bootstrap" : "~3.1.0",
    "blueimp-gallery": "~2.14.0",
    "datatables": "~1.10.0",
    "eonasdan-bootstrap-datetimepicker": "~2.1.30",
    "holderjs": "~2.3.0",
    "jasmine-fixture": "~1.2.0",
    "jasmine": "~2.0.0",
    "masonry": "~3.1.5",
    "modernizr": "~2.8.1",
    "momentjs": "~2.5.1",
    "parsleyjs": "~2.0.0",
    "respond": "~1.4.2",
    "selectivizr": "~1.0.2",
    "wookmark-jquery": "~1.4.6",
    "yamm3": "1.0.0",
    "requirejs": "~2.1.11"
  },

如何修改我的bower.json依赖关系以限制'它将安装自己的配置文件的Bootstrap jQuery依赖?

3 个答案:

答案 0 :(得分:2)

您无法命名1.x分支jQuery,因此请为其命名,例如:

"dependencies": {
        "jquery-legacy": "jquery#1.10",
        "jquery": "~2.1.1",
}

然后,您可以在HTML中包含您需要的任何一个,我这样做:

<!-- jQuery -->
<!--[if IE 8 ]>
    <script src="assets/bin/lib/js/jquery-legacy/jquery.min.js"></script>   
<!--<![endif]--> 
<!--[if (gt IE 9)|!(IE)]>
    <script src="assets/bin/lib/js/jquery/jquery.min.js"></script>  
<!--<![endif]--> 

答案 1 :(得分:1)

您在bower.json文件中引用了Modernize,因此您可以准备好包含不同版本的jQuery:

Modernize.load({
    test: !document.attachEvent,
    yep: "/path/to/jquery2.js",
    nope: "/path/to/jquery1.js
});

我不能100%肯定的唯一部分就是测试(我现在就在我的Android手机上,所以你必须玩它)。

您还可以使用IE条件注释来加载正确版本的jQuery。

版本之间存在API差异,因此您可以选择使用Zepto for IE9和更新版本以及jQuery for IE8。 Zepto是一个jquery兼容库,它使用本机DOM方法而不是一堆补丁来实现跨浏览器兼容性。无论哪种方式,我都坚持使用jQuery的一个版本。所有经常获胜的最低公分母。

答案 2 :(得分:0)

你总是可以在你的bower.json文件中包含jquery:

"jquery": "1.10",

如果您的其他依赖项需要更高版本的jquery,bower将提示您bower install要解析的jquery版本。

但是,请记住,它可能会使您的项目不稳定,因为许多其他依赖项可能会使用更高版本的jquery