本节书摘来自异步社区《JavaScript开发框架权威指南》一书中的第1章,第1.6节,作者:【美】Tim Ambler , Nicholas Cloud著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.6 维护依赖链
Bower给开发者带来的一个主要好处,就是可以非常方便地对整个项目的依赖链以一种相对受控的方式进行集中升级。为此,我们先来看一下本章示例项目所包含的依赖项列表(见清单)。
清单1-8 安装并列出示例项目所需的Bower包
$ bower install
bower bootstrap#3.2.0 cached git://github.com/twbs/bootstrap.git#3.2.0
bower bootstrap#3.2.0 validate 3.2.0 against git://github.com/twbs/bootstrap.git#3.2.0
bower jquery#>= 1.9.0 cached git://github.com/jquery/jquery.git#2.1.3
bower jquery#>= 1.9.0 validate 2.1.3 against git://github.com/jquery/jquery.git#>= 1.9.0
bower bootstrap#3.2.0 install bootstrap#3.2.0
bower jquery#>= 1.9.0 install jquery#2.1.3
bootstrap#3.2.0 public/bower_components/bootstrap
└── jquery#2.1.3
jquery#2.1.3 public/bower_components/jquery
$ bower list
bower check-new Checking for new versions of the project dependencies..
example-bootstrap#1.0.0 /opt/example-bootstrap
└─┬ bootstrap#3.2.0 (latest is 3.3.2)
└── jquery#2.1.3
多亏Bower为我们提供了这样简单的示意图,来描述项目所需的依赖项以及它们之间的关系。可以看到,我们的项目依赖Bootstrap,而Bootstrap又依赖jQuery。此外,Bower还为我们打印出了每个组件当前安装的版本。
注意:
许多第三方库并不是自包含(self-contained,亦即独立自足的),Bootstrap(它有依赖项jQuery)就是一个例子。当添加这样的包的时候,Bower可以非常智能地识别出额外的依赖项,并在缺失时主动将其添加到项目中。但需要注意的是,与那些复杂的包管理工具(例如npm)不同,Bower使用平坦的文件夹结构(Flat Folder Structure,指文件夹模式没有深层次的嵌套)来存储所有的软件包。这就意味着如果不小心的话,你可能会遇到版本冲突的问题。
在清单中,Bower提示Bootstrap有一个版本号为3.3.2的可用更新(当前项目中的Bootstrap为3.2.0版)。要升级此依赖项,只需要在项目清单文件中引用新版本,然后重新运行install命令即可,如清单所示。
清单1-9 在更新项目所依赖的Bootstrap之后,重新安装Bower包
$ bower install
bower bootstrap#3.3.2 cached git://github.com/twbs/bootstrap.git#3.3.2
bower bootstrap#3.3.2 validate 3.3.2 against git://github.com/twbs/bootstrap.git#3.3.2
bower bootstrap#3.3.2 install bootstrap#3.3.2
bootstrap#3.3.2 public/bower_components/bootstrap
└── jquery#2.1.3