refactor: 将工具类文件迁移到 tools/ 目录

- 移动 10 个 Python 字体工具脚本到 tools/
- 移动 5 个 C 字体测试文件到 tools/
- 更新脚本路径引用适配新目录结构
- 清理 vue/vue3 前端模板文件
This commit is contained in:
2026-05-07 17:10:39 +08:00
parent b601f35311
commit 97f7d200a2
36 changed files with 45 additions and 592 deletions
+4 -4
View File
@@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
import re, os
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def analyze_font(filepath):
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
@@ -50,7 +52,6 @@ def analyze_font(filepath):
total_bitmap_size = len(byte_vals)
print(f" Total bitmap data: {total_bitmap_size} bytes")
# Verify bitmap_index consistency
warnings = []
for i, g in enumerate(glyphs):
if i == 0:
@@ -78,11 +79,10 @@ def analyze_font(filepath):
else:
print(f" No bitmap inconsistencies found")
# Print sample glyph data
for idx in [1, 2]:
if idx < len(glyphs):
g = glyphs[idx]
print(f" Glyph {idx}: bitmap_index={g.get('bitmap_index')}, adv_w={g.get('adv_w')}, box_w={g.get('box_w')}, box_h={g.get('box_h')}")
for f in ['app/tasks/custom_cjk_16.c', 'app/tasks/custom_cjk_20.c', 'app/tasks/custom_cjk_30.c', 'app/tasks/custom_cjk_40.c']:
analyze_font(f)
for f in ['custom_cjk_16.c', 'custom_cjk_20.c', 'custom_cjk_30.c', 'custom_cjk_40.c']:
analyze_font(os.path.join(project_root, 'app/tasks', f))
+9 -7
View File
@@ -1,5 +1,8 @@
# -*- coding: utf-8 -*-
import re
import os
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def check_bitmap(filepath):
with open(filepath, 'r', encoding='utf-8') as f:
@@ -19,11 +22,10 @@ def check_bitmap(filepath):
bytes_vals.append(int(x))
except:
pass
# 4bpp: each byte has 2 pixels (high nibble, low nibble)
pixels = []
for b in bytes_vals:
pixels.append((b >> 4) & 0x0F) # high nibble
pixels.append(b & 0x0F) # low nibble
pixels.append((b >> 4) & 0x0F)
pixels.append(b & 0x0F)
max_val = max(pixels)
nonzero = [v for v in pixels if v > 0]
min_nonzero = min(nonzero) if nonzero else 0
@@ -32,7 +34,7 @@ def check_bitmap(filepath):
else:
print(f'{filepath}: no match')
check_bitmap('app/tasks/custom_cjk_40.c')
check_bitmap('app/tasks/custom_cjk_30.c')
check_bitmap('app/tasks/custom_cjk_20.c')
check_bitmap('app/tasks/custom_cjk_16.c')
check_bitmap(os.path.join(project_root, 'app/tasks/custom_cjk_40.c'))
check_bitmap(os.path.join(project_root, 'app/tasks/custom_cjk_30.c'))
check_bitmap(os.path.join(project_root, 'app/tasks/custom_cjk_20.c'))
check_bitmap(os.path.join(project_root, 'app/tasks/custom_cjk_16.c'))
+3 -1
View File
@@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
import re, os, glob
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def pg(fp):
with open(fp, encoding='utf-8') as f:
c = f.read()
@@ -19,7 +21,7 @@ def pg(fp):
tests = [[0x8bbe,0x7f6e,0x91cd,0x91cf],[0x6309,0x6b64,0x542f,0x52a8],[0x5f53,0x524d,0x91cd,0x91cf],[0x5305,0x88c5,0x8ba1,0x6570],[0x8fd0,0x884c,0x72b6,0x6001],[0x5df2,0x505c,0x6b62],[0x542f,0x52a8],[0x505c,0x6b62],[0x8fd0,0x884c,0x4e2d]]
ts = [''.join(chr(u) for u in t) for t in tests]
for fp in sorted(glob.glob('app/tasks/custom_cjk_*.c')):
for fp in sorted(glob.glob(os.path.join(project_root, 'app/tasks/custom_cjk_*.c'))):
bs = os.path.basename(fp)
fs = int(re.search(r'_(\d+)\.c$', fp).group(1))
gs, us = pg(fp)
+3 -3
View File
@@ -1,6 +1,8 @@
import re, os, glob
font_files = glob.glob('app/tasks/custom_cjk_*.c')
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
font_files = glob.glob(os.path.join(project_root, 'app/tasks/custom_cjk_*.c'))
for filepath in font_files:
with open(filepath, 'r', encoding='utf-8') as f:
@@ -16,7 +18,6 @@ for filepath in font_files:
return full_line.replace(f'adv_w = {adv_w}', f'adv_w = {new_adv_w}')
return full_line
# Match adv_w, box_w, and optionally box_h and ofs_x in any order
pattern = r'\.adv_w = (\d+), \.box_w = (\d+)(?:, \.box_h = \d+)?(?:, \.ofs_x = (\d+))?'
fixed_content = re.sub(pattern, fix_adv_w, content)
@@ -24,7 +25,6 @@ for filepath in font_files:
f.write(fixed_content)
print(f"=== {os.path.basename(filepath)} ===")
# Show changed values
original = content
changed_lines = []
for line_num, (orig_line, fix_line) in enumerate(zip(original.split('\n'), fixed_content.split('\n')), 1):
+2 -1
View File
@@ -3,7 +3,8 @@ from fontTools.varLib import instancer
import os
src = r"vue/vue3/src/assets/fonts/NotoSansSC-VariableFont_wght_2.ttf"
src = os.path.join(os.path.dirname(os.path.abspath(__file__)), src)
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
src = os.path.join(project_root, src)
for weight, name in [(500, "Medium"), (700, "Bold")]:
dst = src.replace(".ttf", f"_{name}.ttf")
+7 -6
View File
@@ -4,7 +4,8 @@ from PIL import Image, ImageDraw
import os
import sys
os.chdir(r'D:\20_AI\LSPi')
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.chdir(project_root)
def render_glyph_to_bitmap(font_path, char, size, bpp=4):
from PIL import ImageFont
@@ -183,7 +184,7 @@ def write_lvgl_font(filename, size, bpp, glyph_bitmaps, glyph_dscs, unicode_list
f.write("#endif\n")
def main():
font_path = "vue/vue3/src/assets/fonts/NotoSansSC-VariableFont_wght_2.ttf"
font_path = os.path.join(project_root, "vue/vue3/src/assets/fonts/NotoSansSC-VariableFont_wght_2.ttf")
chars_16 = list("0123456789.-+ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
chars_16.extend([0x5F53, 0x524D, 0x91CD, 0x91CF, 0x603B, 0x5305, 0x6570, 0x8BBE,
@@ -203,16 +204,16 @@ def main():
chars_40 = list("0123456789.")
print("Generating custom_cjk_16.c...")
generate_font(font_path, chars_16, 16, "app/tasks/custom_cjk_16.c")
generate_font(font_path, chars_16, 16, os.path.join(project_root, "app/tasks/custom_cjk_16.c"))
print("Generating custom_cjk_20.c...")
generate_font(font_path, chars_20, 20, "app/tasks/custom_cjk_20.c")
generate_font(font_path, chars_20, 20, os.path.join(project_root, "app/tasks/custom_cjk_20.c"))
print("Generating custom_cjk_30.c...")
generate_font(font_path, chars_30, 30, "app/tasks/custom_cjk_30.c")
generate_font(font_path, chars_30, 30, os.path.join(project_root, "app/tasks/custom_cjk_30.c"))
print("Generating custom_cjk_40.c...")
generate_font(font_path, chars_40, 40, "app/tasks/custom_cjk_40.c")
generate_font(font_path, chars_40, 40, os.path.join(project_root, "app/tasks/custom_cjk_40.c"))
print("Done!")
+5 -2
View File
@@ -8,6 +8,9 @@ from fontTools.ttLib import TTFont
from PIL import Image, ImageDraw, ImageFont
import struct
import sys
import os
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
class FontGenerator:
def __init__(self, font_path, size):
@@ -182,7 +185,7 @@ class FontGenerator:
def main():
font_path = "./vue/vue3/src/assets/fonts/NotoSansSC-VariableFont_wght_2_medium.ttf"
font_path = os.path.join(project_root, "vue/vue3/src/assets/fonts/NotoSansSC-VariableFont_wght_2_medium.ttf")
sizes = [16, 20, 30, 40]
ascii_codes = [0x2B, 0x2D, 0x2E] + list(range(0x30, 0x3A))
@@ -207,7 +210,7 @@ def main():
print(f" {success}/{len(all_codes)} characters added")
output = f"app/tasks/custom_cjk_{size}.c"
output = os.path.join(project_root, f"app/tasks/custom_cjk_{size}.c")
gen.generate_lvgl_font(output)
print(f" Written to {output}")
@@ -2,7 +2,8 @@ import struct
import os
ttf_path = "vue/vue3/src/assets/fonts/NotoSansSC-VariableFont_wght_2.ttf"
ttf_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), ttf_path)
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
ttf_path = os.path.join(project_root, ttf_path)
with open(ttf_path, "rb") as f:
data = bytearray(f.read())
+2 -1
View File
@@ -3,7 +3,8 @@ import subprocess
import sys
import os
os.chdir(r'D:\20_AI\LSPi')
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.chdir(project_root)
def run_cmd(cmd):
cmd_str = ' '.join(cmd)
@@ -4,8 +4,10 @@
import subprocess
import os
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
lv_font_conv_path = "C:\\Users\\gxms0\\AppData\\Roaming\\npm\\lv_font_conv.cmd"
font_path = "./vue/vue3/src/assets/fonts/simhei.ttf"
font_path = os.path.join(project_root, "vue/vue3/src/assets/fonts/simhei.ttf")
codes = [
0x2B, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34,
@@ -28,7 +30,7 @@ for size in sizes:
"--format=lvgl",
"--bpp=4",
"--no-compress",
"-o", f"app/tasks/custom_cjk_{size}.c",
"-o", os.path.join(project_root, f"app/tasks/custom_cjk_{size}.c"),
]
for code in codes:
View File
View File
-24
View File
@@ -1,24 +0,0 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
-5
View File
@@ -1,5 +0,0 @@
# Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
Learn more about the recommended Project Setup and IDE Support in the [Vue Docs TypeScript Guide](https://vuejs.org/guide/typescript/overview.html#project-setup).
-13
View File
@@ -1,13 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue + TS</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
-20
View File
@@ -1,20 +0,0 @@
{
"name": "pixso-vue-template",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"vue": "^3.5.17",
"vue-router": "^4.5.1"
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.0",
"@vue/tsconfig": "^0.7.0",
"typescript": "~5.8.3"
}
}
-9
View File
@@ -1,9 +0,0 @@
<template>
<router-view></router-view>
</template>
<script lang="ts" setup>
import { getCurrentInstance } from 'vue';
window.app = getCurrentInstance();
</script>
Binary file not shown.
-3
View File
@@ -1,3 +0,0 @@
@font-face {
font-family: "Noto Sans SC-Regular"; font-style: normal; src: url('@/assets/fonts/NotoSansSC-VariableFont_wght_2.ttf')
}
-26
View File
@@ -1,26 +0,0 @@
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
ol,ul,menu {
padding-inline-start: 0;
list-style: none;
}
ol li::marker, ul li::before {
letter-spacing: 0;
}
.scroll-container > div {
width: 100%;
}
.container > div {
width: 100%;
}
.Pixso-canvas-0_1 > div {
width: 100%;
}
-16
View File
@@ -1,16 +0,0 @@
import './assets/styles/font.css';
import './assets/styles/global.css'
import { createApp } from 'vue'
import './styles.css'
import './assets/styles/font.css'
import App from './App.vue'
import { router } from './router'
createApp(App).use(router).mount('#app')
declare global {
interface Window {
app: any;
}
}
-22
View File
@@ -1,22 +0,0 @@
import { createRouter, createWebHistory , type RouteRecordRaw } from "vue-router";
const routes: RouteRecordRaw[] = [{path: "/", name: "Frame21", component: () => import("@/views/Frame21.vue"), meta: { guid: "2:1" }},];
const routePathMap = new Map<string, string>();
export const getRoutePathByGuid = (guid: string) => {
if (!guid) return;
if (routePathMap.has(guid)) return routePathMap.get(guid);
const route = routes.find((item) => item.meta?.guid === guid);
if (!route) return;
routePathMap.set(guid, route.path);
return route.path;
}
export const router = createRouter({
history: createWebHistory(),
routes,
});
-16
View File
@@ -1,16 +0,0 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
height: 100vh;
width: 100vw;
overflow: hidden;
}
#app {
height: 100%;
width: 100%;
}
-18
View File
@@ -1,18 +0,0 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
word-break: break-word;
}
body {
height: 100vh;
width: 100vw;
overflow: hidden;
}
#app {
height: 100%;
width: 100%;
}
-317
View File
@@ -1,317 +0,0 @@
<template>
<div class="scroll-container">
<div id="2_1" class="Pixso-frame-2_1">
<div id="2_2" class="Pixso-rectangle-2_2"></div>
<div id="2_3" class="Pixso-rectangle-2_3"></div>
<div id="2_4" class="stroke-wrapper-2_4">
<div class="Pixso-rectangle-2_4"></div>
<div class="stroke-2_4"></div>
</div>
<div id="2_5" class="stroke-wrapper-2_5">
<div class="Pixso-rectangle-2_5"></div>
<div class="stroke-2_5"></div>
</div>
<div id="2_6" class="Pixso-rectangle-2_6"></div>
<p id="2_7" class="Pixso-paragraph-2_7">{{ "包装计数" }}</p>
<p id="2_8" class="Pixso-paragraph-2_8">{{ "200" }}</p>
<p id="2_10" class="Pixso-paragraph-2_10">{{ "当前重量" }}</p>
<p id="2_12" class="Pixso-paragraph-2_12">{{ "0.0g" }}</p>
<p id="2_14" class="Pixso-paragraph-2_14">{{ "运行状态" }}</p>
<p id="2_16" class="Pixso-paragraph-2_16">{{ "已停止" }}</p>
<p id="2_17" class="Pixso-paragraph-2_17">{{ "启动" }}</p>
<p id="2_18" class="Pixso-paragraph-2_18">{{ "点击启动" }}</p>
<div id="3_1" class="Pixso-rectangle-3_1"></div>
<div id="3_2" class="Pixso-rectangle-3_2"></div>
<div id="5_3" class="Pixso-rectangle-5_3"></div>
<div id="5_4" class="Pixso-rectangle-5_4"></div>
<p id="3_3" class="Pixso-paragraph-3_3">{{ "设置重量" }}</p>
<p id="3_5" class="Pixso-paragraph-3_5">{{ "20g" }}</p>
<div id="3_7" class="Pixso-text-3_7">
<p id="3_7_0" class="Pixso-paragraph-3_7_0">{{ "&nbsp;" }}</p>
</div>
<div id="5_1" class="Pixso-rectangle-5_1"></div>
</div>
</div>
</template>
<script lang="ts" setup></script>
<style>
.scroll-container {
height: 100%;
width: 100%;
overflow: auto;
}
.Pixso-frame-2_1 {
width: 100%;
height: 480px;
overflow: hidden;
position: relative;
flex-shrink: 0;
background-color: rgba(13, 17, 23, 1);
}
.Pixso-rectangle-2_2 {
width: 800px;
height: 480px;
position: absolute;
left: 0px;
top: 0px;
background-color: rgba(13, 17, 23, 1);
}
.Pixso-rectangle-2_3 {
width: 800px;
height: 60px;
position: absolute;
left: 0px;
top: 0px;
background-color: rgba(21, 57, 98, 1);
}
.Pixso-rectangle-2_4 {
width: 100%;
height: 100%;
position: relative;
border-radius: 10px 10px 10px 10px;
background-color: rgba(22, 27, 34, 1);
}
.stroke-wrapper-2_4 {
position: absolute;
left: 10px;
top: 70px;
width: 560px;
height: 400px;
}
.stroke-2_4 {
position: absolute;
inset: 0px;
border-radius: 10px 10px 10px 10px;
pointer-events: none;
border-width: 2px 2px 2px 2px;
border-style: solid;
box-sizing: border-box;
border-color: rgba(48, 54, 61, 1);
}
.Pixso-rectangle-2_5 {
width: 100%;
height: 100%;
position: relative;
border-radius: 10px 10px 10px 10px;
background-color: rgba(22, 27, 34, 1);
}
.stroke-wrapper-2_5 {
position: absolute;
left: 590px;
top: 70px;
width: 200px;
height: 400px;
}
.stroke-2_5 {
position: absolute;
inset: 0px;
border-radius: 10px 10px 10px 10px;
pointer-events: none;
border-width: 2px 2px 2px 2px;
border-style: solid;
box-sizing: border-box;
border-color: rgba(48, 54, 61, 1);
}
.Pixso-rectangle-2_6 {
width: 159px;
height: 190px;
position: absolute;
left: 610px;
top: 90px;
border-radius: 20px 20px 20px 20px;
background-color: rgba(63, 185, 80, 1);
}
.Pixso-paragraph-2_7 {
font-size: 14px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(255, 255, 255, 1);
width: auto;
height: auto;
position: absolute;
left: 620px;
top: 350px;
white-space: pre;
flex-grow: 0;
}
.Pixso-paragraph-2_8 {
font-size: 20px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(63, 185, 80, 1);
width: auto;
height: auto;
position: absolute;
left: 620px;
top: 370px;
white-space: pre;
flex-grow: 0;
}
.Pixso-paragraph-2_10 {
font-size: 14px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(255, 255, 255, 1);
width: auto;
height: auto;
position: absolute;
left: 620px;
top: 288px;
white-space: pre;
flex-grow: 0;
}
.Pixso-paragraph-2_12 {
font-size: 20px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(63, 185, 80, 1);
width: auto;
height: auto;
position: absolute;
left: 620px;
top: 314px;
white-space: pre;
flex-grow: 0;
}
.Pixso-paragraph-2_14 {
font-size: 14px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(255, 255, 255, 1);
width: auto;
height: auto;
position: absolute;
left: 620px;
top: 405px;
white-space: pre;
flex-grow: 0;
}
.Pixso-paragraph-2_16 {
font-size: 20px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(247, 111, 74, 1);
width: auto;
height: auto;
position: absolute;
left: 618px;
top: 431px;
white-space: pre;
flex-grow: 0;
}
.Pixso-paragraph-2_17 {
font-size: 30px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(255, 255, 255, 1);
width: auto;
height: auto;
position: absolute;
left: 659px;
top: 163px;
white-space: pre;
flex-grow: 0;
}
.Pixso-paragraph-2_18 {
font-size: 14px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(255, 255, 255, 1);
width: auto;
height: auto;
position: absolute;
left: 663px;
top: 250px;
white-space: pre;
flex-grow: 0;
}
.Pixso-rectangle-3_1 {
width: 80px;
height: 80px;
position: absolute;
left: 350px;
top: 89px;
border-radius: 20px 20px 20px 20px;
background-color: rgba(42, 40, 40, 1);
}
.Pixso-rectangle-3_2 {
width: 80px;
height: 80px;
position: absolute;
left: 470px;
top: 90px;
border-radius: 20px 20px 20px 20px;
background-color: rgba(42, 40, 40, 1);
}
.Pixso-rectangle-5_3 {
width: 40px;
height: 5px;
position: absolute;
left: 50%;
top: 50%;
transform: translateX(calc(-50% + 110px)) translateY(calc(-50% + -110.5px));
background-color: rgba(255, 255, 255, 1);
}
.Pixso-rectangle-5_4 {
width: 5px;
height: 40px;
position: absolute;
left: 50%;
top: 50%;
transform: translateX(calc(-50% + 109.5px)) translateY(calc(-50% + -110px));
background-color: rgba(255, 255, 255, 1);
}
.Pixso-paragraph-3_3 {
font-size: 40px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(255, 255, 255, 1);
width: auto;
height: auto;
position: absolute;
left: 39px;
top: 101px;
white-space: pre;
flex-grow: 0;
}
.Pixso-paragraph-3_5 {
font-size: 40px;
font-family: "Noto Sans SC-Regular";
font-weight: 400;
color: rgba(1, 234, 155, 1);
width: auto;
height: auto;
position: absolute;
left: 239px;
top: 101px;
white-space: pre;
flex-grow: 0;
}
.Pixso-text-3_7 {
font-size: 14px;
font-family: "Noto Sans SC-Regular";
font-weight: Regular;
color: rgba(255, 255, 255, 1);
width: auto;
height: auto;
position: absolute;
left: 61px;
top: 247px;
white-space: nowrap;
flex-grow: 0;
}
.Pixso-paragraph-3_7_0 {
line-height: 20.27199935913086px;
position: relative;
flex-shrink: 0;
}
.Pixso-rectangle-5_1 {
width: 40px;
height: 5px;
position: absolute;
left: 50%;
top: 50%;
transform: translateX(calc(-50% + -10px)) translateY(calc(-50% + -110.5px));
background-color: rgba(255, 255, 255, 1);
}
</style>
-8
View File
@@ -1,8 +0,0 @@
/// <reference types="vite/client" />
declare module "*.vue" {
import { defineComponent } from "vue";
const component: ReturnType<typeof defineComponent>;
export default component;
}
-15
View File
@@ -1,15 +0,0 @@
{
"extends": "@vue/tsconfig/tsconfig.dom.json",
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"erasableSyntaxOnly": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true,
},
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
}
-7
View File
@@ -1,7 +0,0 @@
{
"files": [],
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
]
}
-29
View File
@@ -1,29 +0,0 @@
{
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
"target": "ES2023",
"lib": ["ES2023"],
"module": "ESNext",
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true,
"moduleDetection": "force",
"noEmit": true,
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"erasableSyntaxOnly": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true,
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
},
},
"include": ["vite.config.ts"]
}
-12
View File
@@ -1,12 +0,0 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vite.dev/config/
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'@': '/src',
},
},
})