npm包的命名规则
在 npm 中,包的命名遵循一定的规则和约定。
第一部分 包名
1. 基本命名规则
长度:包名长度不能超过 214 个字符。(无聊或傻瓜才会花时间去试验到底可以取多长的名)
包名长度不能超过214个字符,包括@、作用域、/、具体的包名,但不包括@版本号部分。比如:@shi/pack1,包名长度为10。
字符范围:
(1)只能包含小写字母(a-z)、数字(0-9)、连字符(-)、点(.)和下划线(_)。
(2)不能以点(.)或下划线(_)开头。
(3)不能包含大写字母。
(4)唯一性:包名在 npm 仓库中必须是唯一的。如果某个包名已经被占用,你需要选择另一个名字。
(5)遵循npm 社区规范。
2. 命名格式
(1)普通包名
通常使用小写字母和连字符,例如:express、react-dom、lodash等。
(2)作用域包名(Scoped Packages)
格式为:@scope/package-name。
作用域包名用于将包分组,通常用于组织或公司内部的项目。例如:@babel/core、@angular/cli、@myorg/mypackage等。
不同作用域可以存在相同名称的具体包名。
发布作用域包:默认情况下,作用域包是私有的。如果你希望公开发布,需要在 package.json 中设置 "publishConfig": { "access": "public" }。
第二部分 版本号
1. 版本号格式
npm 使用语义化版本控制(Semantic Versioning,简称 SemVer)来定义版本号。一个标准的版本号格式为:
主版本号.次版本号.修订号,例如 1.2.3。
- 主版本号(Major):当进行了不兼容的 API 更改时递增。例如:1.0.0 -> 2.0.0。
- 次版本号(Minor):当新增了向下兼容的功能时递增。例如:1.0.0 -> 1.1.0。
- 修订号(Patch):当修复了向下兼容的问题时递增。例如:1.0.0 -> 1.0.1。
此外,版本号还可以包含预发布版本和构建元数据:
- 预发布版本:例如 1.0.0-beta.1。
- 构建元数据:例如 1.0.0+20231001。
2. 版本号的使用
在 npm 中,版本号可以通过以下几种方式指定:
(1)精确版本
指定一个确切的版本号,例如:
npm install package-name@1.2.3,安装 package-name 的 1.2.3 版本。这种方式会锁定版本,确保每次安装都是相同的版本。
(2)版本范围
指定一个版本范围,npm 会安装符合条件的最新版本。常见的范围语法包括:
- ^(兼容版本):允许次版本号和修订号更新。例如:^1.2.3 表示 >=1.2.3 <2.0.0。
- ~(近似版本):允许修订号更新。例如:~1.2.3 表示 >=1.2.3 <1.3.0。
- >、<、>=、<=:指定版本的上限或下限。例如:>=1.2.3 <2.0.0。
(3)特殊标签
npm 支持一些特殊的标签来指定版本:
- latest:默认标签,指向最新的稳定版本。例如:npm install package-name@latest。
- next:指向预发布版本或测试版本。例如:npm install package-name@next。
- beta、alpha、rc:指向特定的预发布版本。例如:npm install package-name@beta。
(4)通配符
- *:匹配任何版本。例如:1.x 表示 >=1.0.0 <2.0.0。
- x:用于替换版本号的某一部分。例如:1.2.x 表示 >=1.2.0 <1.3.0。
3. latest 标签
latest 是 npm 包的默认标签,指向最新的稳定版本。
当你运行 npm install package-name 时,npm 会安装 latest 标签指向的版本。
可以通过以下命令查看 latest 标签指向的版本,比如vite包:
npm view create-vite
npm view create-vite dist-tags.latest
4. next 标签
next 通常用于指向预发布版本或测试版本。
5. 版本号的管理
package.json 中的版本号:
在 package.json 中,版本号通常以范围的形式指定,例如:
"dependencies": {
"package-name": "^1.2.3"
}
这样可以确保在安装依赖时,npm 会选择兼容的最新版本。
锁定文件(package-lock.json 或 yarn.lock):锁定文件会记录确切的版本号,确保每次安装的依赖版本一致。
第三部分 作用域包的完整格式
@作用域/包名@版本号
作用域:以 @ 开头,通常用于组织或公司内部的包管理。
包名:符合 npm 命名规则的包名称。
版本号:可以是具体的版本号、版本范围、特殊标签(如 latest、next)或通配符。
npm install @babel/core@7.15.0
npm install @babel/core@latest
npm install @babel/core@next
npm install @babel/core@^7.0.0
注意:版本号的优先级
如果同时指定了版本号和标签(如 latest),npm 会优先使用版本号。例如:npm install lodash@4.17.21@latest 会安装 4.17.21 版本,而不是 latest 标签指向的版本。

详解npm包的命名规则:@作用域/包名@版本号
浙公网安备 33010602011771号