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-07-30 07:17:41 +02:00
|
|
|
|
Verdaccio是一个可插入式应用程序。它可以通过多种方式扩展,可以是新的认证方法,添加端点或者使用定制存储。
|
2018-05-27 08:07:59 +02:00
|
|
|
|
|
2018-08-01 22:25:11 +02:00
|
|
|
|
> 如果您感兴趣开发自己的插件,请阅读[开发](dev-plugins.md)部分。
|
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-08-17 08:03:53 +02:00
|
|
|
|
This is tecnically possible, making the plugin order important, as the credentials will be resolved in order.
|
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-07-30 07:17:41 +02:00
|
|
|
|
> 您可以跟着[audit middle plugin(审核中间插件)](https://github.com/verdaccio/verdaccio-audit)的基本范例。
|
2018-07-25 07:56:23 +02:00
|
|
|
|
|
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-07-30 07:17:41 +02:00
|
|
|
|
> 如果您定义定制存储,配置文件中的**存储**属性将会被忽略。
|
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-30 07:17:41 +02:00
|
|
|
|
> 所有sinopia 插件都应该和所有verdaccio将来版本兼容。 无论如何,我们鼓励贡献者们迁移到 modern 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进行认证
|
2018-10-03 22:34:22 +02:00
|
|
|
|
* [verdaccio-gitlab-ci](https://github.com/lab360-ch/verdaccio-gitlab-ci): Enable GitLab CI to authenticate against verdaccio.
|
|
|
|
|
* [verdaccio-htpasswd](https://github.com/verdaccio/verdaccio-htpasswd): Auth based on htpasswd file plugin (built-in) for verdaccio
|
|
|
|
|
* [verdaccio-github-oauth](https://github.com/aroundus-inc/verdaccio-github-oauth): Github oauth authentication plugin for verdaccio.
|
|
|
|
|
* [verdaccio-github-oauth-ui](https://github.com/n4bb12/verdaccio-github-oauth-ui): GitHub OAuth plugin for the verdaccio login button.
|
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-30 07:17:41 +02:00
|
|
|
|
> 并不是所有这些插件都被持续测试过,其中有些可能根本无法正常工作。 如果您发现任何问题,请随时通知每个插件的所有者。
|