我想向npm发布一个普通的公共软件包。当我做npm publish
时,我得到:
npm ERR! publish Failed PUT 400
npm ERR! code E400
npm ERR! unscoped packages cannot be private : my-package
答案 0 :(得分:76)
看来(截至2018年11月),您必须这样做:
npm publish --access public
这告诉npm注册表您希望每个人都可以下载您的软件包。这曾经是默认设置,从documentation开始仍然是默认设置,所以可能这只是npm中的一个错误。关于documentation还有更多scoped/unscoped and public/private packages写得不好的东西。
除了使用--access
,您还可以将设置添加到package.json
中,如下面@smnbbrv的回答所示。但是,如果我是对的,那只是一个错误,那么您可能只想使用--access
作为临时解决方法。
答案 1 :(得分:6)
在@ mb21的所有功劳及其解决方案的基础上,他的回答也做了一点补充。
建议
npm publish --access public
完美运行。但是,并非总是可能使其在CI环境中工作,例如当您使用semantic-release时。正确的解决方案是使用相同的access
参数,但要在package.json
的{{1}}内部使用(顺便说一句,这也使以后更容易手动发布):
publishConfig
现在您可以在CI工具中使用它,也可以简单地
{
"name": "...",
...
"publishConfig": {
"access": "public"
}
}
我花了一些时间来解决这个问题,所以我希望它为将来的读者节省一些时间。