npm publish给出“不受范围限制的软件包不能是私有的”

时间:2018-11-21 21:33:15

标签: npm

我想向npm发布一个普通的公共软件包。当我做npm publish时,我得到:

npm ERR! publish Failed PUT 400
npm ERR! code E400
npm ERR! unscoped packages cannot be private : my-package

2 个答案:

答案 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"
  }
}

我花了一些时间来解决这个问题,所以我希望它为将来的读者节省一些时间。