package.json 和 package-lock.json

源码 2024-9-11 23:21:51 31 0 来自 中国
1. 前言


  • 应该许多人 搞不清楚, 我们天天见天天用的 这个 package.json 和package-lock.json到底有啥关系
  • 那本日就来捋一下
2. package.json


  • 起首在说下这个 我们自以为以为熟的不能在熟的package.json
  • package.json是帮我们管理项目中的依靠包的,让我们远离了依靠地狱。
  • 依照commonJS规范 ,通过 npm管理,使用一些简单的下令,主动生成package.json, 安装包依靠关系都由package.json来管理,我们险些不必思量它们。
2.1 版本控制


  • 什么是 版本号

  • 版本号由三部分构成:major.minor.patch,主版本号.次版本号.修补版本号。
  • 比方:1.2.3,重要版本1,次要版本2,补丁3。

  • 补丁中的更改体现不会粉碎任何内容的错误修复。
  • 次要版本的更改体现不会粉碎任何内容的新功能。
  • 重要版本的更改代表了一个粉碎兼容性的大变革。如果用户不顺应重要版本更改,则内容将无法正常工作。


  • 指定依靠包版本
1.~会匹配近来的小版本依靠包,
好比 ~1.2.3 会匹配全部 1.2.x 版本,但是不包罗 1.3.0

  • ^会匹配最新的大版本依靠包,
    好比 ^1.2.3 会匹配全部 1.x.x 的包,包罗 1.3.0,但是不包罗 2.0.0
  • *安装最新版本的依靠包,
    好比 *1.2.3 会匹配 x.x.x


  • 怎样选择

  • 由于版本或多或少总会有些小bug以是小的改动是会经常有的 ,用~ 和 ^ 则可以办理这个题目

  • 须要留意 ^版本更新大概比力大,会造成项目代码错误,以是 发起使用 ~ 来标记版本号,如允许以包管项目不会出现大的题目,也能包管包中的小bug可以得到修复。


  • 团队开发 怎样控制版本

  • 现实开发场景 都是团队 我们也经常举行 代码管理,一样寻常情况下 是不会把 依靠包/node_modules上传到云端的,以是 很大概每个人在安装的时间 版本都会有小的差别
  • 而且偶然间我们并不想要使用最新版本的依靠
  • 好比jQuery 有些只须要使用 1.10 大概2.x
  • 以是我们须要 固定版本号大概锁死版本号
3. package-lock.json


  • 它会在npm 更改 node_modules目次树 大概 package.json 时主动生成的 ,它正确的形貌了当前项目npm包的依靠树,而且在随后的安装中会根据package-lock.json来安装,包管是类似的一个依靠树,不思量这个过程中是否有某个依靠有小版本的更新。
  • 它的产生就是来对整个依靠树举行版本固定的(锁死)

  • 当我们在一个项目中npm install时间,会主动生成一个package-lock.json文件,和package.json在同一级目次下。package-lock.json纪录了项目标一些信息和所依靠的模块。如许在每次安装都会出现类似的结果. 不管你在什么呆板上面或什么时间安装。

  • 当我们下次再npm install时间,
    npm 发现如果项目中有 package-lock.json 文件,
    会根据package-lock.json 里的内容来处置惩罚和安装依靠而不再根据 package.json。

  • 须要 留意的是,使用cnpm install时间,并不会生成 package-lock.json 文件,也不会根据 package-lock.json 来安装依靠包,还是会使用 package.json来安装。
参考资料


初心

我全部的文章都只是基于入门,开端的相识;是本身的知识体系梳理,如有错误,道友们一起沟通交换;

如果能资助到有缘人,非常的荣幸,齐备为了部落的崛起;

共勉
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:29, Processed in 0.155072 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表