Bower是一個包管理工具。包的內容沒有限制,比如:js庫,框架,圖片/字體資源等等或者它們的組合都可以,只要是你需要的就行,你也可以打包一些內容通過在bower上登記註冊公開對外發布(當然Bower也支持提建私有包庫)。
常用命令
安裝
npm install -g bower
初始化
bower init通過問答嚮導的方式在當前目錄生成一個bower.json文件。
查詢包信息和版本
bower info 包名這個命令可以查看一個包的所有版本(所以也能知道最新版本號),並顯示最新版本的包信息(bower.json),並下載最新版本的包到本地緩存(如果之前沒下載)。
bower info 包名#版本號查看包的某個版本的詳細信息。
安裝包
bower install安裝當前目錄下
bower.json中的指定所有包。生產環境部署時建議使用-p或--production參數,這種情況不會安裝devDependencies。
bower install 包名 --save安裝指定的包。
如果使用參數
-S或--save則安裝完後,會把包名及版本號添加到bower.json的dependecies配置項數組中(方便以後重新安裝)。如果使用參數
-D或--save-dev則安裝完後,會把包名及版本號添加到bower.json的devDependecies配置項數組中。如果不使用參數,則只安裝包到
bower_components目錄,不修改bower.json文件。
更新
bower update 包名
搜索
bower search 包名
卸載
bower uninstall 包名不支持一次卸載所有的包,只能手動全部刪除。
卸載包並不從緩存中刪除,只是安裝目錄移除,下次安裝會優先從本地緩存中複製安裝。
緩存
Bower在安裝包的時候,會先下載包到本地緩存,然後再複製到安裝位置。
緩存位置默認:
Win:C:Users用户名AppDataLocalbowercachepackages
Linux:~/.bower/packages
瀏覽列表
bower cace list [package...]
刪除緩存
bower cache clean
刪除除所有本地緩存
bower cache clean <package>#<version>
刪除除指定包的緩存,還可以指定版本。
.bowerrc 文件
這個文件主要用來配置安裝路徑,如果不指定則默認安裝到當前目錄下的bower_components目錄中。
{
"directory": "bower_components", //包安裝位置
"storage": {
"packages" : "~/.bower/packages" //包本地緩存位置
}
}
其他配置項參見:bowerrc/spec
bower.json 文件
無論你是使用bower來為項目管理外部依賴,還是準備製作一個包,都是通過bower.json文件來進行的,這個文件可以説是bower運行的核心。bower.json的配置項和其他包管理工具,比如npm,composer的都差不多,你也可以通過分析這個文件來思考包管理器是如何運行的。
{
"name":"", //必須,如果需要註冊包,則該包名唯一。
"description":"", //可選,包描述
"main":[], //可選,入口文件,bower本身不使用,供第三方構建工具會使用
//每種文件類型只能有一個。
"ignore":[], //可選,文件或目錄列表。bower安裝的時候將忽略該列表中的文件。
//bower是從git倉庫或壓縮包下載一個包,裏面的文件並不一定全部需要。
"dependencies":[], //依賴包,name:value,value可以是包的semver
//range(版本號範圍),也可以直接是一個包的git地址或壓縮包地址。
"devDependencies":[], //開發依賴包,僅僅在開發過程中測試或者編譯文檔用,部署生產環境是不需要。
//格式和dependencies 相同
"resolutions":[], //包引用衝突自動使用該模塊指定的包版本
//格式和dependencies 相同
"overrides" :[ //這個也很關鍵,可以覆蓋一個包中的默認設置,比如main裏面設定的入口文件
"package-name":{ //這樣可以根據需要,讓第三方工具只打包需要的文件。
"main":[]
}
],
"moduleType":"", //可選,指定包採用那種模塊化方式(globals,amd,node,es6,yui)
"private":Boolean, //是否公開發布當前包,如果只是使用bower來管理項目的包,設置為true.
"license":"", //授權方式(GPL-3.0,CC-BY-4.0.....)
"keywords":[], //可選,方便註冊後容易被其他人搜索到。
"authors":[], //作者列表
"homepage":[], //主頁,包介紹頁
"repository":{ //包所在倉庫。
"type": "git",
"url": "git://github.com/foo/bar.git"
},
}
bower用這套格式管理所有的包,所以下載的每個包中都會包含一個
bower.json文件。
如果只是使用bower作為項目的包管理工具,上述配置項只需關注:dependencies,devDependencies,resolutions,overrides即可
如果你把自己開發的內容打包發佈出去,這個時候才需要配置其他項。
配置項的更多解釋可以參考:https://github.com/bower/spec...
semver range
Bower使用semver range來匹配版本。
常用的版本區域表達式:
-
比較符: < > <= >= =
-
範圍:1.2.3 - 2.3.5
-
通配符:1.2.* 匹配:大於1.2.0小於1.3.0
-
波浪範圍:~1.2.3 匹配:大於當前版本,小於次末位+1,本例中是 大於1.2.3小於1.3.0
-
插入符範圍:^1.2 匹配:大於當前版本,小於從左側開始第一個非零值+1,本例大於1.2小於2.0
-
還支持一些函數判斷,就不舉例了。。。。