当你开始写一个开源项目时总是要考虑有没有 github / npm / domain ... 各类命名冲突,如果你需要发布在 NPM 上那就更困难了,因为在 NPM 初期有很多人创建了非常多的包仅仅是为了占位,现在看来仍旧有一大批简短、语义化的包名被占据连续六七年没有任何更新, 比如 fish ok command 等等。现在你可以通过一些 NPM 争议政策来要求将包的所有权转移给你,因为这些占位包对社区并没有价值。

我通过邮件获取了几个很酷的包名 done,处理时间约在 1 - 4 周,时间取决于包的所有者是否有回复。即便当前包所有者的邮箱已经不再使用,没有任何回复,只需要你的申请得当,NPM 工作人员还是会在 4 周后自动将包的 owner 设置为你的用户名。

哪些申请可能被接受

并非所有的包都能可以被申请转移,比如拥有较多下载量或依赖量的包。符合以下几种条件会被视为可转移的包:

怎样申请

  1. 首先运行 npm owner ls <pkgname> 获取当前包所有者的公开邮件地址
  2. 发送邮件至 包的所有者并且抄送 support@npmjs.com

按照 "npm disputes" 的说明,要求转移的邮件内容必须要 足够的友善 ,至少要包括 package 可能违反的条约、可以转移的原因 (如无维护无贡献)、包的名称以及你的 npm username。这里最好使用 NPM 的通知邮箱发送,便于 NPM 工作人员查询你的账号与发布记录。

需要注意的是,如果你想要转移的 "npm package" 存在商标版权侵犯或者是占位问题,NPM 工作人员将立刻处理,这不在上述的 4 周流程之类。即便是备作未来使用也会被视为占位,在 NPM 的包管理中,处理占位将是第一优先级。但是 NPM 并不会主动去扫描所有的包识别占位问题,除非你申请解决。(主动扫描只会迫使占位用户去发布一些假内容)

根据我的经验,大部分开发者在面对不再维护或占位的包名时都是乐意转让的,但这也可能被拒绝(试想别人邮件你要求包名时),如果被明确的拒绝同时也非占座和版权商标侵犯问题,你应该都得不到这个包名了 (建议发邮件时保持礼貌。)。

关于组织与用户名

组织 (Organization) 有些特别,因为在 NPM 中默认是不展示组织的私有包的,所以你无法判断这个组织是否有私有包还是简单的占座。想要请求转移组织必须要直接联系 support@npmjs.com 并提供组织名,NPM 会帮助你与组织的所有者沟通。这里也遵循 4 周规则 (即无答复 4 周自动转移)。

用户名理论上与组织名可以采用相同的申请方式,但据我所知,好像并没有申请成功的案例。NPM 也说明转移用户名是 "几乎不可能的"。

关于举报

请不要因为占位或内容不符在 package page 上点击 report。这是用于报告包本身的安全内容问题。如果因为包含违反当地法律、不合适的内容、侵权等等,可以尝试举报滥用: abuse@npmjs.com 。(注册与你的包名非常非常相近的名称,有意误导也可以算作此类)