当前位置: 首页 > news >正文

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

注意:有些隐含依赖是必要的,所以这个只能参考,不能全部做为删除依赖的标准

相关文章:

  • 【GOOGLE插件】chrome.runtime.sendNativeMessage与本地应用交互
  • 爬虫案例十三js逆向模拟登录中大网校
  • 使用OpenCV和MediaPipe库——抽烟检测(姿态监控)
  • 【大模型技术】怎么用agent和prompt工程实现用户的要求?
  • c++ 中的float和double 的区别 开发过程中使用哪个更好
  • Centos离线安装perl
  • 高速PCB设计(布线设计)
  • React Next项目中导入Echart世界航线图 并配置中文
  • 本地算力部署大模型详细流程(一)
  • 机器学习_特征工程
  • 计算机网络-网络规划与设计
  • unity基础——线段与拖尾
  • 在Pycharm配置conda虚拟环境的Python解释器
  • LLM(1):了解大语言模型
  • 基于Transformer的医学文本分类:从BERT到BioBERT
  • JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3+ 2025 版免费体验方案
  • 基于SpringBoot的“校园周边美食探索及分享平台”的设计与实现(源码+数据库+文档+PPT)
  • 【含文档+PPT+源码】基于微信小程序的社区便民防诈宣传系统设计与实现
  • 框架、云原生、微服务的基本概念
  • C# 的 ManualResetEvent(线程同步操作) 类详解
  • 国家统计局:消费对我国经济增长的拉动有望持续增长
  • 中科院合肥物质院迎来新一届领导班子:刘建国继续担任院长
  • 十年牢狱倒计时,一名服刑人员的期待与惶恐
  • 坚决打好产业生态培育攻坚战!陈吉宁调研奉贤区
  • 嫩黑线货物列车脱轨致1名路外人员死亡,3人被采取刑事强制措施
  • 六省会共建交通枢纽集群,中部六省离经济“第五极”有多远?