對於JavaScript來說,包管理器並不是一個新概念,npm和bower是JavaScript的兩個最流行的包管理器工具,JavaScript的包管理器還有volo、ringojs、component。這些包管理器相比,npm和bower支持的JavaScript庫和模塊最多。
volo:http://www.volojs.org/ ,一個基於Node.js的工具,可用於快速創建項目、添加依賴庫、自動化常見的任務。
ringojs:http://ringojs.org/ ,
Ringo是基於JVM的JavaScript平台,針對服務器端應用進行了優化,用於開發多線程的JavaScript程序。Ringo峰值了大量內建的模塊,遵循CommonJS標准。Ringo基於Mozilla的Rhino JavaScript引擎,而Rhino JavaScript引擎是JDK 6以上內嵌的腳本引擎,Ringo在Rhino的基礎上進行了增強,主要是多線程編程這部分。
rp是RingoJS的包管理器,其目標是為本地RingoJS安裝提供簡易的包管理,以及在遠程包注冊表中發布包。
Component:https://github.com/componentjs/component ,這個包管理器項目已經停止維護了。
Jam:http://jamjs.org/ ,一個JavaScript的包管理器,可以管理依賴、快速載入和模塊化,與Bower相似,只管理前端的JavaScript模塊。
webpack:http://webpack.github.io/ ,一款開源的模塊加載器兼打包工具,它能把各種資源例如JS(含JSX)、coffee、樣式(含less/sass)、圖片等都作為模塊來使用和處理。
jspm:http://jspm.io/ ,是基於SystemJS的Javascript包管理器,是基於動態的ES6模塊加載器之上構建的工具。
browserify:http://browserify.org/ ,讓開發者使用類似於Node.js的require()方式來組織浏覽器端的JavaScript代碼,通過預編譯讓前端JavaScript可以直接使用Node NPM安裝的一些庫。
npm主要處理兼容Node.js的JavaScript模塊,而Bower聚焦於整個Web平台,可以提供包含模塊、腳本、CSS樣式表、HTML模板、圖片Image、字體的包。故npm主要用於Node.js開發,bower往往工作於客戶端。
npm和bower使用了互不兼容的組織模式,可以在同一個項目中一起使用,它們使用了不同的元數據文件,npm是package.json,bower是bower.json,而且它們把包安裝到不同的目錄下。通常使用npm管理服務器端的包,使用bower管理客戶端的包。
與Java Maven不同,JavaScript的包管理器主要用於查找包、安裝包、管理包的版本。npm除此之外還提供了簡單的build相關和test相關的任務。
1)在安裝bower或npm後,在項目根目錄首先應執行
bower init
npm init
包管理器會詢問一些項目設置相關的問題。一一回答後包管理器就會為項目創建bower.json或package.json配置文檔。
2)要搜索可用的包,執行
bower search <關鍵詞>
npm search <關鍵詞>
包管理器會從網絡倉庫中搜出一堆包列表顯示。
3)要安裝包,執行
bower install <包名>
npm install <包名>
要安裝包的指定版本,命令語法如下:
bower install <包名>#<包版本>
npm install <包名>@<包版本>
還可以把項目使用的每一個包的版本信息都保存到項目的元數據文件中,包管理器(包括第三方的包管理器)都可以使用元數據文件來監護客戶端的維護、構建、測試和啟動任務。
當然,最佳的方法還是把包的版本信息保存到項目的元數據配置文件中,使用–save選項,命令語法如下:
bower install --save <包名>#<包版本>
npm install --save <包名>@<包版本>