前言
我們在開發(fā)時犬性,會用到很多別人寫的JavaScript代碼瞻离。如果我們要使用別人寫的某個包,每次都根據(jù)名稱搜索一下官方網(wǎng)站乒裆,下載代碼套利,解壓,再使用鹤耍,非常繁瑣肉迫。
于是一個集中管理的工具應(yīng)運而生:大家都把自己開發(fā)的模塊打包后放到一個包管理器上,如果要使用稿黄,直接通過包管理器安裝就可以直接用喊衫,不用管代碼存在哪,應(yīng)該從哪下載杆怕。
因此使用包管理器主要基于以下幾個原因:
- 方便的尋找和下載你需要的依賴庫格侯,并將它們整合到項目中,例如jQuery, Angular等财著。
- 方便的下載指定版本的依賴庫(免除去網(wǎng)絡(luò)上搜索和下載)
- 便于你使用簡單的方法獲取你想要的依賴庫
NPM
概念
npm有兩層含義联四。一層含義是Node的開放式模塊登記和管理系統(tǒng),網(wǎng)址為npmjs.org撑教。另一層含義是Node默認(rèn)的模塊管理器朝墩,是一個命令行下的軟件,用來安裝和管理Node模塊。
npm不需要單獨安裝收苏。在安裝Node的時候亿卤,會連帶一起安裝npm。但是鹿霸,Node附帶的npm可能不是最新版本排吴,最好用下面的命令,更新到最新版本懦鼠。
npm install npm@latest -g
運行下面的命令钻哩,查看各種信息。
# 查看 npm 命令列表
$ npm help
# 查看各個命令的簡單用法
$ npm -l
# 查看 npm 的版本
$ npm -v
# 查看 npm 的配置
$ npm config list -l
npm是一個讓JavaScript程序員分享和復(fù)用代碼的工具肛冶。有了它街氢,JS程序員能高效地管理和發(fā)布自己要分享的代碼。
package.json
npm init;
通過上面這條命令初始化睦袖,目錄中會多了一個名為package.json的文件珊肃。
package.json用于說明NPM的配置信息。
package.json里面有兩個對象是用來指定依賴的:
- “dependencies”:這個對象下面列出生產(chǎn)環(huán)境下的依賴
- “devDependencies”:這個對象下面列出開發(fā)環(huán)境的依賴
npm install
Node模塊采用npm install命令安裝馅笙。
每個模塊可以全局安裝伦乔,也可以 本地安裝。
- 全局安裝:指的是將一個模塊安裝到系統(tǒng)目錄中董习,各個項目都可以調(diào)用评矩。一般來說,全局安裝只適用于工具模塊阱飘,比如eslint和gulp。
- 本地安裝:指的是將一個模塊下載到當(dāng)前項目的node_modules子目錄虱颗,然后只有在項目目錄之中沥匈,才能調(diào)用這個模塊。
# 本地安裝
$ npm install <package name>
# 全局安裝
$ sudo npm install -global <package name>
$ sudo npm install -g <package name>
npm install也支持直接輸入Github代碼庫地址忘渔。
在安裝之前高帖,npm install會先檢查,node_modules目錄中是否已經(jīng)存在指定模塊畦粮,如果存在就不再重新安裝了散址,即使遠(yuǎn)成倉庫已經(jīng)有了一個新版本也是如此。
如果希望一個模塊不管是否安裝過宣赔,npm都要強(qiáng)制安裝预麸,可以使用-f或–force參數(shù):
npm install <packageName> --force
install命令可以使用不同參數(shù),指定所安裝的模塊屬于哪一種性質(zhì)的依賴關(guān)系儒将,即出現(xiàn)在packages.json文件的哪一項中吏祸。
- 往package.json里面添加生產(chǎn)環(huán)境的依賴,被添加到dependencies:
npm install <package_name> --save
- 添加開發(fā)環(huán)境的依賴钩蚊,被添加到devDependencies:
npm install <package_name> --save-dev
如果當(dāng)前環(huán)境下有package.json贡翘,直接運行下面的命令:
npm install默認(rèn)會安裝dependencies字段和devDependencies字段中的所有模塊蹈矮。
npm update
如果想更新已安裝模塊,就要用到npm undate命令鸣驱。
它會先到遠(yuǎn)程倉庫查詢最新版本泛鸟,然后查詢本地版本。如果本地版本不存在踊东,或者遠(yuǎn)程版本較新北滥,就會安裝。
使用-S或–save參數(shù)递胧,可以在安裝的時候更新package.json里面模塊的版本號碑韵。
npm info
npm info命令可以查看每個模塊的具體信息。比如缎脾,查看underscore模塊的信息祝闻。
npm search
npm search命令用于搜索npm倉庫,它后面可以跟字符串遗菠,也可以跟正則表達(dá)式联喘。
加上global參數(shù),會列出全局安裝的模塊辙纬。
npm list命令也可以列出單個模塊豁遭。
npm倉庫
npm update命令怎么知道每個模塊的最新版本呢?
npm 模塊倉庫提供了一個查詢服務(wù)贺拣,叫做 registry 蓖谢。
以 npmjs.org 為例,它的查詢服務(wù)網(wǎng)址是 https://registry.npmjs.org/ 譬涡。
這個網(wǎng)址后面跟上模塊名闪幽,就會得到一個 JSON 對象,里面是該模塊所有版本的信息涡匀。
比如盯腌,訪問 https://registry.npmjs.org/react,就會看到 react 模塊所有版本的信息陨瘩。
它跟下面命令的效果是一樣的腕够。
registry 網(wǎng)址的模塊名后面,還可以跟上版本號或者標(biāo)簽舌劳,用來查詢某個具體版本的信息帚湘。比如, 訪問 https://registry.npmjs.org/react/v0.14.6 甚淡,就可以看到 React 的 0.14.6 版客们。
返回的 JSON 對象里面,有一個dist.tarball屬性,是該版本壓縮包的網(wǎng)址底挫。
要卸載安裝過的包恒傻,用以下指令即可:
到這個網(wǎng)址下載壓縮包,在本地解壓建邓,就得到了模塊的源碼盈厘。npm install和npm update命令,都是通過這種方式安裝模塊的官边。
Bower
概念
Bower是一個客戶端技術(shù)的軟件包管理器沸手,它可用于搜索、安裝和卸載如JavaScript注簿、HTML契吉、CSS之類的網(wǎng)絡(luò)資源。
其他還有一些建立在Bower基礎(chǔ)之上的開發(fā)工具诡渴,如YeoMan和Grunt捐晶。
前提準(zhǔn)備
為了安裝bower,你首先需要安裝如下文件:
- Node:下載最新版本的node.js
- NPM:NPM是node程序包管理器妄辩。它是捆綁在nodejs的安裝程序上的惑灵,所以一旦你已經(jīng)安裝了node,NPM也就安裝好了眼耀。
- Git:你需要從git倉庫獲取一些代碼包英支。
安裝Bower
一旦你已經(jīng)安裝了上面所說的所有必要文件,鍵入以下命令安裝Bower:
這行命令是Bower的全局安裝哮伟,-g 操作表示全局干花。
包的安裝
Bower是一個軟件包管理器,所以你可以在應(yīng)用程序中用它來安裝新的軟件包楞黄。
舉例來看一下來如何使用Bower安裝JQuery池凄,在你想要安裝該包的地方創(chuàng)建一個新的文件夾,鍵入如下命令:
上述命令完成以后谅辣,你會在你剛才創(chuàng)建的目錄下看到一個bower_components的文件夾,其中有一個jquery目錄婶恼。
這樣就可以在工程中使用jQuery了:
包的列表
如果你想找出所有安裝在應(yīng)用程序中的包桑阶,可以使用list命令:
包的搜索
假如你想在你的應(yīng)用程序中使用twitter的bootstrap框架,但你不確定包的名字勾邦,這時你可以使用search 命令:
包的信息
如果你想看到關(guān)于特定的包的信息蚣录,可以使用info 命令來查看該包的所有信息:
包的卸載
卸載包可以使用uninstall 命令:
bower.json文件的使用
bower.json文件的使用可以讓包的安裝更容易,你可以在應(yīng)用程序的根目錄下創(chuàng)建一個名為“bower.json”的文件眷篇,并定義它的依賴關(guān)系萎河。
使用bower init 命令來創(chuàng)建bower.json文件:
dependencies中說明了安裝的模塊及其版本。
總結(jié)
npm和bower太像了,就像一對孿生兄弟……
npm的文件是package.json虐杯,包安裝的目錄是node_modules玛歌。
bower的文件是bower.json,包安裝的目錄是bower_components擎椰。
使用命令也基本一致……