轻松拿捏npm包测试发布的核心知识

49 阅读4分钟

image.png

在前端开发的广袤天地中,npm(Node Package Manager)宛如一座巨大的宝藏库,为开发者们提供了数以百万计的代码包,极大地提升了开发效率,推动着项目的快速迭代。无论是简单的工具函数,还是复杂的框架与库,npm 包都扮演着不可或缺的角色。然而,对于许多开发者,尤其是新手而言,如何创建一个规范的 npm 包,以及怎样对其进行有效的测试并成功发布到 npm 平台,却常常是一道难以跨越的门槛。本文将深入剖析 npm 包的核心概念,详细梳理其测试与发布的完整流程,助力开发者们轻松掌握这一关键技能。

标准版本号(Major.Minor.Patch)

package.json 中的 version 字段遵循语义化版本控制(Semantic Versioning,简称 SemVer)规范,格式为 MAJOR.MINOR.PATCH,各部分含义如下:

  • MAJOR(主版本号) :当你进行了不兼容的 API 修改时(破坏性改动时),主版本号递增。例如,从 1.x.x 升级到 2.x.x 可能意味着某些旧的 API 不再可用,需要用户进行相应的代码调整。
  • MINOR(次版本号) :当你以向后兼容的方式添加了新功能时,次版本号递增。比如从 1.0.x 升级到 1.1.x,原有的 API 仍然可以正常使用,只是新增了一些功能。
  • PATCH(修订号) :当你进行了向后兼容的 bug 修复时,修订号递增。像从 1.0.0 升级到 1.0.1 通常是修复了一些小问题。

版本指定方式

  • 精确版本
  • 通配版本
    • 格式*""x 这些表示法都表示可以接受任何版本.
    • * 等价于 >=0.0.0
    • "" 等价于 *
    • 1.x 等价于 >=1.0.0 <2.0.0
    • 1.2.x 等价于 >=1.2.0 <1.3.0
  • 范围版本
    • 格式^1.2.3, 允许更新到最新的次要版本和补丁版本,但不包括主要版本。
    • ^1.2.3 等价于 >=1.2.3 <2.0.0 (即1.x.y, x>=2)
    • ^0.1.3 等价于 >=0.1.3 <1.0.0 (即0.x.y, x>=1)
  • 修订版本
    • 格式~1.2.3 允许更新到最新的补丁版本,但不允许更新到次要版本。
    • ~1.2.3 等价于 >=1.2.3 <1.3.0 (即1.2.x, x>=3)
    • ~1.2.0 等价于 >=1.2.0 <1.3.0 (即1.2.x)
{
    "dependencies": {
        "react": "18.3.4", // 精确版本
        "loadsh": "*", // 通配版本
        "vue": "^1.2.3", // 范围版本
        "axios": "~1.2.3" // 修订版本
    }
}

版本号变更的常规流程

  1. 内部测试版 alpha

    • 0.0.1-alpha.0
    • 0.0.1-alpha.1
  2. 公开测试版 beta

    • 0.0.1-beta.0
    • 0.0.1-beta.1
  3. 发布候选版 rc

    • 0.0.1-rc.0
    • 0.0.1-rc.1
  4. 正式版

    • 0.0.1
    • 0.0.2

版本由开发到发布的顺序为: 0.0.1-alpha.0 -> 0.0.1-beta.0 -> 0.0.1-rc.0 -> 0.0.1

如何快速更新版本号

以下命定执行一次,对应版本号会递增。

  • 更新主版本 npm version major
  • 更新次版本 npm version minor
  • 更新修订版本 npm version patch
  • 更新alpha版本 npm version prepatch --preid=alpha
  • 更新beta版本 npm version prepatch --preid=beta

版本标签tag

在 npm 生态系统里,版本标签(tag)是一项非常实用的功能,它允许开发者对发布的包进行分类和标记,从而方便用户根据不同的需求安装特定版本的包。

发布正式版本

npm publish

当你执行 npm publish 命令且不添加 --tag 选项时,发布的包会被标记为 latestlatest 标签通常代表着包的最新稳定版本

发布 alphabeta 版本
npm publish --tag alpha
npm publish --tag beta
安装最新包
  • 安装最新正式版 npm install your-package@latest
  • 安装最新alpha版 npm install your-package@alpha
  • 安装最新beta版 npm install your-package@beta

⚠️注意 发布测试包一定要添加tag,否则测试版本会被当作最新的正式版本。

本地调试 npm 包

添加链接

首先,我们需要在包项目中启用链接,这一步是为了将本地的包注册到全局环境中,在 npm-package 目录下,打开终端,执行以下命令:

npm link
#
yarn link
#
pnpm link --global

执行上述命令后,npm-package 就被注册到了全局环境中。接下来,我们要在使用该包的项目中进行链接操作。在 my - app 目录下,同样打开终端,执行以下命令:

npm link npm-package
#
yarn link npm-package
#
pnpm link --global npm-package

通过这一步,my-app 项目就可以直接引用本地的 npm-package 包了。这样,当我们在 npm-package 中进行代码修改时,my-app 项目会立即感知到这些变化,方便我们进行调试。

移除链接

当我们完成调试,或者不再需要使用本地的 npm-package 包时,就需要解除链接。在 my-app 目录下,打开终端,执行以下命令:

npm unlink npm-package
# 
yarn unlink npm-package
# 
pnpm unlink --global npm-package

这一步操作会将 my-app 项目与本地的 npm-package 包的链接解除。然后,我们还需要在包项目中解除全局链接,在 npm-package 目录下,执行以下命令:

npm unlink
#
yarn unlink
#
pnpm unlink --global

通过这两步操作,就完全解除了本地调试时建立的链接,项目会恢复到使用 npm 注册表中正式发布的包的状态。