詳解npm和cnpm混用的坑
有沒(méi)有遇到過(guò)npm和cnpm一起用的時(shí)候出現(xiàn)奇奇怪怪的問(wèn)題呢? 有沒(méi)有遇到過(guò)cnpm在支付寶小程序上面安裝包無(wú)效?他們真的只是切換一個(gè)請(qǐng)求源嗎?
我相信很多小伙伴使用cnpm的目的都很簡(jiǎn)單,那就是為了更快的下載東西,他會(huì)把請(qǐng)求源換成https://registry.npm.taobao.org
于是,我們就
npm install -g cnpm --registry=https://registry.npm.taobao.org
然后用cnpm代替npm,而一旦這樣玩了,就與出現(xiàn)上面說(shuō)的那些問(wèn)題,只是可能一時(shí)間發(fā)現(xiàn)不了。
(除此之外,還有cnpm里面再去執(zhí)行.npmrc的情況,這時(shí)候就算用cnpm也會(huì)很慢)
起因
我npm安裝一個(gè)東西,然后發(fā)現(xiàn),之前的都出問(wèn)題了,我一下子慌了,我只是install而已,怎么會(huì)修改之前的東西呢。于是認(rèn)真審視這個(gè)問(wèn)題,然后沒(méi)找到,于是問(wèn)大佬去了。
原因
LinGo大佬的回復(fù)

因?yàn)閏npm默認(rèn)使用的是軟鏈接,會(huì)導(dǎo)致npm安裝后,更新了之前的cnpm包,然后之前的cnpm引入就會(huì)gg了,于是,gg了一大堆東西。
那么我們可以發(fā)現(xiàn),原因在于cnpm本身,如果我們不用它問(wèn)題就解決了
那么最簡(jiǎn)單的辦法就是使用npm install <一些參數(shù)> --registry=https://registry.npm.taobao.org
這樣就很完美了,但是這樣又很麻煩
這時(shí)候可以升級(jí)下,用nrm
NPM介紹:
說(shuō)明:NPM(節(jié)點(diǎn)包管理器)是的NodeJS的包管理器,用于節(jié)點(diǎn)插件管理(包括安裝,卸載,管理依賴等)
使用NPM安裝插件:命令提示符執(zhí)行npm install <name> [-g] [--save-dev]
<name>:節(jié)點(diǎn)插件名稱。
例:npm install gulp-less --save-dev
-g:全局安裝。 將會(huì)安裝在C:\ Users \ Administrator \ AppData \ Roaming \ npm,并且寫(xiě)入系統(tǒng)環(huán)境變量;非全局安裝:將會(huì)安裝在當(dāng)前定位目錄;全局安裝可以通過(guò)命令行任何地方調(diào)用它,本地安裝將安裝在定位目錄的node_modules文件夾下,通過(guò)要求()調(diào)用;
--save:將保存至的package.json(的package.json是的NodeJS項(xiàng)目配置文件)
-dev;:保存至的package.json的devDependencies節(jié)點(diǎn),不指定-dev將保存至依賴節(jié)點(diǎn)
為什么要保存至的的package.json?因?yàn)楣?jié)點(diǎn)插件包相對(duì)來(lái)說(shuō)非常龐大,所以不加入版本管理,將配置信息寫(xiě)入的的package.json并將其加入版本管理,其他開(kāi)發(fā)者對(duì)應(yīng)下載即可(命令提示符執(zhí)行npm install,則會(huì)根據(jù)package.json下載所有需要的包)。
6. 使用 npm 卸載插件: npm uninstall <name> [ -g ] [ --save-dev ]
7. 使用 npm 更新插件: npm update <name> [ -g ] [ --save-dev ]
8. 更新全部插件: npm update [ --save-dev ]
9. 查看 NPM幫助: NPM幫助
10.查看當(dāng)前目錄已安裝插件:npm list
CNPM介紹:
說(shuō)明:因?yàn)楣雀璋惭b插件是從國(guó)外服務(wù)器下載,受網(wǎng)絡(luò)影響大,可能出現(xiàn)異常,如果谷歌的服務(wù)器在中國(guó)就好了,所以我們樂(lè)于分享的淘寶團(tuán)隊(duì)干了這事來(lái)自官網(wǎng):“這是一個(gè)完整npmjs.org鏡像,你可以用此代替官方版本(只讀),同步頻率目前為10分鐘一次以保證盡量與官方服務(wù)同步“。
官方網(wǎng)址:http://npm.taobao.org
安裝:命令提示符執(zhí)行npm install cnpm -g --registry=https://registry.npm.taobao.org注意:安裝完后最好查看其版本cnpm -v或關(guān)閉命令提示符重新打開(kāi),安裝完直接使用有可能會(huì)出現(xiàn)錯(cuò)誤
注:CNPM跟NPM用法完全一致,只是在執(zhí)行命令時(shí)將谷歌改為CNPM。
更好的方式
npm install -g nrm nrm use cnpm
然后就可以愉快用npm快速下載了。
nrm
-- 故事還沒(méi)完 --
這時(shí)候,如果已經(jīng)項(xiàng)目用了cnpm怎么辦?
方式改進(jìn)
cnpm i --by=npm
這樣就可以了,cnpm和npm就不會(huì)沖突了, 例如cnpm i --by=npm react
原因
cnpm using npminstall by default. If you don't like symlink mode for node_modules, you can change the installer to original npm. But you will lose the fastest install speed.
到此這篇關(guān)于詳解npm和cnpm混用的坑的文章就介紹到這了,更多相關(guān)npm和cnpm混用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node版本切換與版本升級(jí)降級(jí)教程(win)
nvm是一個(gè)node的版本管理工具,可以簡(jiǎn)單操作node版本的切換、安裝、查看,下面這篇文章主要給大家介紹了關(guān)于node版本切換與版本升級(jí)降級(jí)教程的相關(guān)資料,需要的朋友可以參考下2022-11-11
NodeJS多種創(chuàng)建WebSocket監(jiān)聽(tīng)的方式(三種)
這篇文章主要介紹了NodeJS多種創(chuàng)建WebSocket監(jiān)聽(tīng)的方式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
Nodejs高擴(kuò)展性的模板引擎 functmpl簡(jiǎn)介
本文給大家分享的是一款nodejs高擴(kuò)展性的模板引擎functmpl的簡(jiǎn)單介紹以及用法詳解,有需要的小伙伴可以參考下2017-02-02
nodejs入門(mén)教程三:調(diào)用內(nèi)部和外部方法示例
這篇文章主要介紹了nodejs入門(mén)教程之調(diào)用內(nèi)部和外部方法,結(jié)合實(shí)例形式分析了nodejs內(nèi)部與外部方法的定義與調(diào)用相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04
手把手教你用node.js搭建一個(gè)Web服務(wù)
Web服務(wù)器一般指網(wǎng)站服務(wù)器,是指駐留于因特網(wǎng)上某種類型計(jì)算機(jī)的程序,下面這篇文章主要給大家介紹了關(guān)于用node.js搭建一個(gè)Web服務(wù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04
nest.js,egg.js,midway,express,koa的區(qū)別小結(jié)
本文主要介紹了nest.js,egg.js,midway,express,koa的區(qū)別小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
修改Nodejs內(nèi)置的npm默認(rèn)配置路徑方法
今天小編就為大家分享一篇修改Nodejs內(nèi)置的npm默認(rèn)配置路徑方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05

