什么是npm鸳碧?Bower又是啥?

前言

我們在開發(fā)時犬性,會用到很多別人寫的JavaScript代碼瞻离。如果我們要使用別人寫的某個包,每次都根據(jù)名稱搜索一下官方網(wǎng)站乒裆,下載代碼套利,解壓,再使用鹤耍,非常繁瑣肉迫。
于是一個集中管理的工具應(yīng)運而生:大家都把自己開發(fā)的模塊打包后放到一個包管理器上,如果要使用稿黄,直接通過包管理器安裝就可以直接用喊衫,不用管代碼存在哪,應(yīng)該從哪下載杆怕。

因此使用包管理器主要基于以下幾個原因:

  1. 方便的尋找和下載你需要的依賴庫格侯,并將它們整合到項目中,例如jQuery, Angular等财著。
  2. 方便的下載指定版本的依賴庫(免除去網(wǎng)絡(luò)上搜索和下載)
  3. 便于你使用簡單的方法獲取你想要的依賴庫

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里面有兩個對象是用來指定依賴的:

  1. “dependencies”:這個對象下面列出生產(chǎn)環(huán)境下的依賴
  2. “devDependencies”:這個對象下面列出開發(fā)環(huán)境的依賴

npm install

Node模塊采用npm install命令安裝馅笙。

每個模塊可以全局安裝伦乔,也可以 本地安裝

  1. 全局安裝:指的是將一個模塊安裝到系統(tǒng)目錄中董习,各個項目都可以調(diào)用评矩。一般來說,全局安裝只適用于工具模塊阱飘,比如eslint和gulp。
  2. 本地安裝:指的是將一個模塊下載到當(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擎椰。

使用命令也基本一致……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末支子,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子达舒,更是在濱河造成了極大的恐慌值朋,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巩搏,死亡現(xiàn)場離奇詭異昨登,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贯底,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門丰辣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人丈甸,你說我怎么就攤上這事糯俗。” “怎么了睦擂?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵得湘,是天一觀的道長。 經(jīng)常有香客問我顿仇,道長淘正,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任臼闻,我火速辦了婚禮鸿吆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘述呐。我一直安慰自己惩淳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布乓搬。 她就那樣靜靜地躺著思犁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪进肯。 梳的紋絲不亂的頭發(fā)上激蹲,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音江掩,去河邊找鬼学辱。 笑死乘瓤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的策泣。 我是一名探鬼主播衙傀,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼着降!你這毒婦竟也來了差油?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤任洞,失蹤者是張志新(化名)和其女友劉穎蓄喇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體交掏,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡妆偏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盅弛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钱骂。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挪鹏,靈堂內(nèi)的尸體忽然破棺而出见秽,到底是詐尸還是另有隱情,我是刑警寧澤讨盒,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布解取,位于F島的核電站,受9級特大地震影響返顺,放射性物質(zhì)發(fā)生泄漏禀苦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一遂鹊、第九天 我趴在偏房一處隱蔽的房頂上張望振乏。 院中可真熱鬧,春花似錦秉扑、人聲如沸慧邮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽误澳。三九已至,卻和暖如春吨娜,著一層夾襖步出監(jiān)牢的瞬間脓匿,已是汗流浹背淘钟。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工宦赠, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留陪毡,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓勾扭,卻偏偏與公主長得像毡琉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妙色,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容