1. 程式人生 > 程式設計 >詳解npm和cnpm混用的坑

詳解npm和cnpm混用的坑

目錄
  • 起因
  • 原因
  • NPM介紹:
  • CNPM介紹:
  • 更好的方式
  • 方式改進

有沒有遇到過npm和cnpm一起用的時候出現奇奇怪怪的問題呢? 有沒有遇到過cnpm在支付寶小程式上面安裝包無效?他們真的只是切換一個請求源嗎?

我相信很多小夥伴使用cnpm的目的都很簡單,那就是為了更快的下載東西,他會把請求源換成https://registry.npm.taobao.org
於是,我們就

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

然後用cnpm代替npm,而一旦這樣玩了,就與出現上面說的那些問題,只是可能一時間發現不了。
(除此之外,還有cnpm裡面再去執行.npmrc的情況,這時候就算用cnpm也會很慢)

起因

我npm安裝一個東西,然後發現,之www.cppcns.com前的都出問題了,我一下子慌了,我只是install而已,怎麼會修改之前的東西呢。於是認真審視這個問題,然後沒找到,於是問大佬去了。

原因

LinGo大佬的回覆

詳解npm和cnpm混用的坑

因為cnpm預設使用的是軟連結,會導致npm安裝後,更新了之前的cnpm包,然後之前的cnpm引入就會gg了,於是,gg了一大堆東西。

那麼我們可以發現,原因在於cnpm本身,如果我們不用它問題就解決了

那麼最簡單的辦法就是使用npm install <一些引數> --registry=https://registry.npm.taobao.org

這樣就很完美了,但是這樣又很麻煩
這時候可以升級下,用nwww.cppcns.comrm

NPM介紹:

說明:NPM(節點包管理器)是的Node的包管理器,用於節點外掛管理(包括安裝,解除安裝,管理依賴等)
使用NPM安裝外掛:命令提示符執行npm install <name> [-g] [--save-dev]
<name>:節點外掛名稱。
例:npm install gulp-less --save-dev
-g:全域性安裝。 將會安裝在C:\ Users \ Administrator \ AppData \ Roaming \ npm,並且寫入系統環境變數;非全域性安裝:將會安裝在當前定位目錄;全域性安裝可以通過命令列任何地方呼叫它,本地安裝將安裝在定位目錄的node_modules資料夾下,通過要求()呼叫;

--save:將儲存至的package.json(的package.json是的NodeJS專案配置檔案)
-dev;:儲存至的package.json的devDependencies節點,不指定-dev將儲存至依賴節點
為什麼要儲存至的的package.json?因為節點外掛包相對來說非常龐大,所以不加入版本管理,將配置資訊寫入的的package.json並將其加入版本管理,其他開發者對應下載即可(命令提示符執行npm install,則會根據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.檢視當前目錄已安裝外掛:npm list

CNPM介紹:

說明:因為谷歌安裝外掛是從國外伺服器下載,受網路影響大,可能出現異常,如果谷歌的伺服器在中國就好了,所以我們樂於分享的淘寶團隊幹了這事來自官網:“這是一個完整npmjs.org映象,你可以用此代替官方版本(只讀),同步頻率目前為10分鐘一次以保證儘量與客棧官方服務同步“。
官方網址:http://npm.taobao.org
安裝:命令提示符執行npm install cnpm -g --registry=https://registry.npm.taobao.org
注意:安裝完後最好檢視其版本cnpm -v或關閉命令提示符重新開啟,安裝完直接使用有可能會出現錯誤
注:CNPM跟NPM用法完全一致,只是在執行命令時將谷歌改為CNPM。

更好的方式

npm install -g nrm
nrm use cnpm

然後就可以愉快用npm快速下載了。
nrm

-- 故事還沒完 --

這時候,如果已經專案用了cnpm怎麼辦?

方式改進

cnpm i --by=npm

這樣就可以了,cnpm和npm就不會衝突了, 例如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.

cnpm傳送門

到此這篇關於詳解npm和cnpm混用的坑的文章就介紹到這了,更多相關npm和cnpm混用內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!