一般每个项目的根目录下面都会有一个package.json文件,这个文件定义了项目所需要的各种模块/包,以及项目的配置信息(比如名称、版本、许可证等)。
npm install 命令根据这个配置文件,自动下载所需的模块/包,也就是配置项目所需的运行和开发环境。
当执行npm install 命令时ndoe会先从dependencies内容,然后根据读取的内容与node_modules中的模块进行对比,没有则下载,已有的会检查版本更新。
package.json文件只记录npm install 方式安装的模块信息,不会记录这些模块依赖的包。
例如我们安装了express,在package.json中只会记录express的信息,而express又依赖了其他的一些包,此事package.json是不会记载express依赖包的信息。
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版本可能会导致某些问题。
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