这篇文章主要介绍了package.json与package-lock.json的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇package.json与package-lock.json的区别是什么文章都会有所收获,下面我们一起来看看吧。记录当前项目所依赖模块的版本信息,更新模块时锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本,package-lock.json 是在 `npm install`时候生成一份文件。记录了node_modules目录下所有模块(包)的名称、版本号、下载地址、及这个模块又依赖了哪些依赖。npm5以前npm5以前,没有package-lock.json这个文件。package.json文件会记录你项目中所需要的所有模块。当你执行npm install的时候,node会先从package.json文件中读取所有dependencies信息,然后根据dependencies中的信息与node_modules中的模块进行对比,没有的直接下载,已有的检查更新。因为package.json只能锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本,所以你每次重新npm install时候拉取的都是该大版本下面最新的版本。一般我们为了稳定性考虑我们不能随意升级依赖包,因为如果换包导致兼容性bug出现很难排查,这样很容易出现问题,所以package-lock.json就是来解决包锁定不升级问题的另外,package.json文件只记录你通过npm install方式安装的模块信息,而这些模块所依赖的其他子模块的信息不会记录。npm5以后package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块。当你执行npm install的时候,node从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新。因此,正因为有了package-lock.json文件锁定版本号,所以当你执行npm install的时候,node不会自动更新package.json文件中的模块,必须用npm install packagename@x.x.x(指定版本号)来进行安装才会更新,package-lock.json文件中的版本号也会随着更新。如果重新 npm install 的时候以及当node_modules文件夹并不存在或被删除时,需要用到npm install重新装载全部依赖时,通过package-lock.json可以直接表明下载地址和相关依赖,就无需再从package.json逐个分析包的依赖项,因此会大大加快安装速度,package-lock.json目的就是确保所有库包与你上次安装的完全一样。 如果要升级package-lock.json里面的库包Node.js v8.0 后,自带的 npm 也升级到了5.0的确带来了不少便利,大概讲一下 npm 5 的一些大的变化:使用npm install xxx命令安装模块时,不再需要–save选项,会自动将模块依赖信息保存到 package.json 文件;安装模块操作(改变 node_modules 文件夹内容)会生成或更新 package-lock.json 文件;发布的模块不会包含 package-lock.json 文件;如果手动修改了 package.json 文件中已有模块的版本,直接执行npm install不会安装新指定的版本,只能通过npm install xxx@yy更新
重新安装模块之所以快,是因为 package-lock.json 文件中已经记录了整个 node_modules 文件夹的树状结构,甚至连模块的下载地址都记录了,再重新安装的时候只需要直接下载文件即可(这样看起来 facebook 的 yarn 好像没有啥优势了);package-lock.json文件的产生:package.json文件下载到的依赖包可能在不同的情况下,各库包的版本语义可能并不相同,有的库包开发者并不严格遵守这一原则:相同大版本号的同一个库包,其接口符合兼容要求。产生问题:在不同时间或者不同npm下载源之下,下载的各依赖包版本可能有所不同,因此其依赖库包行为特征也不同,有时候甚至完全不兼容。npm5开始提供自动生成package-lock.json文件的功能,为的是让开发者知道只要你保存了源文件,到一个新的机器上、或者新的下载源,只要按照这个package-lock.json文件所标识的具体版本下载依赖库包,就能确保所有库包与上次的安装完全一样;npm的下载源改为私服地址,这样产生的package-lock.json文件的版本号是这个私服上设置好的版本号以下是 package-lock.json 文件的例子:package-lock.json
是当node_modules 或 package.json发生变化时自动生成的文件。这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新带来速度的同时,npm 也挖了个大大的坑:以后直接改 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 文件网上已经有很多人反应这个问题了:GitHub 上的 issue:package-lock.json file not updated after package.json file is changedclean project with some deps in package.json.you run npm imodules are
installed and package-lock.json file is created.say you update module
A in package.json file.you run npm i. I would expect this updates the
package-lock.json file but it doesn’t. which results in module A not
being updated.关于“package.json与package-lock.json的区别是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“package.json与package-lock.json的区别是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关免费云主机域名注百云主机行业资讯频道。
这篇文章主要讲解了“linux如何安装php7.2”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux如何安装php7.2”吧! linux安装php7.2的方法:1、通过“ sudo rpm -Uvh h…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。