我想将我的包发布到npm。我得到的错误是:包名称与现有包太相似
403 Forbidden - PUT https://registry.npmjs.org/mypack.... - Package name too similar to existing packages; try renaming your package to '@user../mypackage...' and publishing with 'npm publish --access=public' instead
但是当我尝试安装时:
npm I mypackage...
我得到错误没有找到:
npm ERR! 404 Not Found - GET https://registry.npmjs.org/mypackage... - Not found
有没有一种方法可以检查这个名字是否适合npm,而不仅仅是猜测?因为发布后无法删除程序包。。
要检查类似的名称,可以使用验证名称:
安装:
$ npm install -g validate-name
使用:
$ validate-npm-name my-module
$ validate-npm-name my-package --max-age 1440
它的作用:
此命令检查npm注册表中是否存在类似的名称。
在第一次使用时,它会下载模块名称的完整列表(截至本文撰写之时约为150MB(以检查相似性。后续的下载量要小得多,因为它只下载自上次下载以来的更新。
我按照@RobC在OP评论中建议的脚本创建了这个模块。它是开源的(MIT(。
正如原始脚本中所描述的,这是一种最大的努力,因为npm没有正式记录相似性规则。
此行为已在npm博客上记录在新包Moniker规则下:
我们最近对包命名的工作方式进行了一些更改,以更好地对抗拼写错误,并帮助包作者选择突出的名称。
如果您正在发布一个新的包,也就是说,一个以前没有在注册表中的包,我们会从其名称中删除标点符号,并将其与现有的包名称进行比较如果名称相同且没有标点符号,则不允许创建包。
由于
react-native
的存在,没有人可以发布像这样的变体
reactnative
react_native
react.native