1、 package.json 相当于是npm的配置文件,npm install 命令执行时,是基于package.json去下载依赖的
2、package.json 中的依赖的version 不是具体的,比如下面的vue的版本 ^3.5.10 指的是与3.5.10兼容的最新版本,并不代表安装下载的是 3.5.10
{
"name": "vue3-minio",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"vue": "^3.5.10"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.1.4",
"vite": "^5.4.8"
}
}
3、package-lock.json 文件是在第一次npm install 的时候自动生成的,里面相应依赖的version是具体的,npm install 真实下载的依赖版本
4、package-lock.json 真正的作用是在使用git仓库协同开发的时候保证项目的依赖的版本一致性,当把代码拉取下来以后,执行npm install,此时发现存在package-lock.json 文件,npm 就会使用
package.json文件中的模块名 + package-lock.json中的version 去下载指定的依赖
5、这样做的意义是 package.json 中的依赖的版本是模糊的,即使是相同的 package.json文件,
执行 npm install 命令,最后下载的依赖的版本可能都不一样,所以在协同开发时,可能出现不同人员使用的依赖的版本不一致的问题,所以使用package-lock.json 来锁定版本
6、npm install 是基于package.json 下载依赖的,所以不会导致package.json中依赖版本的更新,
只有 通过npm install packagename@x.x.x(指定版本号) 时候会导致 package.json 版本的更新,package-lock.json 中vserion 也才会更新
以上是个人理解,如有不对之处,请谅解