我想将一个普通的公共包发布到npm.当我这样做时,npm publish我得到:
npm ERR! publish Failed PUT 400
npm ERR! code E400
npm ERR! unscoped packages cannot be private : my-package
Run Code Online (Sandbox Code Playgroud)
mb2*_*b21 76
看来(截至2018年11月),您必须这样做:
npm publish --access public
Run Code Online (Sandbox Code Playgroud)
这告诉npm注册表您希望每个人都可以下载您的包.这曾经是默认的,从文档仍然应该是,所以这可能只是npm中的一个错误.关于作用域/未作用域和公共/私有包的文档还有一些不太好的文档.
--access您可以将设置添加到您的设置中,而不是使用,package.json如下面@ smnbbrv的答案中所示.但是,如果我是对的,这只是一个错误,您可能只想--access用作临时解决方法.
有了@ mb21和他的解决方案的所有学分,他的答案还有一点点补充.
提议
npm publish --access public
Run Code Online (Sandbox Code Playgroud)
工作得很好.但是,并不总是能够使其在CI环境中工作,例如,当您使用语义释放时.正确的解决方案是使用相同的access参数,但在你package.json的内部publishConfig(顺便说一下,这也使得以后手动发布更容易):
{
"name": "...",
...
"publishConfig": {
"access": "public"
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以在CI工具中使用它或简单地使用它
npm publish
Run Code Online (Sandbox Code Playgroud)
我花了一些时间来解决这个问题,所以我希望它为未来的读者节省一些时间.
| 归档时间: |
|
| 查看次数: |
2097 次 |
| 最近记录: |