npm、cnpm、yarn 安裝刪除異同


背景

一直覺得npm、cnpm、yarn的安裝刪除基本一樣用哪個都行,不過俗話說的好,實踐出真知,這里記錄一下今天簡單測試得到的結果總結。

可能會有錯誤,希望大家評論指正,十分感謝。

測試電腦系統:Mac

初始化

步驟:在三個文件夾里分別執行以下命令

npm init

cnpm init

yarn init

結果都是添加了一個package.json文件

安裝包

步驟:在三個文件夾里分別用三種命令安裝包,然后在不同文件夾換命令安裝,查看文件變化情況

npm i dayjs

  1. 較其他兩種方式速度慢些
  2. 自動生成了package-lock.json
  3. node_modules中只有一個dayjs包
  4. dependencies依賴里有dayjs

yarn add moment 安裝成功,package-lock.json中沒有moment版本鎖

cnpm i dayjs

  1. 沒有生成lock文件
  2. node_modules里有兩個包(不重要)
  3. dayjs沒有加入到dependencies中,使用cnpm i dayjs -S才能加進去

yarn add dayjs

  1. 生成了yarn.lock文件
  2. node_modules里有dayjs包和.yarn-integrity文件(感覺是存儲依賴版本的hash值,yarn check --integrity可能會用到)
  3. dependencies依賴里有dayjs

npm i moment 安裝成功,yarn.lock中沒有moment版本鎖

刪除包

刪除步驟嘗試略多,不贅述,直接一起總結。

測試結果

  1. 如下圖,上面是npm、yarn安裝的包,下面是cnpm安裝的包
  2. npm i xxx 默認參數為 -S,改變package.json和package-lock.json,同時會刪除掉cnpm安裝的包(不管cnpm是否帶參)
  3. npm r xxx,改變package.json和package-lock.json,刪除存在與依賴的包時,同時會把沒有在依賴里的其他包刪除掉(比如沒有加參數的用cnpm安裝的包),有在依賴里的其他包會被更新
    變成
  4. cnpm i xxx / cnpm r xxx 只能安裝 / 刪除包,不改變任何配置文件
  5. cnpm i xxx / cnpm r xxx 帶 -S / -D 參數時,只改變package.json,不改變鎖文件
  6. yarn add xxx 默認參數為 -S,改變package.json和yarn.lock
  7. yarn remove xxx 找不到沒有寫入package.json依賴的包,無法刪除;寫入package.json依賴的可以刪除
  8. yarn remove xxx 改變package.json和package-lock.json,刪除存在與依賴的包時,同時會把沒有在依賴里的其他包刪除掉(比如沒有加參數的用cnpm安裝的包),有在依賴里的其他包會被更新

✨理論總結✨

能改變package.json的命令

  1. npm、yarn
  2. cnpm帶 -S / -D 參數時

鎖文件的改變

  1. package-lock.json文件只由npm改變
  2. yarn.lock文件只由yarn改變
  3. cnpm帶不帶參數都無法影響兩個鎖文件

cnpm安裝的包會受到的影響

  1. npm、yarn安裝包時會把cnpm不帶 -S / -D 安裝的其他包刪除
  2. npm、yarn刪除包時會把cnpm不帶 -S / -D 安裝的其他包刪除,有在依賴里的cnpm安裝的其他包會被更新
  3. npm安裝包時會把cnpm帶 -S / -D 安裝的其他包刪除,但package.json里依賴不會被刪除,這時再執行npm刪除,會按照依賴把誤刪的其他包裝回來,但是繼續安裝不會裝回來。(ps:有點秀~)
  4. yarn安裝包時會把cnpm帶 -S / -D 安裝的其他包更新
  5. npm能直接刪除cnpm不帶 -S / -D 安裝的包
  6. yarn不能直接刪除cnpm不帶 -S / -D 安裝的包,會提示找不到包

(cnpm帶不帶 -S / -D歸根結底是有沒有在package.json中添加依賴)


附一個小知識

yarn check                  //檢查package.json里的依賴版本和yarn.lock里是否一致
yarn check --integrity  //檢查package.json里的依賴版本的hash值和yarn.lock里是否一致,有助於驗證包依賴沒有更改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM