tft每日頭條

 > 生活

 > npm鏡像修改失敗

npm鏡像修改失敗

生活 更新时间:2024-09-16 03:42:55


npm改成淘寶鏡像與cnpm區别


之前一直以為npm改成淘寶鏡像後和cnpm本質是一樣的,今天在研究package-lock.json時候發現,這兩者還是有很大區别。特記錄下:

先貼下截圖對比:

1.使用cnpm安裝lodash

npm鏡像修改失敗(npm改成淘寶鏡像與cnpm就是一樣的了嗎)1


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

npm鏡像修改失敗(npm改成淘寶鏡像與cnpm就是一樣的了嗎)2


通過截圖會發現:

  • cnpm安裝模塊的時候會在node_modules文件夾生成二個文件夾,一個以下劃線 _開頭以及版本号組成的名字,一個正常名字的模塊,文件夾名字雖然不一樣,但裡面文件是一樣的。比如執行cnpm install lodash,會在node_modules文件夾下生成兩個文件夾:[email protected]@lodash和lodash,
  • 先執行了cnpm install lodash,然後再執行npm install lodash,npm安裝的lodash會替換掉cnpm安裝的lodash包(包括以下劃線開頭那個包),文件夾會隻剩一個npm先安裝的lodash包。再次npm uninstall lodash或者cnpm uninstall lodash,都會删除lodash包,此時插件包就變成空文件夾了。
  • 先執行了cnpm install lodash,然後再執行npm uninstall lodash後,此時會報錯

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


但是使用cnpm uninstall lodash後,不會報錯,此時會删掉cnpm安裝的兩個包中其中一個既非下劃線(正常名字)的包。剩餘的那個包是可以正常通過鼠标點擊打開的。然後在文件中require會報錯,提示沒有這個包。

  • 先執行了cnpm install lodash,然後手動删除cnpm安裝的兩個包中其中一個即下劃線(非正常名字)的包,剩餘的那個包,發現無法通過鼠标點擊打開了。然後在文件中require會報錯,提示沒有這個包。

npm鏡像修改失敗(npm改成淘寶鏡像與cnpm就是一樣的了嗎)3

  • 所以,cnpm安裝的的2個模塊,兩者應該存在引用關系,正常名字模塊是非正常名字模塊的索引,兩者都必須存在才可以使用。但是npm安裝下來就不存在這種情況了,因為隻有一個正常名字模塊。
  • 實測發現,盡管使用npm改成淘寶倉庫,發現安裝速度還是遠遠比cnpm慢(當模塊比較多的時候)。可能應該和cnpm安裝的文件結構有關系吧。



,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved