顺序是刻意的。前端一行测试都没有,直接挪代码挪坏了 bun test 不会红,所以先把纯逻辑 抽到能被测试的位置并补上用例,最后才动组件。测试从 37 条增加到 77 条。 抽出来的四块: - shared/outbound-chain.ts 「这个端口现在走哪条线」的链路解析,带防环,9 条测试 - web/delay-test.ts 延迟测试失败时说什么,6 个分支原本一条测试都没有 - web/runtime.ts 运行时状态的模块级单例,照 prefs.ts 已有的模式 - web/components/InboundList.vue 入站列表 出站的文本原本散成四份(读一份、显示一份、写回一份、表单又抄一份),加一种出站模式 要同时改四处,漏一个就是显示与写回不一致。合并成 OUTBOUND_PRESETS 一张表。 给认证和透传白名单补了 20 条测试。两者都是安全边界、都是纯函数、都不需要内核在线, 之前却只靠需要活内核的冒烟脚本间接覆盖。其中「形似但不是健康检查的路径」几条确认了 正则没写松。 另外:配置快照不再把整份文件原文下发(前端从不读,白白让响应体积翻倍); yaml-cosmetics 的测试改走生产路径,之前它自己拼了一遍三步流程,落盘链路漏掉其中一步 测试照样会绿。
40 lines
1.3 KiB
TypeScript
40 lines
1.3 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,
|
|
},
|
|
})
|