本文仅是技术验证,记录,交流,不针对任何人。有冒犯的地方,请谅解。 该文首发于https://vsnail.cn/static/doc/blog/verdaccioPlugin.htmlhtml
最近几天用verdaccio
搭建了npm
私服,具体搭建过程能够参见上一篇文章《 NPM 私服搭建》。在使用私服的过程当中,发现权限体系并不能很好的知足我的需求。所以在查阅文档后,本身开发了一个小的权限插件。git
verdaccio
的默认权限体系,使用了htpasswd
做为权限插件。该插件主要是解决"人"的问题,指定权限都是从"人"出发。所以对于分组,这个插件仅提供了$all
,$authenticated
,$anonymous
三个分组。github
由于公司划分了几个业务团队,那么须要按业务团队作一些权限划分,而且人数还比较多。若是按照人来设置,则比较麻烦。所以咱们须要可以按分组来进行权限设置。npm
在翻阅了verdaccio
的官方文档,发现verdaccio
是支持插件的。能够经过重写allow_access
、allow_publish
、allow_unpublish
方法,来实现权限的控制。这三个方法,都须要返回一个方法,而这个方法自动注入了三个参数user
, pkg
, callback
。函数
user
用户信息。包含name
、groups
属性。pkg
包信息。包含name
、action
属性。callback
回调函数。经过权限认证,执行的函数。编写verdaccio
插件有一个特别须要注意的就是发布出来的包名。包名必须为verdaccio-**
.post
verdaccio-simplegroup
插件就像这个插件的名字同样,一个及简单的以'组'的粒度来为verdaccio
提供权限支撑的插件。插件
github
地址:https://github.com/btshj-snail/snail-verdaccio-group
code
npm
包:verdaccio-simplegroup
htm
这里面代码是简单的,所以也再也不表述了。blog
verdaccio-simplegroup
插件参见https://github.com/btshj-snail/snail-verdaccio-group/blob/master/README.md
。