如何使用Bower安装诸如OpenLayers之类的库?

4
我正在尝试使用 Twitter 团队提供的 Bower 来管理客户端依赖项。
但是我面临一个麻烦的问题:除了一些大公司(jQuery,当然还有 Twitter 的 Bootstrap),许多库(实际上大部分)都没有 component.json 文件,因此似乎不支持 Bower。
这就是 OpenLayers 的情况,这是一个大公司,所以我很惊讶地发现他们不支持 Bower。
我错过了什么吗?或者这些大型库目前支持更常见的依赖项管理器吗?
5个回答

8
你只需要将以下内容作为依赖项添加即可:
"dependencies": {
    "OpenLayers" : "http://openlayers.org/download/OpenLayers-2.12.zip"
}

然后再次运行bower install

更新 在Sindre指出这个配置会破坏bower upgrade之后,你应该依赖于像这样的东西:bower install openlayers --save

但是请注意,如果您依赖的工件没有在存储库中进行版本控制,则必须在开发工作流程中构建它们。 这意味着需要安装更多的工具并了解它们等。


1
使用硬编码路径会使 bower upgrade 命令无法正常工作。如有可能,请尽量使用 Git 存储库。 - Sindre Sorhus
3
使用Git仓库是正确的方式,你说得没错。但如果构件没有在仓库中进行版本控制怎么办?我们绝不能将依赖项的构建过程包含在自己的构建流程中。这就是为什么我们会看到只包含构件的裸仓库(参见“bowerized”Angular模块的仓库)。 - xavier.seignard
这确实是一个明显的缺点,但这取决于维护者而不是软件包管理器来解决。你有多种选择可用,要明智选择。 - Sindre Sorhus

5

只有库依赖时才需要组件文件,否则使用 git 标签。

如果 openlayers 在注册表中,可以执行 bower install openlayers,否则可以使用 git 存储库或 zip/tar 文件的 URL:bower install git://github.com/openlayers/openlayers.git


4

通过Bower可以安装openlayers#2.13.1


1
可能已经被重命名为openlayers#release-2.13。 - Tarnschaf

2

在处理这个问题时,我遇到了一些“有趣”的事情。我在我的index.html文件中包含了对openLayers.js的引用,但是当我运行grunt serve时,对Openlayers.js的引用被删除了,并且wiredep报告了一个注入问题。

问题是由于提供的OpenLays版本没有定义“main”标记所导致的。

以下是解决方法:

在您的html文件中添加

<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
<script src="bower_components/openlayers/lib/OpenLayers.js"></script>
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/jquery-ui/jquery-ui.js"></script>
<!-- endbower -->
<!-- endbuild -->

在位于项目根目录下的bower.json文件中,说:
{
 "name": "foobar",
  "private": true,
  "dependencies": {
  "bootstrap": "~3.2.0",
  "jquery-ui": "~1.11.2",
  "jquery": "~2.1.1",
  "openlayers": "1.0.0"
},
 "overrides": {
 "openlayers": {
       "main": "lib/OpenLayers.js"
  }
 } 
}

这定义了缺失的主令牌。


-2

如果最初的问题要求使用Bower解决方案,为什么会有人使用npm呢? - Nico Haase

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