package.json,package-lock.json,yarn.lock

package.json


一般每个项目的根目录下面都会有一个package.json文件,这个文件定义了项目所需要的各种模块/包,以及项目的配置信息(比如名称、版本、许可证等)。

npm install 命令根据这个配置文件,自动下载所需的模块/包,也就是配置项目所需的运行和开发环境。

当执行npm install 命令时ndoe会先从dependencies内容,然后根据读取的内容与node_modules中的模块进行对比,没有则下载,已有的会检查版本更新。

package.json文件只记录npm install 方式安装的模块信息,不会记录这些模块依赖的包

例如我们安装了express,在package.json中只会记录express的信息,而express又依赖了其他的一些包,此事package.json是不会记载express依赖包的信息。

  • 如果手动修改了 package.json 文件中已有模块的版本,直接执行npm install不会安装新指定的版本,只能通过npm install xxx@yy更新

package-lock.json


package-lock.json文件只有npm5之后才有,package-lock.json是当 安装包,node_modules 或 package.json 发生变化时自动生成的文件。

在npm5之后的版本不需要添加— — save ,它就会自动保存这个依赖信息。

package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块,

当执行npm install的时候,node从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新

例如:我们使用了jquery1.x版本,如果没有锁定版本,npm install时会自动安装最新版,jq1.x版本和jq2.x版本是有重大差异的,此时自动安装2.x版本可能会导致某些问题。

  • 发布的模块不会包含 package-lock.json 文件
  • 这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新
  • 以后直接改 package.json 文件相应模块的版本号,再执行npm install不会更新了,你只能手动用npm install xxx@yy指定版本号来安装,
  • 它会自动更新 package-lock.json 文件。直接执行npm install时,如果不存在 package-lock.json 文件,它会根据安装模块后的 node_modules 目录结构来创建;如果已经存在 package-lock.json 文件,则它只会根据 package-lock.json 文件指定的结构来下载模块,并不会理会 package.json 文件

yarn.lock


NPM 和 YARN 是两个不同的包管理系统, 其中 NPM 生成 package-lock.json, YARN 生成 yarn.lock, 这两个文件记录当前项目所依赖的各个包的版本。当我们执行 yarn 命令或者添加依赖包命令后,Yarn 都会在项目根目录下自动生成一个 yarn.lock 文件。在使用 Yarn 安装、升级、删除依赖项目时,会自动更新到 yarn.lock 文件中。一般我们不会去手动编辑这个文件,因为很容易破坏这个文件。

为了在多台机器之间获得一致的安装结果,Yarn 可能会需要比 package.json 文件中配置的依赖项更多的信息。它需要准确存储每一个依赖项的安装版本(类似package-lock.json一个是npm生成一个是yarn生成)


摘抄:https://blog.csdn.net/qq_41558265/article/details/103566073
https://blog.csdn.net/Umbrella_Um/article/details/100064795

你可能感兴趣的:(笔记,node.js)