npm 包 lockfile 使用教程

阅读时长 4 分钟读完

当我们使用 npm 安装依赖的时候,npm 会将所有依赖的包下载到本地,并生成 package-lock.json 文件。这个文件用于锁定依赖包的版本号,以确保在不同环境下安装的依赖版本一致。

什么是 lockfile?

lockfile 是一个用于锁定依赖包版本的文件。在 npm 中,我们通常会生成 package-lock.json 文件来记录项目的依赖关系和版本信息。该文件会被提交到版本控制系统中,以确保在不同环境下安装的依赖版本一致。在 npm 5 之前,npm 使用的是 shrinkwrap 算法来锁定依赖版本,但它具有一些缺点,如不能处理 peerDependencies 和 optionalDependencies 等情况,因此 npm 5 引入了 lockfile。

如何使用 lockfile?

生成 lockfile

npm 会自动在安装完依赖后生成 package-lock.json 文件。如果没有生成,可以通过命令手动生成:

这个命令将只生成 package-lock.json,而不会安装任何依赖。

安装依赖

当我们需要安装项目的依赖时,只需运行以下命令即可:

这个命令会根据项目中的 package-lock.json 文件安装依赖,以保证依赖的版本与上次安装时一致。如果没有 package-lock.json 文件,则会报错。

相对于 npm install 命令而言,npm ci 有以下优势:

  • 更快:npm ci 不需要执行依赖图的解析和依赖冲突的检测,它只会根据 lockfile 中的信息来直接安装依赖。
  • 更安全:npm ci 只会在 lockfile 中指定的版本范围内安装依赖,因此不会出现意外安装不兼容的依赖包的情况。

修改 lockfile

当我们手动更改了项目中的依赖版本时,需要重新生成 package-lock.json 文件。

这个命令将重新生成 package-lock.json 文件,并将它更新到最新的依赖版本。

package.json 和 package-lock.json 的区别

  • package.json:用于描述项目的元数据、依赖关系和自定义脚本等信息。
  • package-lock.json:用于锁定项目的依赖版本,在不同环境下安装的依赖版本一致。

示例代码

以下是一个简单的示例,演示如何使用 lockfile。

  1. 创建一个新的项目
  1. 安装依赖
  1. 查看 package-lock.json
-- -------------------- ---- -------
-
  ------- -------------
  ---------- --------
  ------------------ --
  ----------- -----
  --------------- -
    ---------- -
      ---------- --------
      ----------- ---------------------------------------------------------
      ------------ ------------------------------------
      ----------- -
        ------------- ----------
        ------------- -------
      -
    --
    ---
  -
-
  1. 修改依赖版本

在 package.json 中将 express 的版本从 4.17.1 修改为 4.16.4。

纠错
反馈