npm和cnpm

一撤蚊、npm和cnpm

區(qū)別

npm是node的包管理工具屡江,會(huì)把項(xiàng)目里所有的依賴項(xiàng)保存在package.json文件中剪芍。
cnpm是淘寶在中國(guó)搭建的npm副本敢朱,保證中國(guó)用戶使用依賴不受網(wǎng)路的影響。

cnpm:優(yōu)點(diǎn)是速度快葵姥,缺點(diǎn)是沒(méi)辦法保證每個(gè)同事安裝依賴的時(shí)候版本一致荷鼠,就會(huì)出現(xiàn)依賴升級(jí)不兼容性問(wèn)題
npm:優(yōu)點(diǎn)是通過(guò)package-lock.json文件能夠鎖定版本,缺點(diǎn)是安裝速度慢榔幸。

切換

npm 切換 cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm 切換 npm
npm config set registry https://registry.npmjs.org

--save-dev和--save

--save-dev的縮寫(xiě)是-D允乐,開(kāi)發(fā)環(huán)境
--save的縮寫(xiě)是-S,生產(chǎn)環(huán)境

二削咆、package-lock.json和package.json

package.json

使用 npm init 命令自動(dòng)生成牍疏。
定義了這個(gè)項(xiàng)目所需要的各種模塊,以及項(xiàng)目的配置信息(比如名稱拨齐、版本鳞陨、許可證等元數(shù)據(jù))。
package.json文件只能鎖定主版本號(hào)

package-lock.json

package-lock.json它會(huì)在npm更改node_modules目錄樹(shù)或者package.json時(shí)自動(dòng)生成的瞻惋,它準(zhǔn)確的描述了當(dāng)前項(xiàng)目npm包的依賴樹(shù)厦滤,并且在隨后的安裝中會(huì)根據(jù)package-lock.json來(lái)安裝,保證是相同的一個(gè)依賴樹(shù)歼狼,不考慮這個(gè)過(guò)程中是否有某個(gè)依賴有小版本的更新掏导。

package-lock.json 是在 npm install 時(shí)候生成一份文件。
該文件里面記錄了package.json依賴的模塊羽峰,以及依賴的依賴趟咆。并且給每個(gè)依賴標(biāo)明了版本, 獲取地址和哈希值, 使得每次安裝都會(huì)出現(xiàn)相同的結(jié)果. 不管你在什么機(jī)器上面或什么時(shí)候安裝。

其實(shí)就是鎖定版本的意思梅屉,當(dāng)你需要的依賴被作者更新后值纱,并不會(huì)影響你項(xiàng)目依賴的安裝,依然是你最初安裝時(shí)鎖定的版本坯汤。保證你的項(xiàng)目不會(huì)因?yàn)橐蕾嚫露鲥e(cuò)虐唠。

當(dāng)我們下次再npm install時(shí)候,npm發(fā)現(xiàn)如果項(xiàng)目中有package-lock.json文件惰聂,會(huì)根據(jù)package-lock.json里的內(nèi)容來(lái)處理和安裝依賴而不再根據(jù)package.json.

cnpm不支持package-lock.json

1凿滤、使用cnpm install時(shí)候,并不會(huì)生成package-lock.json文件
2庶近、cnpm install的時(shí)候,就算你項(xiàng)目中有package-lock.json文件眷蚓,cnpm也不會(huì)識(shí)別鼻种,仍會(huì)根據(jù)package.json來(lái)安裝。所以這就是為什么之前你用npm 安裝產(chǎn)生了package-lock.json沙热,后面的人用cnpm來(lái)安裝叉钥,可能會(huì)跟你安裝的依賴包不一致罢缸,這是因?yàn)閏npm 不受package-lock.json影響,只會(huì)根據(jù)package.json進(jìn)行下載投队。

版本號(hào)

major.minor.patch (主版本號(hào).次版本號(hào).修訂號(hào))

patch:修復(fù)bug枫疆,兼容老版本
minor:新增功能,兼容老版本
major:新的架構(gòu)調(diào)整敷鸦,不兼容老版本

修復(fù)問(wèn)題但不影響API 時(shí)息楔,遞增修訂號(hào);
API 保持向下兼容的新增及修改時(shí)扒披,遞增次版本號(hào)值依;
進(jìn)行不向下兼容的修改時(shí),遞增主版本號(hào)碟案。

版本符號(hào)

version
必須匹配某個(gè)版本
如:1.1.2愿险,表示必須依賴1.1.2版

>version
必須大于某個(gè)版本
如:>1.1.2,表示必須大于1.1.2版

>=version
可大于或等于某個(gè)版本
如:>=1.1.2价说,表示可以等于1.1.2辆亏,也可以大于1.1.2版本

<version
必須小于某個(gè)版本
如:<1.1.2,表示必須小于1.1.2版本

<=version
可以小于或等于某個(gè)版本
如:<=1.1.2鳖目,表示可以等于1.1.2扮叨,也可以小于1.1.2版本

~version
大概匹配某個(gè)版本
如果minor版本號(hào)指定了,那么minor版本號(hào)不變疑苔,而patch版本號(hào)任意
如果minor和patch版本號(hào)未指定甫匹,那么minor和patch版本號(hào)任意
如:~1.1.2,表示>=1.1.2 <1.2.0惦费,可以是1.1.2兵迅,1.1.3,1.1.4薪贫,.....恍箭,1.1.n
如:~1.1,表示>=1.1.0 <1.2.0瞧省,可以是同上
如:~1扯夭,表示>=1.0.0 <2.0.0,可以是1.0.0鞍匾,.....交洗,1.0.n,1.1.n橡淑,.....构拳,1.n.n

^version
兼容某個(gè)版本
版本號(hào)中最左邊的非0數(shù)字的右側(cè)可以任意
如果缺少某個(gè)版本號(hào),則這個(gè)版本號(hào)的位置可以任意
如:^1.1.2 ,表示>=1.1.2 <2.0.0置森,可以是1.1.2斗埂,.....,1.1.n凫海,.....呛凶,1.n.n
如:^0.2.3 ,表示>=0.2.3 <0.3.0行贪,可以是0.2.3漾稀,0.2.4,.....瓮顽,0.2.n
如:^0.0县好,表示 >=0.0.0 <0.1.0,可以是0.0.0暖混,0.0.1缕贡,.....,0.0.n

x-range
x的位置表示任意版本
如:1.2.x拣播,表示可以1.2.0晾咪,1.2.1,.....贮配,1.2.n

*-range
任意版本谍倦,""也表示任意版本
如:*,表示>=0.0.0的任意版本

version1 - version2
大于等于version1泪勒,小于等于version2
如:1.1.2 - 1.3.1昼蛀,表示包括1.1.2和1.3.1以及他們件的任意版本

range1 || range2
滿足range1或者滿足range2,可以多個(gè)范圍
如:<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0圆存,表示滿足這3個(gè)范圍的版本都可以

latest
當(dāng)前發(fā)布版本叼旋。
默認(rèn)情況下 npm install 安裝的就是這個(gè) latest 標(biāo)記的版本

文檔

cnpm
npm中文
npm
版本號(hào)
package-lock.json

網(wǎng)站導(dǎo)航

網(wǎng)站導(dǎo)航

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沦辙,隨后出現(xiàn)的幾起案子夫植,更是在濱河造成了極大的恐慌,老刑警劉巖油讯,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件详民,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡陌兑,警方通過(guò)查閱死者的電腦和手機(jī)沈跨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)兔综,“玉大人谒出,你說(shuō)我怎么就攤上這事隅俘。” “怎么了笤喳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)碌宴。 經(jīng)常有香客問(wèn)我杀狡,道長(zhǎng),這世上最難降的妖魔是什么贰镣? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任呜象,我火速辦了婚禮,結(jié)果婚禮上碑隆,老公的妹妹穿的比我還像新娘恭陡。我一直安慰自己,他們只是感情好上煤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布休玩。 她就那樣靜靜地躺著,像睡著了一般劫狠。 火紅的嫁衣襯著肌膚如雪拴疤。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天独泞,我揣著相機(jī)與錄音呐矾,去河邊找鬼。 笑死懦砂,一個(gè)胖子當(dāng)著我的面吹牛蜒犯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荞膘,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼罚随,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了衫画?” 一聲冷哼從身側(cè)響起毫炉,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎削罩,沒(méi)想到半個(gè)月后瞄勾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弥激,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年进陡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片微服。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趾疚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糙麦,我是刑警寧澤辛孵,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站赡磅,受9級(jí)特大地震影響魄缚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜焚廊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一冶匹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咆瘟,春花似錦嚼隘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至匿乃,卻和暖如春桩皿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幢炸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工泄隔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宛徊。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓佛嬉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親闸天。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暖呕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353