npm 每个注册用户的Verdaccio私有软件包

mspsb9vt  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(197)

我希望为每个客户端托管一个npm包,并将这些包发布到一个私有的Verdaccio示例中。我还希望ClientA只能访问包A,而不能访问ClientB的包。
"我该怎么做"
我目前的计划是在每次获得新客户端时编辑配置文件,然后重新启动服务器。

packages:
  "@my-repo/client-a-*":
    access: admin client-a
    publish: admin

然后,我得到ClientB,并将文件编辑为如下所示,然后重新启动服务器:

packages:
  "@my-repo/client-a-*":
    access: admin client-a
    publish: admin
  "@my-repo/client-b-*":
    access: admin client-b
    publish: admin

我认为这将允许客户端A对客户端a的包具有只读访问权限,然后客户端B将对客户端b的包具有只读访问权限。您认为这可行吗?Edit:我确认上述方法确实有效,但这是一种繁琐的手动解决方案。
好的-现在,我可以用regex来简化这个过程吗?我可以用组名或regex来匹配客户端名称和它们的包目录吗?它可能看起来像这样(* 下面的配置是猜测 *):

packages:
  "@my-repo/$userId-*":
    access: admin $userId
    publish: admin

所以,在这个规则中$userId作为一个变量,它将导致每个注册用户只能访问以他们自己的用户名前缀发布的包。这可能吗?我该怎么做?

编辑:不可能。请参阅下面的答案。

tvz2xvvm

tvz2xvvm1#

不支持将多个用户分组到一个“组”中,根据核心维护者本人的此主题和评论(2018年9月):
这是不可能的方式,目前,用户===组。所以,你必须定义所有用户都允许在每个部分(访问,发布)。
然而,似乎至少有一小部分开发人员已经在寻找这种类型的解决方案:

因此,我只需要繁琐地编辑配置文件来添加/删除用户和包。幸运的是,Docker使重新启动服务变得非常容易。

相关问题