package-lock.json 文件
在安装 Node 包时,会自动生成 package-lock.json 文件。了解一下它是做什麽的吧! 在版本5中,npm 引入了 package-lock.json 文件。 这是什麽?你可能已经了解 package.json 文件,它更常见也存在更久。 该文件的目标是跟踪安装的每个包的确切版本,以便产品在各个环境中可以完全复制,即使包被维护者更新。 这解决了 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在运行 npm install 时将使用这些确切的版本。 这个概念并不新鲜,其他的编程语言的包管理工具(例如 PHP 中的 Composer)已经使用类似的系统多年了。 需要将 package-lock.json 文件提交到您的 Git 仓库中,以便其他人可以获取,如果项目是公开的或您有协作者,或者如果您使用 Git 作为部署的源。 当您运行 npm update 命令时,package-lock.json 文件中的依赖版本将会被更新。 一个示例 以下是在空文件夹中运行 npm install cowsay 后得到的 package-lock.json 文件的示例结构: { "requires": true, "lockfileVersion": 1, "dependencies": { "ansi-regex": { "version": "3....