npm更換成淘寶鏡像源以及cnpm

1.需求由來

由于node安裝插件是從國外服務(wù)器下載,受網(wǎng)絡(luò)影響大,速度慢且可能出現(xiàn)異常。所以如果npm的服務(wù)器在中國就好了,所以我們樂于分享的淘寶團(tuán)隊(duì)(阿里巴巴旗下業(yè)務(wù)阿里云)干了這事。來自官網(wǎng):“這是一個(gè)完整 npmjs.org 鏡像,你可以用此代替官方版本(只讀),同步頻率目前為 10分鐘 一次以保證盡量與官方服務(wù)同步。

也就是說我們可以使用阿里布置在國內(nèi)的服務(wù)器來進(jìn)行node安裝。

2.使用方法

1.使用阿里定制的 cnpm 命令行工具代替默認(rèn)的 npm,輸入下面代碼進(jìn)行安裝:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

2.檢測cnpm版本,如果安裝成功可以看到cnpm的基本信息。

cnpm -v

3.以后安裝插件只需要使用cnpm intall即可


假如我已經(jīng)習(xí)慣了npm install的安裝方式,我不想去下載阿里的cnpm命令工具將命令變成cnpm怎么辦?很容易我們想到,我直接將node的倉庫地址改成淘寶鏡像的倉庫地址不就好了嗎?

3.單次使用

npm install --registry=https://registry.npm.taobao.org

4.永久使用

設(shè)置成全局的下載鏡像站點(diǎn),這樣每次install的時(shí)候就不用加--registry,默認(rèn)會(huì)從淘寶鏡像下載,設(shè)置方法如下:

1.打開.npmrc文件(nodejs\node_modules\npm\npmrc,沒有的話可以使用git命令行建一個(gè)( touch .npmrc),用cmd命令建會(huì)報(bào)錯(cuò))
2.增加 registry =https://registry.npm.taobao.org  即可。

也可以按如下方式直接在命令行設(shè)置

npm config set registry https://registry.npm.taobao.org

檢測是否成功

// 配置后可通過下面方式來驗(yàn)證是否成功
npm config get registry
// 或
npm info express

這樣,我們可以使用淘寶鏡像還不用更換成cnpm,是不是很爽!雖然實(shí)際都是使用的是淘寶鏡像。
最后附上淘寶鏡像官網(wǎng)地址:http://npm.taobao.org/

注:如果想還原npm倉庫地址,只需再把地址配置成npm鏡像就可以了

   npm config set registry https://registry.npmjs.org/

5.npm改成淘寶鏡像與cnpm區(qū)別(20190509新增)

之前一直以為npm改成淘寶鏡像后和cnpm本質(zhì)是一樣的,今天在研究package-lock.json時(shí)候發(fā)現(xiàn),這兩者還是有很大區(qū)別。特記錄下:

先貼下截圖對(duì)比:
1.使用cnpm安裝lodash


2.使用改成淘寶倉庫的npm安裝lodash


npm.png

通過截圖會(huì)發(fā)現(xiàn):

  • cnpm安裝模塊的時(shí)候會(huì)在node_modules文件夾生成二個(gè)文件夾,一個(gè)以下劃線 _開頭以及版本號(hào)組成的名字,一個(gè)正常名字的模塊,文件夾名字雖然不一樣,但里面文件是一樣的。
    比如執(zhí)行cnpm install lodash,會(huì)在node_modules文件夾下生成兩個(gè)文件夾:_lodash@4.17.11@lodash和lodash,

  • 先執(zhí)行了cnpm install lodash,然后再執(zhí)行npm install lodash,npm安裝的lodash會(huì)替換掉cnpm安裝的lodash包(包括以下劃線開頭那個(gè)包),文件夾會(huì)只剩一個(gè)npm先安裝的lodash包。再次npm uninstall lodash或者cnpm uninstall lodash,都會(huì)刪除lodash包,此時(shí)插件包就變成空文件夾了。

  • 先執(zhí)行了cnpm install lodash,然后再執(zhí)行npm uninstall lodash后,此時(shí)會(huì)報(bào)錯(cuò)

     npm ERR! code EINVALIDPACKAGENAME
     npm ERR! Invalid package name "_lodash@4.17.11@lodash": name cannot start with an underscore; 
     name can only contain URL-friendly characters
    

但是使用cnpm uninstall lodash后,不會(huì)報(bào)錯(cuò),此時(shí)會(huì)刪掉cnpm安裝的兩個(gè)包中其中一個(gè)即非下劃線(正常名字)的包。剩余的那個(gè)包是可以正常通過鼠標(biāo)點(diǎn)擊打開的。然后在文件中require會(huì)報(bào)錯(cuò),提示沒有這個(gè)包。

  • 先執(zhí)行了cnpm install lodash,然后手動(dòng)刪除cnpm安裝的兩個(gè)包中其中一個(gè)即下劃線(非正常名字)的包,剩余的那個(gè)包,發(fā)現(xiàn)無法通過鼠標(biāo)點(diǎn)擊打開了。然后在文件中require會(huì)報(bào)錯(cuò),提示沒有這個(gè)包。
yinyong.png
  • 所以,cnpm安裝的的2個(gè)模塊,兩者應(yīng)該存在引用關(guān)系,正常名字模塊是非正常名字模塊的索引,兩者都必須存在才可以使用。但是npm安裝下來就不存在這種情況了,因?yàn)橹挥幸粋€(gè)正常名字模塊。

  • 實(shí)測發(fā)現(xiàn),盡管使用npm改成淘寶倉庫,發(fā)現(xiàn)安裝速度還是遠(yuǎn)遠(yuǎn)比cnpm慢(當(dāng)模塊比較多的時(shí)候)??赡軕?yīng)該和cnpm安裝的文件結(jié)構(gòu)有關(guān)系吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評(píng)論 25 709
  • 神話的開端 當(dāng)蘋果開始構(gòu)建智能手機(jī)時(shí),iPhone 團(tuán)隊(duì)并沒有謀求改變世界。他們沒有預(yù)見到 App Store 將...
    Linmas閱讀 924評(píng)論 0 1
  • 說到底,謊言不管是不是出入這個(gè)粗魯世界的一抹潤滑劑啦,但必須都是一個(gè)理性個(gè)體的理性選擇。 為什么有的人那么愛撒謊咧...
    蛋清過敏閱讀 1,810評(píng)論 2 3
  • 文/歸海無期 送你一個(gè)老鼠吊墜 我就是那只老鼠 總想靜靜的躺在你胸口 與你一起東奔西走 老鼠戴著一頂王冠 王冠上鉆...
    歸海無期閱讀 485評(píng)論 0 1

友情鏈接更多精彩內(nèi)容