什么是Bower?
Bower是一个客户端技术的软件包管理器,它可用于搜索、安装和卸载如JavaScript、HTML、CSS之类的网络资源。其他一些建立在Bower基础之上的开发工具,如YeoMan和Grunt,这个会在以后的文章中介绍。
为什么我会在意Bower?
-
节省时间。为什么要学习Bower的第一个原因,就是它会为你节省寻找客户端的依赖关系的时间。每次我需要安装jQuery的时候,我都需要去jQuery网站下载包或使用CDN版本。但是有了Bower,你只需要输入一个命令,jquery就会安装在本地计算机上,你不需要去记版本号之类的东西,你也可以通过Bower的info命令去查看任意库的信息。
-
脱机工作。Bower会在用户主目录下创建一个.bower的文件夹,这个文件夹会下载所有的资源、并安装一个软件包使它们可以离线使用。如果你熟悉Java,Bower即是一个类似于现在流行的Maven构建系统的.m2仓库。每次你下载任何资源库都将被安装在两个文件夹中 —— 一个在的应用程序文件夹,另一个在用户主目录下的.bower文件夹。因此,下一次你需要这个仓库时,就会用那个用户主目录下.bower中的版本。
-
可以很容易地展现客户端的依赖关系。你可以创建一个名为bower.json的文件,在这个文件里你可以指定所有客户端的依赖关系,任何时候你需要弄清楚你正在使用哪些库,你可以参考这个文件。
-
让升级变得简单。假设某个库的新版本发布了一个重要的安全修补程序,为了安装新版本,你只需要运行一个命令,bower会自动更新所有有关新版本的依赖关系。
前提准备
为了安装bower,你首先需要安装如下文件:
安装Bower
一旦你已经安装了上面所说的所有必要文件,键入以下命令安装Bower:
$ npm@H_403_52@ install -g bower
这行命令是Bower的全局安装,-g
操作表示全局。
开始使用Bower
安装完bower之后就可以使用所有的bower命令了。可以键入help
命令来查看bower可以完成那些操作,如下:
$ bower help@H_403_52@ Usage@H_403_52@: bower <command> [<args>] [<options>] Commands: cache@H_403_52@ Manage bower cache@H_403_52@ help@H_403_52@ Display help@H_403_52@ information about Bower home Opens a package homepage into@H_403_52@ your favorite browser info Info of@H_403_52@ a particular package init Interactively create@H_403_52@ a bower.json file install@H_403_52@ Install@H_403_52@ a package locally link Symlink a package folder list List local@H_403_52@ packages lookup Look up a package URL by@H_403_52@ name prune Removes local@H_403_52@ extraneous packages register Register a package search Search for@H_403_52@ a package by@H_403_52@ name update@H_403_52@ Update@H_403_52@ a local@H_403_52@ package uninstall@H_403_52@ Remove a local@H_403_52@ package Options: -f,--force Makes varIoUs commands more forceful@H_403_52@ -j,--json Output consumable JSON@H_403_52@ -l,--log-level What level of logs to report@H_403_52@ -o,--offline Do not hit the network@H_403_52@ -q,--quiet Only output important information@H_403_52@ -s,--silent Do not output anything,besides errors@H_403_52@ -V,--verbose Makes output more verbose@H_403_52@ --allow-root Allows running commands as root@H_403_52@ @H_403_52@
包的安装
Bower是一个软件包管理器,所以你可以在应用程序中用它来安装新的软件包。举例来看一下来如何使用Bower安装JQuery,在你想要安装该包的地方创建一个新的文件夹,键入如下命令:
$ bower install@H_403_52@ jquery @H_403_52@
上述命令完成以后,你会在你刚才创建的目录下看到一个bower_components
的文件夹,其中目录如下:
$ tree bower_components/
bower_components/
└── jquery
├── README.md
├── bower.json
├── component.json
├── composer.json
├── jquery-migrate.js
├── jquery-migrate.min.js
├── jquery.js
├── jquery.min.js
├── jquery.min.map@H_403_52@
└── package@H_403_52@.json
1@H_403_52@ directory,10@H_403_52@ files
包的使用
现在就可以在应用程序中使用jQuery包了,在jQuery里创建一个简单的html5文件:
<!doctype html>@H_403_52@
<html@H_403_52@>@H_403_52@
<head@H_403_52@>@H_403_52@
<title@H_403_52@>@H_403_52@Learning Bower</title@H_403_52@>@H_403_52@
</head@H_403_52@>@H_403_52@
<body@H_403_52@>@H_403_52@
<button@H_403_52@>@H_403_52@Animate Me!!</button@H_403_52@>@H_403_52@
<div@H_403_52@ style@H_403_52@="background:red;height:100px;width:100px;position:absolute;"@H_403_52@>@H_403_52@
</div@H_403_52@>@H_403_52@
<script@H_403_52@ type@H_403_52@="text/javascript"@H_403_52@ src@H_403_52@="bower_components/jquery/jquery.min.js"@H_403_52@>@H_403_52@@H_403_52@</script@H_403_52@>@H_403_52@
<script@H_403_52@ type@H_403_52@="text/javascript"@H_403_52@>@H_403_52@ $(document@H_403_52@).ready(function@H_403_52@()@H_403_52@@H_403_52@{ $("button"@H_403_52@).click(function@H_403_52@()@H_403_52@@H_403_52@{ $("div"@H_403_52@).animate({left:'250px'@H_403_52@}); }); }); @H_403_52@</script@H_403_52@>@H_403_52@
</body@H_403_52@>@H_403_52@
</html@H_403_52@>@H_403_52@
正如你所看到的,你刚刚引用jquery.min.js文件,现阶段完成。
所有包的列表
如果你想找出所有安装在应用程序中的包,可以使用list命令:
$ bower list
bower check-new@H_403_52@ Checking for@H_403_52@ new@H_403_52@ versions of@H_403_52@ the project dependencies..
blog /Users/shekhargulati/day1/blog
└── jquery#2.0.3 extraneous@H_403_52@
包的搜索
假如你想在你的应用程序中使用twitter的bootstrap框架,但你不确定包的名字,这时你可以使用search
命令:
$ bower search bootstrap
Search results:
bootstrap git://github.com/twbs/bootstrap.git@H_403_52@
angular-bootstrap git://github.com/angular-ui/bootstrap-bower.git@H_403_52@
sass-bootstrap git://github.com/jlong/sass-twitter-bootstrap.git@H_403_52@
包的信息
如果你想看到关于特定的包的信息,可以使用info
命令来查看该包的所有信息:
如果你想得到单个包的信息,也可以使用info
命令:
包的卸载
卸载包可以使用uninstall
命令:
$ bower uninstall@H_403_52@ jquery @H_403_52@
bower.json文件的使用
bower.json文件的使用可以让包的安装更容易,你可以在应用程序的根目录下创建一个名为“bower.json”的文件,并定义它的依赖关系。使用bower init
命令来创建bower.json文件:
$ bower init
[?] name: blog
[?] version: 0.0@H_403_52@.1@H_403_52@
[?] description:
[?] main file:
[?] keywords:
[?] authors: Shekhar Gulati <shekhargulati84@gmail.com>
[?] license: MIT
[?] homepage:
[?] set@H_403_52@ currently installed components as@H_403_52@ dependencies? Yes
[?] add commonly ignored files to ignore list? Yes
[?] would you like to mark this@H_403_52@ package as@H_403_52@ private@H_403_52@ which prevents it from@H_403_52@ being accidentally published to the registry? No
{
name: 'blog'@H_403_52@,version: '0.0.1'@H_403_52@,authors: [
'Shekhar Gulati <shekhargulati84@gmail.com>'@H_403_52@
],license: 'MIT'@H_403_52@,ignore: [
'**/.*'@H_403_52@,'node_modules'@H_403_52@,'bower_components'@H_403_52@,'test'@H_403_52@,'tests'@H_403_52@
],dependencies: {
jquery: '~2.0.3'@H_403_52@
}
}
[?] Looks good? Yes
可以查看该文件:
{
"name@H_403_52@": "blog"@H_403_52@@H_403_52@,"version@H_403_52@": "0.0.1"@H_403_52@@H_403_52@,"authors@H_403_52@": [ "Shekhar Gulati <shekhargulati84@gmail.com>"@H_403_52@ ]@H_403_52@,"license@H_403_52@": "MIT"@H_403_52@@H_403_52@,"ignore@H_403_52@": [ "**/.*"@H_403_52@,"node_modules"@H_403_52@,"bower_components"@H_403_52@,"test"@H_403_52@,"tests"@H_403_52@ ]@H_403_52@,"dependencies@H_403_52@": { "jquery@H_403_52@": "~2.0.3"@H_403_52@ @H_403_52@} @H_403_52@}
注意看,它已经加入了jQuery依赖关系。
现在假设也想用twitter bootstrap,我们可以用下面的命令安装twitter bootstrap并更新bower.json文件:
$ bower install@H_403_52@ bootstrap --save@H_403_52@ @H_403_52@
它会自动安装最新版本的bootstrap并更新bower.json文件:
{
"name@H_403_52@": "blog"@H_403_52@@H_403_52@,"dependencies@H_403_52@": { "jquery@H_403_52@": "~2.0.3"@H_403_52@@H_403_52@,"bootstrap@H_403_52@": "~3.0.0"@H_403_52@ @H_403_52@} @H_403_52@}
这就是今天的学习,希望能让你对bower有个足够的了解,最好可以自己尝试一下。
原文 Day 1: Bower--Manage Your Client Side Dependencies
翻译 @L_502_4@