# ykit-config-mock

> ykit mock plugin

Latest version **1.1.5** (published 2017-12-19) · MIT license · 0 weekly downloads

## Install

```sh
npm install ykit-config-mock
pnpm add ykit-config-mock
yarn add ykit-config-mock
bun add ykit-config-mock
```

## 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.1.5 |
| Published | 2017-12-19 |
| First published | 2017-06-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 10 |
| Known vulnerabilities | 0 (+3 in 3 direct dependencies) |
| Install scripts | no |
| GitHub stars | 3 |
| Author | heiwu805@hotmail.com |
| Maintainers | ymfe |
| Keywords | ykit, mock |

## Links

- npm: https://www.npmjs.com/package/ykit-config-mock
- Repository: https://github.com/roscoe054/ykit-config-mock
- Homepage: https://github.com/roscoe054/ykit-config-mock#readme
- Issues: https://github.com/roscoe054/ykit-config-mock/issues
- npm.io page: https://npm.io/package/ykit-config-mock

## Dependencies (10)

- [json5](https://npm.io/package/json5.md) ^0.5.1
- [extend](https://npm.io/package/extend.md) ^3.0.1
- [mockjs](https://npm.io/package/mockjs.md) ^1.0.1-beta3
- [watchr](https://npm.io/package/watchr.md) ^3.0.1
- [request](https://npm.io/package/request.md) ^2.81.0
- [valid-url](https://npm.io/package/valid-url.md) ^1.0.9
- [body-parser](https://npm.io/package/body-parser.md) ^1.17.2
- [connect-query](https://npm.io/package/connect-query.md) ^1.0.0
- [cookie-parser](https://npm.io/package/cookie-parser.md) ^1.4.3
- [semver-compare](https://npm.io/package/semver-compare.md) ^1.0.0

## Alternatives

- [pagerjs](https://npm.io/package/pagerjs.md) — 60 weekly downloads
- [whistle.savefor-mock](https://npm.io/package/whistle.savefor-mock.md) — 4 weekly downloads
- [@availity/mock-server](https://npm.io/package/@availity/mock-server.md) — 0 weekly downloads
- [@scotthuang/agent-knock-knock-pi](https://npm.io/package/@scotthuang/agent-knock-knock-pi.md) — 0 weekly downloads
- [@typestrong/ts-mockito](https://npm.io/package/@typestrong/ts-mockito.md) — 0 weekly downloads

## Recent versions

- 1.1.5 (latest) — 2017-12-19
- 1.1.4 — 2017-12-04
- 1.1.3 — 2017-12-04
- 1.1.2 — 2017-12-04
- 1.1.1 — 2017-10-30
- 1.1.0 — 2017-10-27
- 1.0.6 — 2017-09-21
- 1.0.5 — 2017-09-21
- 1.0.4 — 2017-09-21
- 1.0.3 — 2017-09-21
- 1.0.2 — 2017-09-19
- 1.0.1 — 2017-09-07
- 1.0.0 — 2017-09-07
- 0.3.2 — 2017-08-07
- 0.3.1 — 2017-07-31
- … 9 more at https://npm.io/package/ykit-config-mock/versions

## README

# ykit-config-mock

需要 ykit 版本 >= 0.5.0

## Features

- 模拟接口数据，支持[动态 Mock 数据语法][1]
- 兼容 FEKit mock 和 Jerry mock

## 安装

在项目中执行：

```
$ npm install ykit-config-mock --save
```

编辑 `ykit.js`，引入插件：

```
module.exports = {
    plugins: ['mock']
    // ...
};
```

或者如果需要添加插件的选项，也可以传入一个对象：

```javascript
module.exports = {
    plugins: [{
        name: 'mock',
        options: {
            // 插件选项
        }
    }]
    // ...
};
```

## 如何配置 mock 规则

在项目根目录下创建 `mock.js`:

```javascript
module.exports = [
	{
        pattern: /\/testA\.com\/(.*)\.do/, // 匹配一类接口，如 /test.com/list.do -> ./mockData/list.json
        responder: './mockData/$1.json'
    },
	{
        pattern: /\/testB\.com\/person\.do/, // 直接返回数据
        responder: {id: 'abc'}
    },
	{
        pattern: '/testC.com/query.do', // pattern 为字符串
        responder: {id: 'abc'}
    }
];
```

### 动态数据

可以通过定义数据模板来返回动态 mock 数据，具体规则[查看这里][2]。

```javascript
{
    pattern: '/test.com/query.do',
    responder: {
        "array|1-10": [
            "Mock.js"
        ]
    }
}

// 返回数据：
// {
//   "array": [
//     "Mock.js",
//     "Mock.js",
//     "Mock.js",
//     "Mock.js"
//   ]
// }
```

### 获取远程数据(Map Remote)

将接口转到远端来获取数据。

```javascript
{
    pattern: '/test.com/query.do',
    responder: 'http://yapi.corp.qunar.com/mock/58/getItems'
}
```

这意味着也可以用它来做类似 Map Remote 的功能：

```javascript
{
    // 添加了 .json 后缀是为了防止 .js 等资源也被 Mock 服务处理。
    pattern: /\/(.*)\.json/,
    responder: 'http://yapi.corp.qunar.com/$1.json'
}
```

上面通过正则匹配，将所有接口转到 http://yapi.corp.qunar.com 上，比如 `http://localhost/getItems.json` 会成为 `http://yapi.corp.qunar.com/getItems.json`

### 通过函数处理返回

```javascript
{
    pattern: '/test.com/query.do',
    responder: function(req, res) { // 两个参数，req 为请求对象，res 为返回对象
        // 这里可以有更多其他的处理过程
        // 从 req 中可以获取 req.cookies\req.query\req.body 等
        res.end(JSON.stringify({
            "ret": true,
            "data": {
                "name": "Li Lei",
                "email": "lilei@test.com",
                "registerDateTime": "2020-10-01 22:11:11"
            }
        }))
    }
}
```

### jsonp

```javascript
{
    pattern: '/api/list.json',
    responder: './data/listData.json',
    jsonp: 'jsCallback' // jsonp 请求的回调函数名，默认为 "callback"
}
```

## options

mock 插件会自动寻找项目根目录下的 mock.js 或者 mock.json，你也可以通过 options 手动指定一个 mock 配置的路径：

```javascript
module.exports = {
    plugins: [{
        name: 'mock',
        options: {
            confPath: './src/mock/mockconf.js'
        }
    }],
    // ...
};
```

## 关闭 mock

启动 ykit server 时追加参数即可：

```
$ sudo ykit s mock=false
```

## 示例
https://github.com/roscoe054/ykit-starter-mock

[1]: https://github.com/nuysoft/Mock/wiki/Syntax-Specification
[2]: http://mockjs.com/examples.html

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