文章目錄
- 一、package.json版本約束
- 1、初始項目安裝
- 2. 已有 yarn.lock 文件的項目安裝
- 3. 特殊情況
- 手動修改 package.json 版本:
- 使用 yarn upgrade 命令:
- 二、快速刪除node_modules
- 三、depcheck 檢測npm未使用的依賴
一、package.json版本約束
1、初始項目安裝
當你第一次在項目中運行 yarn install 時(也就是項目里還沒有 yarn.lock 文件),Yarn 會依據 package.json 文件里聲明的依賴和版本范圍來安裝依賴。
{"dependencies": {"lodash": "^4.17.21","axios": "~0.21.1"}
}
- ^ 符號:表示可以安裝大于等于指定版本且小于下一個主版本的任意版本。例如 ^4.17.21 允許安裝 4.x.x 版本中高于 4.17.21 的版本。
- ~ 符號:表示可以安裝大于等于指定版本且小于下一個次版本的任意版本。例如 ~0.21.1 允許安裝 0.21.x 版本中高于 0.21.1 的版本。
在這種情況下,Yarn 會從 npm 注冊表中選擇符合 package.json 版本范圍的最新版本進行安裝。安裝完成后,Yarn 會生成 yarn.lock 文件,記錄實際安裝的依賴版本。
2. 已有 yarn.lock 文件的項目安裝
當項目中已經存在 yarn.lock 文件時,yarn.lock 文件會對依賴安裝起到決定性作用。yarn.lock 文件詳細記錄了每個依賴的確切版本、下載地址和校驗和等信息。
當你再次運行 yarn install 時,Yarn 會優先使用 yarn.lock 文件中記錄的版本來安裝依賴,而不是根據 package.json 中的版本范圍去選擇最新版本。這樣做的目的是確保項目在不同環境下安裝的依賴版本一致,避免因依賴版本不同而導致的兼容性問題。
3. 特殊情況
如果你手動修改了 package.json 中依賴的版本范圍,并且運行 yarn install,Yarn 會嘗試在滿足新的版本范圍的前提下,盡量使 用 yarn.lock 中已有的版本。
如果沒有合適的版本,Yarn 會根據新的版本范圍去安裝新的依賴,并更新 yarn.lock 文件。
當你使用 yarn upgrade 命令時,Yarn 會根據 package.json 中的版本范圍,嘗試安裝最新的符合條件的依賴版本,并更新 yarn.lock 文件。
綜上所述,yarn install 時,在有 yarn.lock 文件的情況下,主要受 yarn.lock 文件影響;在沒有 yarn.lock 文件時,則根據 package.json 的版本范圍來安裝。
二、快速刪除node_modules
1、全局安裝rimraf
npm install -g rimraf # 全局安裝
2、快速刪除node_modules,rimraf node_modules
rimraf node_modules # node_modules
rimraf node_modules package-lock.json # 多目標刪除
rimraf "**/.*" # 刪除所有隱藏文件
3、與npm 腳本集成
{"scripts": {"clear": "rimraf node_modules",}
}
執行腳本
yarn clear 或 npm run clear
三、depcheck 檢測npm未使用的依賴
全局安裝
npm install -g depcheck
然后,在你的項目根目錄下運行:
depcheck
注意:有些隱含依賴是必要的,所以這個只能參考,不能全部做為刪除依賴的標準