2018-01-08 20:45:03 +01:00
|
|
|
|
---
|
|
|
|
|
id: plugins
|
2018-06-23 16:42:14 +02:00
|
|
|
|
title: "插件"
|
2018-01-08 20:45:03 +01:00
|
|
|
|
---
|
2018-06-23 16:42:14 +02:00
|
|
|
|
Verdaccio是一个可插拔的应用程序。它可以通过多种方式进行扩展,例如新的认证方法,添加endpoints,或者使用自定义存储。
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
> If you are interested to develop your own plugin, read the [development](dev-plugins.md) section.
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
## 用法
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
### 安装
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$> npm install --global verdaccio-activedirectory
|
|
|
|
|
```
|
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
作为一个sinopia的分支项目,`verdaccio`和兼容`sinopia@1.4.0`的插件具有向后兼容性。在这种情况下,安装方式相同。
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-05-29 07:32:59 +02:00
|
|
|
|
$> npm install --global sinopia-memory
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
### 配置
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
打开`config.yaml`文件并按如下说明更新`auth`部分:
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
默认配置如下所示,由于在默认情况下我们使用一个内置的`htpasswd`插件,我们可以通过注释下面几行代码来禁用它:
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
### Auth插件配置
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-01-08 20:45:03 +01:00
|
|
|
|
```yaml
|
|
|
|
|
htpasswd:
|
|
|
|
|
file: ./htpasswd
|
|
|
|
|
#max_users: 1000
|
|
|
|
|
```
|
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
如果你决定使用`ldap`插件,将上述部分进行替换。
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
auth:
|
|
|
|
|
activedirectory:
|
|
|
|
|
url: "ldap://10.0.100.1"
|
|
|
|
|
baseDN: 'dc=sample,dc=local'
|
|
|
|
|
domainSuffix: 'sample.local'
|
|
|
|
|
```
|
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
#### 多个Auth插件
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
这在技术上可行,插件的顺序变得非常重要,安全凭据将按顺序获取。
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
auth:
|
|
|
|
|
htpasswd:
|
|
|
|
|
file: ./htpasswd
|
|
|
|
|
#max_users: 1000
|
|
|
|
|
activedirectory:
|
|
|
|
|
url: "ldap://10.0.100.1"
|
|
|
|
|
baseDN: 'dc=sample,dc=local'
|
|
|
|
|
domainSuffix: 'sample.local'
|
|
|
|
|
```
|
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
### 中间件插件配置
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
这是一个如何设置中间件插件的示例。所有的中间件插件必须被定义在**middlewares**命名空间。
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
middlewares:
|
|
|
|
|
audit:
|
|
|
|
|
enabled: true
|
|
|
|
|
```
|
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
### 存储插件配置
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
这是一个如何设置存储插件的示例。所有的存储插件必须在**store**命名空间进行定义。
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
store:
|
|
|
|
|
memory:
|
|
|
|
|
limit: 1000
|
|
|
|
|
```
|
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
> 如果你定义一个自定义存储,配置文件中的**storage**属性将会被忽略。
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
## 旧式插件
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
### Sinopia插件
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
(兼容所有版本)
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-06-23 16:42:14 +02:00
|
|
|
|
* [sinopia-npm](https://www.npmjs.com/package/sinopia-npm):支持npm注册表的sinopia认证插件。
|
2018-07-06 07:11:59 +02:00
|
|
|
|
* [sinopia-memory](https://www.npmjs.com/package/sinopia-memory):在内存中缓存用户的sinopia认证插件。
|
|
|
|
|
* [sinopia-github-oauth-cli](https://www.npmjs.com/package/sinopia-github-oauth-cli)。
|
|
|
|
|
* [sinopia-crowd](https://www.npmjs.com/package/sinopia-crowd):支持atlassian crowd的sinopia认证插件。
|
|
|
|
|
* [sinopia-activedirectory](https://www.npmjs.com/package/sinopia-activedirectory):sinopia Active Directory认证插件。
|
|
|
|
|
* [sinopia-github-oauth](https://www.npmjs.com/package/sinopia-github-oauth):sinopia2的认证插件,支持github oauth web flow。
|
|
|
|
|
* [sinopia-delegated-auth](https://www.npmjs.com/package/sinopia-delegated-auth):将认证代理给另一个HTTP URL的Sinopia认证插件。
|
|
|
|
|
* [sinopia-altldap](https://www.npmjs.com/package/sinopia-altldap):另一个Sinopia LDAP认证插件
|
|
|
|
|
* [sinopia-request](https://www.npmjs.com/package/sinopia-request):一个简单易用且功能齐全的认证插件,可以通过配置使用外部API。
|
|
|
|
|
* [sinopia-htaccess-gpg-email](https://www.npmjs.com/package/sinopia-htaccess-gpg-email):使用htaccess格式生成密码,通过GPG加密并通过MailGun API发送给用户。
|
|
|
|
|
* [sinopia-mongodb](https://www.npmjs.com/package/sinopia-mongodb):一个易用且功能齐全的认证插件,可通过配置使用mongodb数据库。
|
|
|
|
|
* [sinopia-htpasswd](https://www.npmjs.com/package/sinopia-htpasswd):支持htpasswd格式的sinopia认证插件。
|
|
|
|
|
* [sinopia-leveldb](https://www.npmjs.com/package/sinopia-leveldb):针对Sinopia private npm的基于leveldb的Sinopia认证插件。
|
|
|
|
|
* [sinopia-gitlabheres](https://www.npmjs.com/package/sinopia-gitlabheres):sinopia Gitlab认证插件。
|
|
|
|
|
* [sinopia-gitlab](https://www.npmjs.com/package/sinopia-gitlab):sinopia Gitlab认证插件。
|
|
|
|
|
* [sinopia-ldap](https://www.npmjs.com/package/sinopia-ldap):sinopia LDAP认证插件。
|
|
|
|
|
* [sinopia-github-oauth-env](https://www.npmjs.com/package/sinopia-github-oauth-env):基于github oauth web flow的Sinopia认证插件。
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
> 所有的sinopia插件都应该和verdaccio的未来版本兼容。 无论如何,我们鼓励贡献者将它们迁移到最新的verdaccio API并且使用*verdaccio-xx-name*格式的前缀。
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
## Verdaccio插件
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
(兼容2.1.x及以后版本)
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
### 授权插件
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
* [verdaccio-bitbucket](https://github.com/idangozlan/verdaccio-bitbucket):verdaccio Bitbucket认证插件。
|
|
|
|
|
* [verdaccio-ldap](https://www.npmjs.com/package/verdaccio-ldap):verdaccio LDAP认证插件。
|
|
|
|
|
* [verdaccio-active-directory](https://github.com/nowhammies/verdaccio-activedirectory):verdaccio Active Directory认证插件
|
|
|
|
|
* [verdaccio-gitlab](https://github.com/bufferoverflow/verdaccio-gitlab):使用Gitlab的Personal Access Token进行认证
|
|
|
|
|
* [verdaccio-htpasswd](https://github.com/verdaccio/verdaccio-htpasswd):基于(内置)htpasswd文件插件的verdaccio认证插件
|
2018-07-17 10:41:31 +02:00
|
|
|
|
* [verdaccio-github-oauth](https://github.com/aroundus-inc/verdaccio-github-oauth): Github oauth authentication plugin for verdaccio.
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
### 中间件插件
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
* [verdaccio-audit](https://github.com/verdaccio/verdaccio-audit):支持*npm audit* cli的verdaccio插件(内置) (自3.x版本后兼容)
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
* [verdaccio-profile-api](https://github.com/ahoracek/verdaccio-profile-api):该插件支持*npm profile*cli,以及针对基于*verdaccio-htpasswd*认证的*npm profile set password*插件。
|
2018-06-08 07:07:51 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
### 存储插件
|
2018-03-29 08:09:59 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
(兼容自3.x及以后版本)
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
* [verdaccio-memory](https://github.com/verdaccio/verdaccio-memory)在内存中装载包的存储插件
|
|
|
|
|
* [verdaccio-s3-storage](https://github.com/remitly/verdaccio-s3-storage)在**Amazon S3**中存储包的存储插件
|
|
|
|
|
* [verdaccio-google-cloud](https://github.com/verdaccio/verdaccio-google-cloud)在**Google Cloud Storage**中存储包的存储插件
|
2018-03-29 08:09:59 +02:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
## 警告
|
2018-01-08 20:45:03 +01:00
|
|
|
|
|
2018-07-06 07:11:59 +02:00
|
|
|
|
> 并不是所有这些插件都被持续测试过,其中有些可能不能正常工作。如果你发现任何问题,请和插件的所有者联系。
|