Files
im0o 275f536429 追加 Hosts、路径撞名拦截、连接页表头随行滚动、GEO 借内核通路
设置页内核参数加 hosts 行,铅笔进弹窗编辑(顶层 hosts: 键,
config.go:454,值单个或数组 parseHosts config.go:1131)。弹窗里随便改、
保存才一次性提交——写配置有几秒的校验重载,逐行失焦提交会把等待塞进
每次输入。没动过的行原样写回,数组不被重整形。

订阅和规则组新增时查缓存路径撞名:路径由名字净化而来,「订阅 A」和
「订阅/A」是两个名字、同一个文件,名字查重挡不住,会互相覆盖缓存。
纯函数在 shared 带测试,页面提交前拦。

连接页表头挪进滚动容器加 sticky:.scroller 声明 overflow-y 后按规范
连带拿到横向滚动上下文,表头留在外面时窄屏横向滚动两者脱节。表头
40px 的窗口偏移由 overscan 8 行吸收,不配 scrollMargin。

GEO 单文件下载先借内核的混合端口出去再退直连——内核自己更新 GEO 走
的是它的分流,Patchbay 直连 GitHub 不一定通。ECharts 拆独立 chunk,
业务代码改动不再让这 500KB 跟着换 hash。
2026-08-12 02:47:17 +08:00

49 lines
1.7 KiB
TypeScript

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Icons from 'unplugin-icons/vite'
import { fileURLToPath, URL } from 'node:url'
/**
* 开发时前端跑在 5173,后端跑在 7580,接口请求转发过去。
* 打包后前端是纯静态文件,由后端一起提供,不存在跨域问题。
*/
export default defineConfig({
root: 'web',
plugins: [
vue(),
// 图标在打包时作为内联 SVG 编进产物,运行时不发任何网络请求——
// 目标机器可能没有外网,而且一个图标一次请求对 2 核的机器也不划算。
// autoInstall 关掉:要用哪套图标必须显式装进 package.json,不让构建过程偷偷联网。
Icons({ compiler: 'vue3', autoInstall: false }),
],
resolve: {
alias: {
'@shared': fileURLToPath(new URL('./shared', import.meta.url)),
},
},
server: {
port: 5173,
proxy: {
// 必须是正则而不是字符串 '/api':字符串规则按前缀匹配,会把 web/api.ts
// 这个模块的请求(/api.ts)也转发给后端,于是开发模式下整个页面加载不出来。
'^/api/': {
target: 'http://127.0.0.1:7580',
changeOrigin: false,
},
},
},
build: {
outDir: '../web-dist',
emptyOutDir: true,
rollupOptions: {
output: {
// ECharts 单独一个 chunk。应用一进来就是仪表盘,懒加载省不了首屏,
// 拆开图的是缓存粒度:业务代码天天变,这 400KB 的库不跟着换 hash 重下
manualChunks: {
echarts: ['echarts/core', 'echarts/charts', 'echarts/components', 'echarts/renderers'],
},
},
},
},
})