在 npm 上大家经常看到以 @
开头的包,实际上这是一种 public scoped package
,即公开的带有作用域的 npm 包。如果你想在 npm 上免费发布公开包供任何人使用,同时又想以自己用户名或者组织为作用域进行前缀约束,统一管理属于同一作用域的 npm 包,那么请往下看。
tip: 免费的公开作用域包分为 以用户为作用域的
public user scoped package
和 以组织为作用域的public organization scoped package
两种,推荐使用后者,可以在一个账户中创建并管理多个组织作用域。
发布以 用户 为 scope 的公开包
- 1.package.json 中的包名增加
@<your_user_name>
前缀
例如 用户 ultra_bojack 下创建 form-render-mobile
{
"name": "@ultra_bojack/form-render-mobile"
}
- 2.发布包时增加 --access public 参数
npm publish --access public
- 3.最终发布效果
发布以 组织 为 scope 的公开包
-
1.在 npm 账户中创建组织
有两种方式可以创建组织:新建组织 或者 将账户转为组织
-
新建组织,类型为 Unlimited public packages Free
-
将账户转为组织,按步骤修改用户名并选择组织类型为 Unlimited public packages Free
特别注意,在将账户转为组织时,需要重命名账户,新账户名必须与组织不同,即保持账户/组织在 npm 系统中的唯一性
如果出现下图代表账户转换为组织成功,同时账户名也已修改成功;如果没有出现下图,代表失败,即新帐户名已被占用,此时重新重复上述步骤,填写新的账户名,直至成功。
-
- 2.package.json 中的包名增加
@<your_org_name>
前缀
例如 组织 ultra-bojack 下创建 npm-org-test 包
{
"name": "@ultra-bojack/npm-org-test"
}
- 3.发布包时增加 --access public 参数
npm publish --access public
- 4.最终发布效果