Bower:安装两个版本的jQuery

76

我该如何使用 bower 安装两个版本的 jQuery?我想要同时安装 v2.0 和 1.9.1 版本以实现浏览器支持降级。

问题在于,如果运行 bower install jquery#1.9.1 jquery#2.0.0,第一个版本会被第二个版本覆盖,因为它们是同一个组件。


希望这可以帮到你,http://forum.jquery.com/topic/multiple-versions-of-jquery-on-the-same-page - dreamweiver
@dreamweiver 我不需要同时运行两个版本,我想要使用Bower安装两个独立的版本。 - Adam Coulombe
编辑标签,因为这不是一个jQuery问题。 - Blazemonger
4个回答

158
根据 bower 文档 所述:

Bower 提供几种安装包的方式:

# Using the dependencies listed in the current directory's bower.json
bower install
# Using a local or remote package
bower install <package>
# Using a specific version of a package
bower install <package>#<version>
# Using a different name and a specific version of a package
bower install <name>=<package>#<version>
你可以这样安装两个不同版本的jQuery:
bower install jquery-legacy=jquery#1.10 jquery-modern=jquery#2

或者,如果您更喜欢在 bower.json 中进行设置

"dependencies": {
    "jquery-legacy": "jquery#1.10",
    "jquery-modern": "jquery#2"
}

谢谢!好知道,这是新添加的功能吗?我认为当我最初寻求答案时这不可能。 - Adam Coulombe
@AdamCoulombe 看起来这是在 v1.0.0 版本中添加的。它已经相对稳定了一段时间(从软件方面来说),但并没有出现在 bower 的任何预发布版本中。 - buzzedword
这应该是被选中的答案。 - gotofritz
肯定这应该是答案。 - kaosmos
这真的很有帮助。跟进问题:如何指定另一个库需要使用哪个jQuery版本?我在这里有一个未解决的问题(http://stackoverflow.com/questions/38006850/how-to-customize-javascript-libraries-and-still-use-bower)。 - JohnnyQ

67
在你的 bower.json 的依赖项部分,可以有类似以下的内容:
"dependencies": {
    "jquery": "2.0.0",
    "jquery-1.9.1": "http://code.jquery.com/jquery-1.9.1.js"
}

通常情况下不需要这样做,但有时你需要维护/迁移一个现有的网站,该网站在不同的页面中使用了不同版本的jQuery(由于某种原因)!


8
“jquery-1.9.1”: “jquery#1.9.1” 的意思是将 jQuery 版本号为 1.9.1 的文件命名为 jquery-1.9.1。 - Mike Causer
1
"dependencies": { "jquery": "2.0.0", "jquery-1.9.1": "http://code.jquery.com/jquery-1.9.1.js" }
这个答案很好用。但是当我压缩和混淆代码时,只有一个版本是可用的,因此使用其他版本的代码会中断。有没有解决办法?
- Akhil Xavier

12

如果你只想要最新的1.x和2.x版本,可以在命令行中放宽上面的答案中的限制。

所以:

bower install jquery-legacy=jquery#1.10 jquery-modern=jquery#2

将变成:

bower install jquery-legacy=jquery#^1 jquery-modern=jquery


4
PHP/Packagist社区正在学习的是,使用bower install jquery-legacy=jquery#^1 jquery-modern=jquery这个命令虽然宽松,但仍未对“现代”版本设置上限。更好的宽松约束应该是:bower install jquery-legacy=jquery#^1 jquery-modern=jquery#^2,因为它将“现代”版本与一个上限绑定以防止重大破坏性更改。等到2.x版本不再属于“现代”时,我会认为您会更改软件包名称。 - buzzedword

0

bower.json:

这是我做的方法...

"dependencies": {
    ...
    "jquery": "2.0.0",
    "jquery-old": "1.9.1"
    ...
}

第二个版本可以是任何版本,旧的或新的。您只需要添加一个不同的键,如jquery-old

安装

bower install --save jquery-old

使用

现在您可以使用其中一个jquery版本:

<script type="text/javascript" src="path/to/bower/directory/jquery/dist/jquery.min.js"></script>

<script type="text/javascript" src="path/to/bower/directory/jquery-old/dist/jquery.min.js"></script>

奖励

"dependencies": {
    ...
    "jquery": "2.0.0",
    "jquery-old": "1.9.1"
    "jquery-latest": "^3.3.1"
    ...
}


依赖项: { ... "jquery": "2.0.0", "jquery-old": "1.9.1", "jquery-latest": "^3.3.1", ... }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接