如何使用新的npm功能发布专用模块?

如何使用新的npm功能发布专用模块?,npm,package.json,Npm,Package.json,在输入账单信息并重新登录我的npm客户端后,我尝试发布一个新的私有模块 我在package.json上设置了“private”:“true”,并使用类似于@myusername/mymodule的范围给出了一个名称。然后我在npm publish上收到一条错误消息,说我必须删除“private”:“true”才能发布我的模块!我做错了什么 我是否应该删除私有atribute并相信我给它一个作用域名称这一简单事实将使它在默认情况下成为私有的 信息:npm v2.7.6 我是否应该删除私有atrib

在输入账单信息并重新登录我的npm客户端后,我尝试发布一个新的私有模块

我在
package.json
上设置了
“private”:“true”
,并使用类似于
@myusername/mymodule
的范围给出了一个名称。然后我在
npm publish
上收到一条错误消息,说我必须删除
“private”:“true”
才能发布我的模块!我做错了什么

我是否应该删除私有atribute并相信我给它一个作用域名称这一简单事实将使它在默认情况下成为私有的

信息:npm v2.7.6

我是否应该删除私有atribute并相信我给它一个作用域名称这一简单事实将使它在默认情况下成为私有的

看起来你这样做应该是安全的

具体而言:

所有作用域包默认为受限访问。这可以确保你不会意外地将某些东西公之于众。您可以在访问页面上更改此设置

“private”:true
与私有包完全不同。发件人:

如果在package.json中设置了
“private”:true
,则npm将拒绝发布它。这是一种防止意外发布的方法

我不认为那是你想要的

npm@2.7.0
,如果您是一名注册会计师,您可以发布到npm注册表

  • 注册一个付费帐户
  • 创建并初始化具有作用域名称的包,例如
    “name”:“@username/module name”
  • 发布您的包。默认情况下,npm假设作用域包是私有的,这是您想要的。但是,如果希望范围包是公共的,可以使用
    --access=public
    选项发布

  • 我尝试过这样做,但即使它说没有名为@user/foo的软件包,我也可以在没有使用我的帐户登录时安装它!将执行更多测试并让您知道您是如何注销的?我猜一旦你运行了
    npm登录
    ,你实际上已经修改了你的
    ~/.npmrc
    ,你需要修改它来模拟为未经身份验证的用户尝试访问私有模块的感觉。查看常见问题部分。是否可以在没有付费帐户的情况下在私人注册表上发布私人软件包?@Fractaliste自2020年起:只能私下发布用户范围或组织范围的软件包。(非范围软件包必须是公共的。)并且要私下发布用户范围的软件包,您必须在NPM上拥有付费帐户。它没有明确说明,但我推断您可以免费私下发布组织范围的包,但前提是您是该组织的成员。更多信息,请阅读上的文档。注:这仅适用于NPM注册表。我不能代表其他登记处说话。