@sheto/static
Version:
一款简单易用的前端静态网页运行工具
51 lines (49 loc) • 1.57 kB
JavaScript
const Logger = require('../logger');
/**
* @name 解析代理配置字符串
* @param {string} _Str 传入的代理配置
*/
function ParseProxyString(_Str = '/') {
// 是否只设置了前缀
const proxyString = /^\//.test(_Str) ? `127.0.0.1${_Str}` : _Str;
// 分割prefix和server
let [server, prefix = 'api'] = proxyString.split(/(?<!\/)\/(?!\/)/);
// 是否传递了协议
// 如果没有传递协议,默认http
if (/^(http)/.test(server) === false) {
server = `http://${server}`
}
return { server, prefix }
}
/**
* @param {{proxy:string}} _Config 传入的配置
*/
module.exports = function (_Config) {
// 更新参数配置
Object.assign(_Config, ParseProxyString(_Config.proxy));
try {
const { createProxyMiddleware } = require('http-proxy-middleware');
// 相关配置信息提示
Logger.info(`代理服务启动成功,/${_Config.prefix}开头的请求将被转发到${_Config.server}`)
if (createProxyMiddleware) {
return createProxyMiddleware({
target: _Config.server,
changeOrigin: true,
logger: Logger,
pathRewrite: {
[`^/${_Config.prefix}`]: ''
}
});
}
} catch {
const tips = '如需代理,你需要自己安装代理相关依赖,npm install http-proxy-middleware -D'
// 失败后进行友情提示
Logger.warn(tips);
return function (_req, _res) {
// 结束请求
_res.end(tips, 'utf-8')
// 进行友情提示
Logger.warn(tips);
}
}
}