最新版nodejs中有package.json与package-lock.json两个文件,那么这两个文件具体作用是什么呢?小白应该会很迷茫,别问我是怎么知道的,接下来我们了解一下这两个文件的作用
package.json与package-lock.json文件的作用
package.json文件记录你项目中所需要的所有模块。当你执行npm install的时候,node会先从package.json文件中读取所有dependencies信息,然后根据dependencies中的信息与node_modules中的模块进行对比,没有的直接下载,已有的检查更新(最新版本的nodejs不会更新,因为有package-lock.json文件,下面再说)。另外,package.json文件只记录你通过npm install方式安装的模块信息,而这些模块所依赖的其他子模块的信息不会记录。
package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块。当你执行npm install的时候,node从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新。因此,正因为有了package-lock.json文件锁定版本号,所以当你执行npm install的时候,node不会自动更新package.json文件中的模块,必须用
1 | npm install packagename |
(自动更新小版本号)或者1
npm install packagename@x.x.x
(指定版本号)来进行安装才会更新,package-lock.json文件中的版本号也会随着更新。我们在使用GitHub管理代码时,会提示关于依赖模块的安全性问题,然后我们需要根据这些提示去更新我们的依赖模块。
附:当package.json与package-lock.json都不存在,执行npm install时,node会重新生成package-lock.json文件,然后把node_modules中的模块信息全部记入package-lock.json文件,但不会生成package.json文件,此时,你可以通过npm init —yes来生成package.json文件