Node.js 入门教程
Node.js官方入门教程
Node.js中文网
本文仅用于学习记录,不存在任何商业用途,如侵删
文章目录
- Node.js 入门教程
- 19 package-lock.json 文件
- 19.1 示例
19 package-lock.json 文件

在版本 5 中,npm 引入了 package-lock.json 文件。
那是什么?您可能知道 package.json 文件,它更常见并且存在的时间更长。
该文件旨在跟踪被安装的每个软件包的确切版本,以便产品可以以相同的方式被 100% 复制(即使软件包的维护者更新了软件包)。
这解决了 package.json 一直尚未解决的特殊问题。
在 package.json 中,可以使用 semver 表示法设置要升级到的版本(补丁版本或次版本),例如:
- 如果写入的是
〜0.13.0,则只更新补丁版本:即0.13.1可以,但0.14.0不可以。 - 如果写入的是
^0.13.0,则要更新补丁版本和次版本:即0.13.1、0.14.0、依此类推。 - 如果写入的是
0.13.0,则始终使用确切的版本。
无需将 node_modules 文件夹(该文件夹通常很大)提交到 Git,当尝试使用 npm install 命令在另一台机器上复制项目时,如果指定了 〜 语法并且软件包发布了补丁版本,则该软件包会被安装。 ^ 和次版本也一样。【原来如此】
如果指定确切的版本,例如示例中的
0.13.0,则不会受到此问题的影响。
可能是你,或者是其他人,会在某处尝试通过运行 npm install 初始化项目。
因此,原始的项目和新初始化的项目实际上是不同的。 即使补丁版本或次版本不应该引入重大的更改,但还是可能引入缺陷。
package-lock.json 会固化当前安装的每个软件包的版本,当运行 npm install时,npm 会使用这些确切的版本。
这个概念并不新鲜,其他编程语言的软件包管理器(例如 PHP 中的 Composer)使用类似的系统已有多年。
package-lock.json 文件需要被提交到 Git 仓库,以便被其他人获取(如果项目是公开的或有合作者,或者将 Git 作为部署源)。
当运行 npm update 时,package-lock.json 文件中的依赖的版本会被更新。
19.1 示例
在空文件夹中运行 npm install cowsay 时获得的 package-lock.json 文件的示例结构:


安装 cowsay,其依赖于:
get-stdinoptimiststring-widthstrip-eof

这些软件包还需要其他软件包,正如从 require 属性可以看到的:
ansi-regexis-fullwidth-code-pointminimistwordwrapstrip-eof

它们会按字母顺序被添加到文件中,每个都有 version 字段、指向软件包位置的 resolved 字段、以及用于校验软件包的 integrity 字符串。
![BUUCTF Reverse/[2019红帽杯]xx](https://img-blog.csdnimg.cn/93c03c2b7ac245c8b705f5a7267e85ec.png)


















