Skip to content

Latest commit

 

History

History
110 lines (74 loc) · 2.1 KB

How-To-Write-A-Dora-Plugin.md

File metadata and controls

110 lines (74 loc) · 2.1 KB

如何写 Dora 插件

入门

下面的例子演示如何通过增加中间件来记录请求。

module.exports = {
  name: 'log',
  middleware: function() {
    return function *(next) {
      console.log(this.method + ':' + this.url);
      yield next;
    }
  },
};

更多例子:

异步插件

异步插件编写有两种方式:Promisegenerator

Promise

module.exports = {
  'server.after': function() {
    return new Promise(function(resolve) {
      startLivereloadServer(resolve);
    });
  }
}

generator

module.exports = {
  'server.after': *function() {
    yield new Promise(function(resolve, reject) {
      startLiverealodServer(function() {
        resolve();
      });
    });
  }
};

插件方法

middleware.before

middleware

middleware.after

server.before

server.after

process.exit

插件上下文

这里的接口都可以通过 this 访问到。

port

Dora 服务器端口,默认 8000 。

cwd

当前路径,通常是项目根目录。

set(key, value)

函数,用于设置数据。

get(key)

函数,用于获取数据。

app

Koa app 实例。

server

HTTP Server 实例。只在 server.beforeserver.after 方法中有效。

log

类型为 Object,包含 4 个方法:debug, info, warn, error

query

类型为 Object,插件的查询参数。

比如执行命令 dora --plugins proxy?port=9000&verbose,那么 proxy 插件的查询参数是 {port:9000,verbose:true}

内部数据

__ready

__server_listen_log