Skip to content

npm发布@开头的公开作用域包

npm上的包有一些是以@开头的, 比如说@babel/core@rollup/plugin-babel等等,这类型的包/前面的部分以@开头,实际上这是一种 public scoped package,即公开的带有作用域的 npm 包,@xxx代表个组织

我们可以在 npm 上免费发布公开包供任何人使用,还可以以自己用户名或者组织为作用域进行前缀约束,统一管理属于同一作用域的 npm 包,具体如下:

免费的公开作用域包分为 以用户为作用域的 public user scoped package 和 以组织为作用域的 public organization scoped package 两种,推荐使用后者,可以在一个账户中创建并管理多个组织作用域。

1. 发布以 用户 为 scope 的公开包

步骤1.package.json 中的name增加 @<your_user_name> 前缀

json
{
  "name": "@fendou/test" // fendou为npm用户名  test为包名
}

步骤2.发布包时增加 --access public 参数

bash
npm publish --access public

2. 发布以 组织 为 scope 的公开包

步骤1.在 npm 账户中创建组织

有两种方式可以创建组织:新建组织 或者 将账户转为组织

方式1. 新建组织 :类型为 Unlimited public packages Free方式2. 将账户转为组织: 按步骤修改用户名并选择组织类型为 Unlimited public packages Freeimage.pngimage.png

特别注意,在将账户转为组织时,需要重命名账户,新账户名必须与组织不同,即保持账户/组织在 npm 系统中的唯一性

步骤2.package.json 中的包名增加 @<your_org_name> 前缀

例如 组织 mrli-utils下创建 async-pool

json
{
  "name": "@mrli-utils/asyncpool",
}

步骤3.发布包时增加 --access public 参数

bash
npm publish --access public

最终发布效果 image.png