设计基调定为:层次靠底色和一像素描边而不是投影,一屏最多两层容器,间距给足。 tokens.css 顶部写了这三条规则,后面的组件都是它们的推论。 入站列表把两套写法合并成一张表:老式顶层端口字段(mixed-port 这些)和 listeners 数组。 只画 listeners 的话,一台只用 mixed-port 的机器打开会是空板,而那个端口正在跑—— 这等于对用户撒谎。合并逻辑在 shared/inbounds.ts,带 10 个测试。 后端顺带能提供打包后的静态文件了,一个进程就能跑起来。
39 lines
854 B
JSON
39 lines
854 B
JSON
{
|
|
"compilerOptions": {
|
|
"target": "ESNext",
|
|
"module": "ESNext",
|
|
"moduleResolution": "bundler",
|
|
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
|
"types": ["bun", "vite/client"],
|
|
|
|
"strict": true,
|
|
"noUncheckedIndexedAccess": true,
|
|
"noImplicitOverride": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
|
|
"verbatimModuleSyntax": true,
|
|
"isolatedModules": true,
|
|
"noEmit": true,
|
|
"skipLibCheck": true,
|
|
"resolveJsonModule": true,
|
|
"allowImportingTsExtensions": true,
|
|
|
|
"jsx": "preserve",
|
|
"baseUrl": ".",
|
|
"paths": {
|
|
"~/*": ["./web/*"],
|
|
"@shared/*": ["./shared/*"],
|
|
"@config-editor": ["./vendor/config-editor/index.ts"]
|
|
}
|
|
},
|
|
"include": [
|
|
"server/**/*.ts",
|
|
"web/**/*.ts",
|
|
"web/**/*.vue",
|
|
"shared/**/*.ts",
|
|
"vendor/**/*.ts",
|
|
"scripts/**/*.ts",
|
|
"*.ts"
|
|
]
|
|
}
|