JavaScript依賴管理工具bower
js依賴管理工具bower註:本文摘自作者正在寫的新書《雲時代的程式猿》
2014.9.4
和前面介紹的maven類似,只不過它是專門用來管理js包的,在我們開發應用的時候,大部分情況下一個應用裡會使用很多js的包,比如一個項目裡可能會用到jquery、dwr、d3等多個js包,有的時候可能版本還不一樣,如果每次都是手工下載,然後放到本地項目中,是不是覺得很無趣?
bower就是來幫我們幹這事的。
在安裝bower之類請確保您已經安裝了nodejs、npm管理工具及git。
安裝bower:
npm install -g bower
安裝完畢就可以使用bower了,很簡單,如果需要使用到jquery時,在你的項目目錄下,執行:
bower install jquery
執行完後,您將看到在你的項目目錄下多出一個bower_components目錄,如下所示:
bower_components/├── jquery│ ├── MIT-LICENSE.txt│ ├── bower.json│ ├── dist│ │ ├── jquery.js│ │ ├── jquery.min.js│ │ └── jquery.min.map│ └── src│ ├── ajax│ │ ├── jsonp.js│ │ ├── load.js│ │ ├── parseJSON.js│ │ ├── parseXML.js│ │ ├── script.js│ │ ├── var│ │ │ ├── nonce.js│ │ │ └── rquery.js│ │ └── xhr.js│ ├── ajax.js│ ├── attributes
好了,接下來在你要使用到jquery的地方通過下面的方法引入jquery。
<script src="bower_components/jquery/dist/jquery.js"></script>
當然這種引用方式是很“土”的,後面會給你介紹怎麼樣才不“土”。
我們還可以把js的包依賴定義在一個bower.json的設定檔中。
在項目目錄下執行:
bower init
根據提示嚮導,輸入項目名稱、版本、作者、開源許可等資訊後,你就看到系統會產生一個bower.json的設定檔 ,如下所示:
{ "name": "bowerp", "version": "0.1", "authors": [ "ChangjunZhao " ], "description": "bower test", "main": "lib", "keywords": [ "df" ], "license": "MIT", "private": true, "ignore": [ "**/.*", "node_modules", "bower_components", "test", "tests" ]}
接下來再執行:
bower install jquery --save
再看bower.json:
{ "name": "bowerp", "version": "0.1", "authors": [ "ChangjunZhao " ], "description": "bower test", "main": "lib", "keywords": [ "df" ], "license": "MIT", "private": true, "ignore": [ "**/.*", "node_modules", "bower_components", "test", "tests" ], "dependencies": { "jquery": "~2.1.1" }}
jquery的依賴資訊被寫入到了bower.json檔案。
至此,你的項目再提交到版本管理工具時,bower_components這個目錄裡的東西就不需要再提交了,只需要把bower.json提交。別的開發個員拿到代碼後,只需要在項目目錄執行bower install 命令,這個項目所依賴的所有js就會自動下載。
怎麼樣? 方便吧?
關於bower的其它命令及使用方法,可以使用bower help命令查看。建議大家不管學習什麼東西,都從官方網站開始:http://bower.io/。這裡就不多說了,自己動手吧!
cjzhaomacbook:testProject ChangjunZhao$ bower helpUsage: 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 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 versionOptions: -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