{"id":16173431,"url":"https://github.com/chandq/mock-service-cli","last_synced_at":"2026-03-15T13:01:46.564Z","repository":{"id":49383507,"uuid":"419695786","full_name":"chandq/mock-service-cli","owner":"chandq","description":"内置 Http Server、Mock Server、SPA Server、Http request proxy 等功能集。持久化接口数据、记录日志，socket通信","archived":false,"fork":false,"pushed_at":"2024-07-06T14:06:48.000Z","size":2822,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-16T05:32:13.233Z","etag":null,"topics":["api","cli","expressjs","mock","mock-server","mockjs","nodejs","proxy-server","socket-io","webserver","websocket"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chandq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-21T11:30:25.000Z","updated_at":"2024-07-06T14:06:51.000Z","dependencies_parsed_at":"2024-07-06T15:27:13.870Z","dependency_job_id":"c27537cc-f5ee-4123-872c-13d6dfb51218","html_url":"https://github.com/chandq/mock-service-cli","commit_stats":{"total_commits":110,"total_committers":2,"mean_commits":55.0,"dds":"0.018181818181818188","last_synced_commit":"8dee3da60fb727aa5c51763edc64a5ee3f840829"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chandq%2Fmock-service-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chandq%2Fmock-service-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chandq%2Fmock-service-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chandq%2Fmock-service-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chandq","download_url":"https://codeload.github.com/chandq/mock-service-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244331655,"owners_count":20435970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","cli","expressjs","mock","mock-server","mockjs","nodejs","proxy-server","socket-io","webserver","websocket"],"created_at":"2024-10-10T04:08:44.525Z","updated_at":"2026-03-15T13:01:46.534Z","avatar_url":"https://github.com/chandq.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Node.js CI](https://github.com/chandq/mock-service-cli/actions/workflows/node.js.yml/badge.svg)](https://github.com/chandq/mock-service-cli/actions/workflows/node.js.yml)\n[![Coverage Status](https://coveralls.io/repos/github/chandq/mock-service-cli/badge.svg?branch=master)](https://coveralls.io/github/chandq/mock-service-cli?branch=master)\n[![mock-service-cli](https://img.shields.io/github/package-json/v/chandq/mock-service-cli?style=flat-square)](https://www.npmjs.com/package/mock-service-cli)\n[![node](https://img.shields.io/badge/language-node-orange.svg)](https://nodejs.org/download/release/v12.0.0/)\n[![license:MIT](https://img.shields.io/npm/l/vue.svg?sanitize=true)](https://github.com/chandq/mock-service-cli/blob/master/LICENSE.md)\n\n# 🦅 mock-service-cli\n\n一个基于 Node.js 和 Express 的轻量级 Mock 套件命令行工具，提供本地开发调试所需的各种服务器功能。\n\n## ✨ 核心功能\n\n- **Mock Server** - 本地 Mock 服务器，支持热更新和多种请求方法\n- **Static Server** - 静态资源服务器\n- **SPA Server** - 单页应用服务器（模拟生产环境）\n- **HTTP Proxy** - 本地接口代理服务\n- **API Overview** - 现代化的 API 概览页面\n- **File Explorer** - 现代化的文件浏览器\n\n## 🚀 特性\n\n- 📊 支持统计 mock 文件数量和请求数量\n- 🔧 支持终端打开 mock 文件所在位置\n- 🎨 自动生成和打开现代化的 API 概览页面\n- 🌐 支持跨域配置\n- 🔄 支持热更新（Mock 文件改动后自动重启）\n- 📁 支持文件浏览器，可预览各种文件类型\n- 💾 支持保存接口响应数据\n- 🔗 支持 HTTP 请求代理\n\n## 📦 安装\n\n### 全局安装\n\n```bash\nnpm install --global mock-service-cli\n# 或\nbrew install mock-service-cli\n```\n\n### 局部安装\n\n```bash\nnpm install mock-service-cli --save-dev\n```\n\n### 直接运行\n\n```bash\nnpx mock-service-cli [options] [path]\n```\n\n## 🛠️ 命令行选项\n\n| 选项                       | 描述                                                        | 默认值 |\n| -------------------------- | ----------------------------------------------------------- | ------ |\n| `-h` 或 `--help`           | 显示帮助信息                                                | -      |\n| `-p` 或 `--port`           | Mock 服务器端口                                             | 8090   |\n| `-d`                       | 指定 mock 目录                                              | ./mock |\n| `-f`                       | 指定单个 mock 文件                                          | -      |\n| `-s` 或 `--silent`         | 抑制日志输出                                                | -      |\n| `-v` 或 `--version`        | 显示版本信息                                                | -      |\n| `-S` 或 `--socket-server`  | 启动 socket 服务器，用于保存 API 响应数据                   | false  |\n| `-a` 或 `--api-stat`       | 打印 API URL 和文件路径信息                                 | false  |\n| `-t` 或 `--track`          | 记录操作信息到文件                                          | false  |\n| `-o` 或 `--cors-origin`    | 配置 CORS 允许的源，多个源用逗号分隔                        | \\*     |\n| `-O` 或 `--proxy-options`  | 配置 HTTP 请求代理选项，支持 js 文件、json 文件或命令行参数 | -      |\n| `-H` 或 `--cors-headers`   | 配置 CORS 头信息                                            | \\*     |\n| `-A` 或 `--append-headers` | 添加响应头信息，多个头用逗号分隔                            | -      |\n| `-D` 或 `--web-dir`        | 启用 Web 服务器，指定 web 目录（SPA 应用）                  | -      |\n| `-P` 或 `--web-port`       | Web 服务器端口                                              | 9090   |\n| `-b` 或 `--web-baseurl`    | 指定 SPA Web 服务器的公共路径                               | -      |\n| `-R` 或 `--static-server`  | 启用静态服务器，指定静态资源目录                            | -      |\n| `-w` 或 `--open`           | 自动打开 API 概览页面                                       | false  |\n| `-e` 或 `--explorer`       | 启用文件浏览器服务器，指定要浏览的目录                      | ./     |\n\n## 📖 使用示例\n\n### Mock 服务器\n\n```bash\n# 使用默认配置启动 Mock 服务器\nmock-service-cli\n\n# 指定端口和目录\nmock-service-cli -p 8080 -d ./api\n\n# 自动打开 API 概览页面\nmock-service-cli --open\n\n# 使用单个 Mock 文件\nmock-service-cli -f ./mock.js\n```\n\n### 静态服务器\n\n```bash\n# 启动静态服务器\nmock-service-cli -R ./public\n```\n\n### Web 服务器 (SPA)\n\n```bash\n# 启动 SPA 服务器\nmock-service-cli -D ./dist\n\n# 指定公共路径和端口\nmock-service-cli -D ./dist -b /app -P 9090\n```\n\n### HTTP 代理\n\n```bash\n# 启动带代理的 Web 服务器\nmock-service-cli -D ./ -O '/api|http://localhost:3000'\n\n# 使用代理配置文件\nmock-service-cli -D ./ -O ./proxy.js\n```\n\n### 文件浏览器\n\n```bash\n# 浏览当前目录\nmock-service-cli -e ./\n\n# 浏览指定目录\nmock-service-cli -e /path/to/directory\n\n# 指定端口\nmock-service-cli -e ./ -p 9090\n```\n\n## 📝 编写 Mock 文件\n\nMock 文件支持 CommonJS 规范，不支持 ES Module。\n\n```javascript\n// mock/test.js\nmodule.exports = {\n  // GET 可忽略\n  '/mock/api/test': { aa: 1, bb: '默认GET请求' },\n  'GET /mock/api/:id/test': { aa: 1, bb: '使用id占位符' },\n  'POST /mock/api/test': { aa: 1, bb: 'POST 方法' },\n  'DELETE /mock/api/test': { aa: 1, bb: 'DELETE 方法' },\n  // 支持自定义函数\n  '/mock/api/video/test': (req, res) =\u003e {\n    res.header('token', '5848778333359208');\n    res.json({ aa: 1, bb: 'asdf' });\n  }\n};\n```\n\n### 引入 Mock.js\n\n可以使用 [Mock.js](http://mockjs.com/) 生成模拟数据：\n\n```javascript\nconst mockjs = require('mockjs');\n\nmodule.exports = {\n  'GET /api/tags': mockjs.mock({\n    'list|100': [\n      {\n        'NO|+1': 1,\n        city: '@city',\n        'value|1-100': 50\n      }\n    ]\n  })\n};\n```\n\n## 🎨 API 概览页面\n\n现代化的 Web 界面，用于展示和测试所有已注册的 Mock API 接口。\n\n### 功能特性\n\n- 📁 按目录分类展示 API\n- 🔍 支持搜索接口\n- 🎯 每种 HTTP 方法使用不同颜色标签\n- 🧪 支持直接在页面中测试 API\n- 📋 响应数据格式化展示\n\n### 访问方式\n\n- **自动打开**：使用 `--open` 参数\n- **手动访问**：`http://localhost:8090/__api-overview`\n\n## 📁 文件浏览器\n\n现代化的文件浏览界面，支持目录导航、文件预览和管理。\n\n### 功能特性\n\n- 📁 **目录导航**：面包屑导航，支持快速跳转\n- 👁️ **文件预览**：\n  - 图片文件：直接预览（JPG、PNG、GIF、WebP 等）\n  - 文本文件：代码高亮预览（JS、JSON、HTML、CSS 等）\n  - 其他文件：提供下载\n- 🎨 **图标标识**：不同文件类型使用不同颜色图标\n- 📱 **视图切换**：网格视图和列表视图\n- ⚡ **操作功能**：\n  - 在系统文件管理器中打开\n  - 复制文件路径\n  - 下载文件\n  - 刷新目录\n  - 显示/隐藏隐藏文件\n- 🔍 **搜索**：支持文件名模糊搜索\n- 📊 **排序**：按名称、时间、大小排序\n- ⌨️ **键盘快捷键**：\n  - `Escape`：关闭预览\n  - `Backspace`：返回上级\n\n### 界面预览\n\n- 渐变紫色现代化设计\n- 响应式布局\n- 流畅的交互体验\n\n## 🔧 高级功能\n\n### 保存接口响应数据\n\n使用 Socket.io 保存接口响应数据，用于后续 Mock：\n\n```javascript\nimport { io } from 'socket.io-client';\n\nconst socket = io.connect('http://localhost:8090/mock-data', {\n  transports: ['websocket'],\n  path: '/ws/mock-service'\n});\n\n// 保存接口数据\nsocket.emit('save-data', { url, method, data, dir });\n\n// 获取目录统计信息\nsocket.emit('mock-dir-stat', dirPath);\nsocket.on('mock-dir-stat', data =\u003e {\n  console.log('统计信息:', data);\n});\n```\n\n## 📚 文档\n\n- [GitHub 仓库](https://github.com/chandq/mock-service-cli)\n- [npm 包](https://www.npmjs.com/package/mock-service-cli)\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## 📄 许可证\n\nMIT License - 详见 [LICENSE.md](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchandq%2Fmock-service-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchandq%2Fmock-service-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchandq%2Fmock-service-cli/lists"}