主题
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 Free
特别注意,在将账户转为组织时,需要重命名账户,新账户名必须与组织不同,即保持账户/组织在 npm 系统中的唯一性
步骤2.package.json 中的包名增加 @<your_org_name>
前缀
例如 组织 mrli-utils
下创建 async-pool
包
json
{
"name": "@mrli-utils/asyncpool",
}
步骤3.发布包时增加 --access public
参数
bash
npm publish --access public
最终发布效果