一个简单易用的本地静态服务器,支持代理配置功能,类似于 anywhere,但增加了代理配置功能。
- 🚀 快速启动:一键启动本地静态服务器
- 🔄 代理支持:灵活的代理配置,支持路径重写
- 📁 静态文件服务:自动提供指定目录下的静态文件
- 🌐 自动端口查找:端口被占用时自动寻找可用端口
- 🖥️ 自动打开浏览器:可选自动打开浏览器访问
- ⚙️ 灵活配置:支持命令行参数和配置文件两种方式
# 全局安装
npm install -g @julei/proxy
# 或本地安装
npm install @julei/proxy# 启动服务器(使用当前目录,默认端口5555)
proxy
# 指定目录和端口
proxy -d ./dist -p 8080
# 自动打开浏览器
proxy --open| 参数 | 缩写 | 说明 | 默认值 |
|---|---|---|---|
--dir <path> |
-d |
要服务的目录 | 当前目录 . |
--port <number> |
-p |
监听端口 | 5555 |
--proxy-config <path> |
无 | 代理配置文件路径 | proxy.config.js |
--open |
-o |
自动打开浏览器 | false |
首次运行时,程序会提示是否生成代理配置文件。配置文件采用 Node.js 模块格式:
// proxy.config.js
module.exports = {
proxies: [
{
prefix: '/api', // 代理路径前缀
target: 'http://192.168.1.116:6010/api', // 目标服务器地址
rewrite: path => path.replace(/^\/api/, ''), // 路径重写规则
changeOrigin: true, // 是否修改请求头中的host
ws: true // 是否代理websocket
},
{
prefix: '/upload',
target: 'http://localhost:3000',
changeOrigin: true
}
],
server: {
port: 5555, // 服务器端口(可选,优先级低于命令行参数)
openBrowser: true // 是否自动打开浏览器(可选)
}
};| 选项 | 类型 | 必填 | 说明 |
|---|---|---|---|
prefix |
string | 是 | 需要代理的路径前缀 |
target |
string | 是 | 目标服务器地址(支持 http/https) |
rewrite |
function | 否 | 路径重写函数 |
changeOrigin |
boolean | 否 | 是否修改请求的 host 头,默认 true |
ws |
boolean | 否 | 是否代理 websocket 连接,默认 true |
端口配置的优先级顺序(从高到低):
- 命令行参数
-p/--port - 配置文件中的
server.port - 默认值
5555
// proxy.config.js
module.exports = {
proxies: [
{
prefix: '/api',
target: 'http://api.example.com',
changeOrigin: true
}
],
server: {
port: 3000,
openBrowser: true
}
};# 启动服务器
proxy -d ./public// proxy.config.js
module.exports = {
proxies: [
{
prefix: '/api/v1',
target: 'https://api-v1.example.com',
changeOrigin: true
},
{
prefix: '/api/v2',
target: 'https://api-v2.example.com',
changeOrigin: true,
rewrite: path => path.replace(/^\/api\/v2/, '/v2')
},
{
prefix: '/uploads',
target: 'http://fileserver.example.com',
changeOrigin: true
}
]
};# 开发环境
proxy -d ./src -p 8080 --open
# 生产构建测试
proxy -d ./dist -p 8080
# 自定义配置文件
proxy --proxy-config ./config/proxy.dev.jsproxy-server/
├── bin/
│ └── proxy.js # 主程序入口
├── package.json # 项目配置
└── proxy.config.js # 代理配置文件(自动生成)
- Express: 轻量级 web 框架
- http-proxy-middleware: 强大的代理中间件
- commander: 命令行参数解析
- chalk: 终端彩色输出
- 端口占用:如果指定端口被占用,程序会自动寻找下一个可用端口
- 配置文件:首次运行时会提示生成配置文件,可按需修改
- HTTPS 代理:代理 HTTPS 目标时,会自动设置
secure: false - 路径重写:默认会移除前缀路径,可通过
rewrite函数自定义 - 静态文件:未配置代理的路径会作为静态文件处理
Q: 如何代理到 HTTPS 服务?
A: 直接在 target 中指定 https:// 开头的地址即可,程序会自动处理。
Q: 如何保留原始路径前缀?
A: 设置 rewrite: path => path 或省略 rewrite 配置项。
Q: 如何同时代理多个 API 服务?
A: 在 proxies 数组中添加多个代理配置对象。
Q: 端口被占用怎么办? A: 程序会自动寻找下一个可用端口,并在控制台显示实际使用的端口。
MIT License
julei (juleide@qq.com)