package.json 依賴包約束及快速刪除node_modules

文章目錄

    • 一、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 版本:

如果你手動修改了 package.json 中依賴的版本范圍,并且運行 yarn install,Yarn 會嘗試在滿足新的版本范圍的前提下,盡量使 用 yarn.lock 中已有的版本。
如果沒有合適的版本,Yarn 會根據新的版本范圍去安裝新的依賴,并更新 yarn.lock 文件。

  • 使用 yarn upgrade 命令:

當你使用 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

注意:有些隱含依賴是必要的,所以這個只能參考,不能全部做為刪除依賴的標準

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73156.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73156.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73156.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis Sentinel (哨兵模式)深度解析:構建高可用分布式緩存系統的核心機制

一、傳統主從復制的痛點 在分布式系統架構中,Redis 作為高性能緩存和數據存儲解決方案,其可用性直接關系到整個系統的穩定性。傳統的主從復制架構雖然實現了數據冗余,但在面臨節點故障時仍存在明顯缺陷: ?手動故障轉移&#xf…

[免費]微信小程序(圖書館)自習室座位預約管理系統(SpringBoot后端+Vue管理端)(高級版)【論文+源碼+SQL腳本】

大家好,我是java1234_小鋒老師,看到一個不錯的微信小程序(圖書館)自習室座位預約管理系統(SpringBoot后端Vue管理端)(高級版),分享下哈。 項目視頻演示 【免費】微信小程序(圖書館)自習室座位預約管理系統(SpringBoot后端Vue管理端)(高級版…

微服務架構下的 Node.js

Node.js 在微服務架構中的特點 輕量級和高效性 Node.js 以其輕量級和高效的特點,非常適合構建微服務架構。它具有事件驅動和非阻塞 I/O 模型,能夠在處理高并發請求時表現出色。這意味著 Node.js 可以同時處理大量的并發連接,而不會因為阻塞…

Linux 配置靜態 IP

一、簡介 在 Linux CentOS 系統中默認動態分配 IP 地址,每次啟動虛擬機服務都是不一樣的 IP,因此要配置靜態 IP 地址避免每次都發生變化,下面將介紹配置靜態 IP 的詳細步驟。 首先先理解一下動態 IP 和靜態 IP 的概念: 動態 IP…

為什么 HTTP GET 方法不使用請求體?

本指南將揭示為什么 HTTP GET 方法不像其他 HTTP 方法那樣使用請求體,以及如何在 API 開發中有效地使用 GET 請求。 當談到 HTTP(超文本傳輸協議)時,您可能會好奇為什么 GET 方法通常不涉及請求體。在 Web 請求中,發送…

java后端--定時任務

定時任務 一、簡述二、注解1.Scheduled屬性: 2.EnableScheduling 三、案例 一、簡述 在java后端開發中,經常遇到一些任務需要頻繁發生,每次都人工調用太麻煩,這時就用到了定時任務進行自動化調用,大大便利了程序員的開…

JVM垃圾回收面試題及原理

1. 對象什么時候可以被垃圾器回收 如果一個或多個對象沒有任何的引用指向它了,那么這個對象現在就是垃圾,如果定位了垃圾,則有可能會被垃圾回收器回收 如果要定位什么是垃圾,有兩種方式來確定 引用計數法可達性分析算法 1.1 …

《Mycat核心技術》第19章:基于MySQL實現讀寫分離

作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章匯總:https://binghe.gitcode.host/md/all/all.html 星球項目地址:https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…

【安卓逆向】安卓病毒介紹及其簡單案例分析

目錄 引言 一、Android 病毒介紹及分析方法 1.1 Android 病毒預覽 1.2 Android 病毒分析必備知識 1.3 Android 病毒的常見類型及惡意行為 1.3.1 常見病毒類型 1.3.2 常見病毒行為 1.4 病毒激活條件 1.5 Android 病毒的傳播方式 1.6 Android 病毒分析的一般方法 二…

基于LabVIEW的腳本化子VI動態生成

該示例展示了一種利用LabVIEW VI腳本(VI Scripting)技術,通過程序化方式動態生成并替換子VI的解決方案。核心邏輯為:基于預定義的模板VI,根據用戶選擇的數學操作(加法或乘法),自動生…

機器學習之超參數優化(Hyperparameter Optimization)

超參數優化(Hyperparameter Optimization) 1. 簡介 在機器學習和深度學習中,超參數(Hyperparameters) 是在訓練之前需要設定的參數,例如學習率(learning rate)、批量大小(batch size)、神經網絡的層數等。與訓練過程中自動學習的模型參數(如權重和偏置)不同,超參…

Manus 演示案例:谷歌公司運營模擬器游戲體驗

一、項目背景與愿景 在科技行業蓬勃發展的當下,谷歌作為行業巨頭,其成長歷程充滿了無數值得深入探究的決策智慧。這些決策不僅塑造了谷歌的輝煌,也為全球企業的發展提供了寶貴的借鑒。本項目旨在打造一款以谷歌公司發展為藍本的運營模擬器游戲…

es-索引詳解

在 Elasticsearch 中,**索引(Index)**是核心概念之一,類似于關系型數據庫中的“表”。索引用于存儲、組織和檢索文檔(Document)。以下是關于 Elasticsearch 索引的詳細解析: 1. 索引的基本概念 …

基于策略模式的智能提示語生成器設計與實現——以Tkinter GUI開發為例

基于策略模式的智能提示語生成器設計與實現——以Tkinter GUI開發為例 一、引言:智能化時代的提示工程工具 在人工智能技術廣泛應用的時代背景下,如何與AI模型進行有效交互已成為關鍵技能。本文介紹的"AI任務需求與提示語策略生成器"正是基于…

01 | Go 項目開發極速入門課介紹

提示: 所有體系課見專欄:Go 項目開發極速入門實戰課。 你好,歡迎學習本課程。本課程是一個 Go 項目開發極速入門課程。旨在幫助剛學習完 Go 基礎語法的 Go 開發者,快速掌握如何開發一個功能相對全面的 Go 項目。 根據課程設計目標…

密閉空間可燃氣體監測終端:守護城市命脈,智馭燃氣安全!

近年來,陜西省高度重視燃氣安全,出臺了一系列政策文件,旨在全面加強城鎮燃氣安全監管,防范化解重大安全風險。2023年,陜西省安委會印發《全省城鎮燃氣安全專項整治工作方案》,明確要求聚焦燃氣經營、輸送配…

大白話react第十八章React 與 WebGL 項目的高級拓展與優化

大白話react第十八章React 與 WebGL 項目的高級拓展與優化 1. 實現 3D 模型的導入與動畫 在之前的基礎上,我們可以導入更復雜的 3D 模型,并且讓這些模型動起來,就像在游戲里看到的角色和場景一樣。這里我們使用 GLTF 格式的模型&#xff0c…

有關Java中的多線程

學習目標 ● 掌握線程相關概念 ● 掌握線程的基本使用 ● 掌握線程池的使用 ● 了解解決線程安全方式 1.為什么要學習線程? ● 從1946年2月14日世界上第一臺計算機在美國賓夕法尼亞大學誕生到今天,計算和處理的模式早已從單用戶單任務的串行模式發展到了多用戶多…

Spring Boot集成EasyExcel

1. 初始化Spring Boot項目 首先,使用Spring Initializr(https://start.spring.io/)生成一個基本的Spring Boot項目。選擇以下依賴項: Spring WebLombok (用于減少樣板代碼)SLF4J (用于日志記錄) 2. 添加依賴 在你的pom.xml文件…

(2025|ICLR|廈大華為,LoSA,基于表示互信息的動態層級稀疏率,基于重構誤差的秩分配)LLM 的動態低秩稀疏自適應

Dynamic Low-Rank Sparse Adaptation for Large Language Models 目錄 1. 引言 1.1 關鍵詞 2. 方法 2.1 預備知識 2.2 層級稀疏率確定 2.3 稀疏感知的秩分配 2.4 動態稀疏與適配 3. 實驗 3.1 實驗設置 3.2 語言建模 3.3 零樣本任務 3.4 N:M 稀疏性 3.5 消融實驗 …