# dono-server

> 一个简洁开发服务器

Latest version **1.0.10** (published 2022-05-11) · ISC license · 0 weekly downloads

## Install

```sh
npm install dono-server
pnpm add dono-server
yarn add dono-server
bun add dono-server
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.10 |
| Published | 2022-05-11 |
| First published | 2019-07-20 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 13 |
| Unpacked size | 20.3 KB |
| Known vulnerabilities | 0 (+26 in 2 direct dependencies) |
| Install scripts | no |
| Maintainers | lingy |

## Links

- npm: https://www.npmjs.com/package/dono-server
- npm.io page: https://npm.io/package/dono-server

## Dependencies (13)

- [ejs](https://npm.io/package/ejs.md) ^2.6.1
- [koa](https://npm.io/package/koa.md) ^2.5.2
- [mime](https://npm.io/package/mime.md) ^2.3.1
- [zlib](https://npm.io/package/zlib.md) ^1.0.5
- [axios](https://npm.io/package/axios.md) ^0.18.0
- [ll-data](https://npm.io/package/ll-data.md) 0.0.5
- [fs-extra](https://npm.io/package/fs-extra.md) ^9.0.1
- [koa-proxy](https://npm.io/package/koa-proxy.md) ^0.9.0
- [http-proxy](https://npm.io/package/http-proxy.md) ^1.18.1
- [koa-static](https://npm.io/package/koa-static.md) ^5.0.0
- [selfsigned](https://npm.io/package/selfsigned.md) ^1.10.11
- [@koa/router](https://npm.io/package/@koa/router.md) ^10.0.0
- [koa-bodyparser](https://npm.io/package/koa-bodyparser.md) ^4.3.0

## Recent versions

- 1.0.10 (latest) — 2022-05-11
- 1.0.9 — 2021-07-29
- 1.0.8 — 2021-06-16
- 1.0.7 — 2021-06-10
- 1.0.6 — 2021-06-08
- 1.0.5 — 2021-06-08
- 1.0.4 — 2021-06-03
- 1.0.3 — 2021-05-28
- 1.0.2 — 2021-05-28
- 1.0.1 — 2021-05-28
- 1.0.0 — 2021-05-28
- 0.0.5 — 2019-07-27
- 0.0.4 — 2019-07-20
- 0.0.3 — 2019-07-20
- 0.0.2 — 2019-07-20
- … 1 more at https://npm.io/package/dono-server/versions

## README

#### 配置

| 名称              | 类型   | 说明                                                         | 默认值    | 示例                                                         |
| ----------------- | ------ | ------------------------------------------------------------ | --------- | ------------------------------------------------------------ |
| port              | string | 服务器端口这只                                               | 9000      |                                                              |
| root              | string | 服务器根目录                                                 | __dirname |                                                              |
| engine            | object | 模版渲染引擎，对象里必须包含`render`方法（async函数），方法返回展示的字符串。render方法有两个参数，第一个是模版字符串，第二个是模版接受的数据。默认使用ejs模版引擎 |           | {render: async function(content,data){return content;}}      |
| templateExtension | array  | 模版的扩展名称，非模版扩展名的文件一律作为静态文件处理       | [''.html] |                                                              |
| templateData      | objet  | 模版对应的数据                                               |           | {'/page/index.html':{title: '哈哈哈哈'},'/page/index.html':async function(ctx) {return {title: "嘿嘿嘿嘿"}}} |
| routerData        | object | 请求路由数据                                                 |           | {'/getData':{method:'post',data: async function(param, store, ctx){return param}}} |
| proxy             | object | 代理配置                                                     |           | {'/api':{target:'http://127.0.0.1:9888', pathRewrite: {'/api':''}}} |
| store             | array  | 数据持久化配置                                               |           | [{basePath:__dirname,jsonFile:'data.json'}]                  |
| https | Boolean | 开启https | false | - |


```js
// 使用方法
const PServer = require('dono-server');


const p = new PServer({
    // 端口
    port: '9001',
    // 服务器根目录
    root: __dirname,
    // 渲染引擎，默认是ejs，否则的话，给个带有render方法的对象
    engine: {
        render: async function(content, data) {
            return content;
        }
    },
    // 模版扩展名，非此扩展名的，一律认为是静态文件
    templateExtension: ['.html'],
    // 模版路径对应模版内的数据
    templateData: {
        '/page/index.html': {
            title: '哈哈哈哈'
        },
        '/page/index2.html': async (ctx) => {
            return {
                title: '嘿嘿嘿嘿'
            };
        }
    },
    // 路径-数据配置
    routerData: {
        '/getData': {
            method: 'post',
            data: async function(param, store) {
                return param
            }
        },
        '/a.html': {
            method: 'get',
            data: async function(param, store, ctx) {
                await ctx.render('page/index.html');
            }
        }
    },
    // 代理请求
    proxy: {
        '/api': {
            target: 'http://39.98.40.201:8080/',
            pathRewrite: {
                '/api': ''
            }
        }
    },
    // 数据持久化
    store: [{
        basePath: __dirname,
        jsonFile: 'data.json'
    }]
});


p.store.data.set({
    abc: 'abc'
});
```

---
_Source: https://npm.io/package/dono-server · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
