UNPKG

rc-anywhere

Version:

一个简单的Koa静态服务器,支持代理配置

114 lines (82 loc) 4.13 kB
# rc-anywhere 前端项目本地自测神器!支持静态文件服务、API 代理转发、一键 Mock 服务等功能。适合前端项目打包后的本地预览、移动端调试以及与后端的联调工作。 > 💡 灵感来源于开源库 [anywhere](https://github.com/JacksonTian/anywhere),并在此基础上增加了 Koa 生态的扩展、多路由代理以及强大的 Mock 功能。 ## ✨ 特性 - 🚀 **开箱即用**:零配置启动本地静态文件服务器 - 🔄 **灵活代理**:支持多路由 API 代理,解决跨域及联调问题(基于 `http-proxy-middleware`- 🎭 **独立 Mock 服务**:内置全功能 REST API Mock 服务(基于 `json-server`- 📱 **移动端友好**:自动获取局域网 IP,启动即打印二维码,扫码即可手机预览 - 🛡️ **智能防冲突**:自动检测端口占用,遇到冲突自动顺延端口 -**性能优化**:默认开启 Gzip 压缩支持 - 🌐 **SPA 支持**:支持单页应用 (Single Page Application) 的 History API Fallback ## 📦 安装 ```bash npm install -g rc-anywhere ``` ## 🚀 核心命令与用法 `rc-anywhere` 提供了多个子命令来满足不同的开发场景。 ### 1. 启动静态文件服务 (`serve`) 在打包后的目录(如 `dist``build`)中,直接运行: ```bash rc-anywhere serve ``` **支持的参数:** - `-p, --port <port>`: 指定端口号(默认 3000) - `-d, --directory <path>`: 指定要作为静态服务的目录(默认为当前执行命令的目录 `process.cwd()`- `-o, --open`: 启动后自动在浏览器中打开 - `-c, --config <path>`: 指定代理配置文件路径(支持 .cjs 文件,默认读取当前目录下的 `proxyConfig.cjs`- `--cors`: 允许跨域请求 - `--no-gzip`: 禁用 Gzip 压缩 --- ### 2. 启动 API Mock 服务 (`mock-server`) 🌟 新特性 当你需要快速模拟后端接口时,无需额外配置,一行代码即可启动一个 RESTful API 服务器。此命令完全独立于 `serve` 命令。 ```bash rc-anywhere mock-server ``` *如果当前目录下没有 `db.json` 文件,工具会自动为你生成一个包含示例数据的 `db.json` 并启动服务。* **支持的参数(兼容 json-server):** - `-p, --port <port>`: 指定端口号(默认 3000,**遇冲突自动顺延**- `-f, --file <file>`: 指定数据源文件(默认 `db.json`- `-d, --delay <ms>`: 增加 API 响应延迟,用于模拟弱网环境(例如:`-d 2000`- `--read-only`: 开启只读模式,只允许 `GET` 请求,禁止修改数据 - `--no-cors`: 禁用 CORS 跨域支持 - `-q, --quiet`: 静默模式,不输出请求日志 --- ### 3. 快速初始化代理配置 (`init`) 如果你需要配置 API 代理来解决跨域问题,可以先执行初始化: ```bash rc-anywhere init ``` 这会在当前目录生成一个 `proxyConfig.cjs` 模板文件。你只需修改此文件,然后在同级目录执行 `rc-anywhere serve` 即可。 ## ⚙️ 代理配置示例 (`proxyConfig.cjs`) 代理配置基于 `http-proxy-middleware`,你可以根据需要配置多个代理路由。 ```js // 更多配置请参考: https://www.npmjs.com/package/http-proxy-middleware module.exports = { '/api': { target: 'http://localhost:8080', // 你的后端接口地址 changeOrigin: true, // 路径重写:将 /api 开头的请求重写为空 // pathRewrite: { '^/api': '' } }, '/graphql': { target: 'http://localhost:4000', changeOrigin: true } }; ``` ## 💻 作为 Node.js 模块使用 除了 CLI 命令行,你也可以在自己的 Node 脚本中集成它: ```javascript const server = require('rc-anywhere'); // 启动静态服务并挂载代理 server.start({ port: 3000, directory: './dist', proxyConfig: require('./proxyConfig.cjs'), open: true, cors: true }); ``` --- **欢迎提 [Issue](https://github.com/chenxigeng/rc-anywhere/issues) 和 PR!如果这个工具对你有帮助,不妨点个 ⭐️ Star!**