1. 什么是 bower,有什么作用
富客户端要求的前端开发,少不了大量的前端库文件引用,于是就可能遇到如下问题:
- 逐个下载、复制到期望位置嫌麻烦
- 库之间的依赖/版本依赖不清楚,总是出问题
- 版本升级时重复性的操作,还易搞错
- …
使用 bower 这样的包管理工具,可以很好的处理类似如上描述的问题。其实各种包管理工具的主要职责均类似如此。
2. bower 安装
需要系统已安装 nodejs。命令提示符下,执行如下命令安装 bower:
npm install bower -g
3. bower 命令
执行 bower help 命令,可以查看其所有命令及参数介绍:
Usage: bower
[ ] [ ] Commands: cache Manage bower cache help Display help information about Bower home Opens a package homepage into your favorite browser info Info of a particular package init Interactively create a bower.json file install Install a package locally link Symlink a package folder list List local packages – and possible updates lookup Look up a package URL by name prune Removes local extraneous packages register Register a package search Search for a package by name update Update a local package uninstall Remove a local package version Bump a package version Options: -f, –force Makes various commands more forceful -j, –json Output consumable JSON -l, –log-level What level of logs to report -o, –offline Do not hit the network -q, –quiet Only output important information -s, –silent Do not output anything, besides errors -V, –verbose Makes output more verbose –allow-root Allows running commands as root –version Output Bower version See ‘bower help ’ for more information on a specific command.
命令简介:
cache: bower 缓存管理 help: 显示 Bower 命令的帮助信息 home: 通过浏览器打开一个包的 github 发布页 info: 查看包的信息 init: 创建 bower.json 文件 install: 安装包到项目 link: 在本地 bower 库建立一个项目链接 list: 列出项目已安装的包 lookup: 根据包名查询包的 URL prune: 删除项目无关的包 register: 注册一个包 search: 搜索包 update: 更新项目的包 uninstall: 删除项目的包
4. 使用 bower 下载库
作为各种库的管理工具,bower 主要就是对它们下载和管理。
举例,我们新建了一个项目,目录为 lzwme,我们的项目需要如下前端库:jquery 1.11.1、bootstrap、jquery UI、d3、datatables 1.10.2、echarts 、moment、backbone、seajs 。
针对项目 lzwme,我们可依次执行如下命令:
bower install jquery#1.11.1 –save bower install bootstrap –save bower install d3 –save bower install jqueryui –save bower install datatables#1.10.2 –save bower install echarts –save bower install moment –save bower install backbone –save bower install seajs –save
执行完每一条命令后,bower 都会自动下载对应库文件到 bower_components/ 目录,同时还会下载其依赖库,如下载 backbone 的同时还会下载 underscore。
bower 可使用如下几种方式下载文件
已注册的包,使用简写即可
$ bower install jquery
GitHub 上的项目,使用名称即可
$ bower install desandro/masonry
GitHub上的项目
$ bower install git://github.com/user/package.git
直接通过 URL 下载
$ bower install http://example.com/script.js
安装命令有如下参数可选:
-F, –force-latest: 不管冲突问题强制使用最新版本 -p, –production: 安装生产环境的库,不安装开发环境所需的文件 -S, –save: 将安装的包信息保存到项目的 bower.json 依赖配置中 -D, –save-dev: 将已安装的包信息保存到项目开发环境的 bower.json 依赖中
5. bower 功能使用举例
5.1. 查看已安装的库列表
bower list lzwme D:_development\lzwme ├─┬ backbone#1.1.2 extraneous │ └── underscore#1.7.0 ├─┬ bootstrap#3.2.0 extraneous │ └── jquery#1.11.1 (2.1.1 available) ├── d3#3.4.13 extraneous ├─┬ datatables#1.10.2 extraneous (latest is 1.10.3) │ └── jquery#1.11.1 (2.1.1 available) ├── echarts#2.0.4 extraneous ├── impress.js#0.5.3 extraneous ├── jquery#1.11.1 extraneous (latest is 2.1.1) ├─┬ jqueryui#1.11.2 extraneous │ └── jquery#1.11.1 (2.1.1 available) ├── moment#2.8.3 extraneous └── seajs#2.3.0 extraneous
5.2. 更新某个库
bower update
5.3. 卸载某个库
$ bower uninstall
5.4 查看本地缓存的库
bower cache list backbone=git://github.com/jashkenas/backbone.git#1.1.2 bootstrap=git://github.com/twbs/bootstrap.git#3.2.0 d3=git://github.com/mbostock/d3.git#3.4.13 datatables=git://github.com/DataTables/DataTables.git#1.10.2 echarts=git://github.com/ecomfe/echarts.git#2.0.4 impress.js=git://github.com/bartaz/impress.js.git#0.5.3 jquery=git://github.com/jquery/jquery.git#1.11.1 jquery=git://github.com/jquery/jquery.git#2.1.1 jquery-ui=git://github.com/components/jqueryui.git#1.11.2 moment=git://github.com/moment/moment.git#2.8.3 seajs=git://github.com/seajs/seajs.git#2.3.0 underscore=git://github.com/jashkenas/underscore.git#1.7.0
5.5 查看某个库的主页
bower lookup jquery D:_development\lzwme>bower lookup jquery jquery git://github.com/jquery/jquery.git
4.6 提交自己的类库到官方
请参考这里:http://bower.io/docs/creating-packages/
6. 使用下载的库
通过 bower 可以方便的对库文件进行下载、更新,但是我们不提倡在项目中直接使用 bower_components 目录,一方面这里的的文件可能并不是都是项目需要的,另一方面,如果项目中存在安全问题的文件,那么就会产生隐患了。
那么该如何使用这些文件呢,你可以自己选择复制到项目配置的目录中。当然,志文工作室还是推荐你使用自动化构建工具来快捷管理。
bower 推荐使用前端自动化构建工具 grunt (http://lzw.me/a/grunt-getting-started.html),并推荐了几个对应插件:
grunt-bower-concat
grunt-wiredep
grunt-bower-requirejs
grunt-bower-task
grunt-preen
http://bower.io/docs/tools/
7. 更多参考
http://bower.io/
https://github.com/bower/bower
https://github.com/yatskevich/grunt-bower-task