UNPKG

@sheto/static

Version:

一款简单易用的前端静态网页运行工具

51 lines (49 loc) 1.57 kB
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); } } }