2
0
mirror of https://github.com/acepanel/acepanel.github.io.git synced 2026-02-03 21:07:22 +08:00

refactor: 为翻译做准备

This commit is contained in:
2025-05-26 21:38:16 +08:00
parent dad555ce11
commit fb374699cd
41 changed files with 1962 additions and 963 deletions

View File

@@ -1,12 +1,8 @@
name: Deploy site to Pages
on:
schedule:
- cron: "0 * * * *"
push:
branches: [ main ]
workflow_dispatch:
# 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages
@@ -15,11 +11,9 @@ permissions:
pages: write
id-token: write
# 只允许同时进行一次部署,跳过正在运行和最新队列之间的运行队列
# 但是,不要取消正在进行的运行,因为我们希望允许这些生产部署完成
# 只允许同时进行一次部署
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
@@ -30,12 +24,11 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: latest
run_install: true
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
node-version: lts/*
cache: pnpm
- name: Setup Pages
uses: actions/configure-pages@v4

View File

@@ -1,176 +0,0 @@
import {defineConfig} from 'vitepress'
const resp = await (await fetch('https://panel.haozi.net/api/versions')).json()
const versions = resp.data.slice(0, 10).map((item: any) => {
return item.version
})
// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "耗子面板",
description: "简单轻量 • 高效运维",
lang: "zh",
locales: {
root: {
label: '简体中文',
lang: 'zh-Hans',
},
/*en: {
label: 'English',
lang: 'en',
title: 'Rat Panel',
themeConfig: {
nav: [
{text: 'Home', link: '/en/'},
{text: 'Examples', link: '/en/markdown-examples'}
],
footer: {
message: 'This website is powered by Rat Panel',
copyright: '© 2022-2024 Tianjin Rat Technology Co., Ltd All Rights Reserved'
},
editLink: {
pattern: "https://github.com/ratpanel/ratpanel.github.io/edit/main/:path",
text: "Edit this page on GitHub"
},
},
},*/
},
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
logo: '/.github/assets/logo.png',
nav: [
{text: '首页', link: '/'},
{text: '文档', link: '/quickstart/install'},
{text: '支持', link: '/support'},
{text: '🔥证书', link: '/cert'},
{text: '关于', link: '/about'},
],
sidebar: [
{
text: '快速上手',
collapsed: true,
items: [
{
text: '安装面板',
link: '/quickstart/install'
},
{
text: '挂载分区',
link: '/quickstart/disk'
},
{
text: '管理面板',
link: '/quickstart/panel'
},
{
text: '管理容器',
link: '/quickstart/container'
},
],
},
{
text: '进阶指南',
collapsed: true,
items: [
{
text: '面板 API',
link: '/advanced/api'
},
{
text: '配置容器镜像加速',
link: '/advanced/hub-mirror'
},
{
text: '配置反向代理',
link: '/advanced/proxy'
},
{
text: '配置进程守护',
link: '/advanced/supervisor'
},
{
text: '配置 QUICHTTP3',
link: '/advanced/quic'
},
{
text: '配置 TLSv1.1 TLSv1',
link: '/advanced/tls'
},
{
text: '安全性建议',
link: '/advanced/safe'
},
],
},
{
text: '版本日志',
collapsed: true,
items: [
...versions.map(version => {
return {
text: version,
link: `/version-${version}`
}
})
]
}
],
socialLinks: [
{icon: 'github', link: 'https://github.com/tnb-labs/panel'},
{icon: 'tencentqq', link: 'https://jq.qq.com/?_wv=1027&k=I1oJKSTH'},
{icon: 'wechat', link: 'https://work.weixin.qq.com/gm/d8ebf618553398d454e3378695c858b6'},
],
editLink: {
pattern: "https://github.com/ratpanel/ratpanel.github.io/edit/main/:path",
text: "在 GitHub 上编辑此页面"
},
footer: {
message: '<b style="font-size: larger; padding-bottom: 20px">严禁使用耗子面板从事违法活动,我司不对违规用户提供任何服务</b>',
copyright: '© 2022-2024 天津耗子科技有限公司 版权所有丨<a target="_blank" href="https://beian.miit.gov.cn/" rel="noreferrer">津ICP备2022009678号-1</a>丨<a target="_blank" href="https://beian.mps.gov.cn/#/query/webSearch?code=12011502000848" rel="noreferrer">津公网安备12011502000848号</a>'
},
docFooter: {
prev: '上一页',
next: '下一页'
},
outline: {
label: '页面导航'
},
langMenuLabel: '多语言',
returnToTopLabel: '回到顶部',
sidebarMenuLabel: '菜单',
darkModeSwitchLabel: '主题',
lightModeSwitchTitle: '切换到浅色模式',
darkModeSwitchTitle: '切换到深色模式',
skipToContentLabel: '跳转到内容',
search: {
provider: 'local',
options: {
locales: {
root: {
translations: {
button: {
buttonText: '搜索文档',
buttonAriaLabel: '搜索文档'
},
modal: {
noResultsText: '无法找到相关结果',
resetButtonTitle: '清除查询条件',
footer: {
selectText: '选择',
navigateText: '切换'
}
}
}
}
}
}
}
},
transformPageData: (pageData) => {
// 为版本页单独设置标题
// https://github.com/vuejs/vitepress/discussions/2516
if (pageData.params?.version) {
pageData.title = `v${pageData.params.version}`
}
}
})

134
.vitepress/config/en.ts Normal file
View File

@@ -0,0 +1,134 @@
import {defineConfig, type DefaultTheme} from 'vitepress'
const resp = await (await fetch('https://panel.haozi.net/api/versions')).json()
const versions = resp.data.slice(0, 10).map((item: any) => {
return item.version
})
export const config = defineConfig({
lang: 'en-US',
description: "Goravel is a web application framework with complete functions and excellent scalability. As a starting scaffolding to help Gopher quickly build their own applications.",
themeConfig: {
nav: nav(),
sidebar: [
{
text: "Quickstart",
base: '/quickstart/',
items: sidebarQuickstart()
},
{
text: "Advanced",
base: '/advanced/',
items: sidebarAdvanced()
},
{
text: "Versions",
collapsed: true,
items: [
...versions.map((version: string) => {
return {
text: version,
link: `/version-${version}`
}
})
]
},
],
editLink: {
pattern: 'https://github.com/ratpanel/ratpanel.github.io/edit/main/:path',
text: 'Edit this page on GitHub'
},
footer: {
message: 'Released under the MIT License',
copyright: `Copyright © 2022-${new Date().getFullYear()} Tianjin Rat Technology Co., Ltd All Rights Reserved`
},
docFooter: {
prev: 'Previous page',
next: 'Next page'
},
outline: {
label: 'On this page'
},
lastUpdated: {
text: 'Last updated',
formatOptions: {
dateStyle: 'short',
timeStyle: 'medium'
}
},
langMenuLabel: 'Change language',
returnToTopLabel: 'Return to top',
sidebarMenuLabel: 'Menu',
darkModeSwitchLabel: 'Appearance',
lightModeSwitchTitle: 'Switch to light theme',
darkModeSwitchTitle: 'Switch to dark theme',
skipToContentLabel: 'Skip to content'
}
})
function nav(): DefaultTheme.NavItem[] {
return [
{text: '首页', link: '/'},
{text: '文档', link: '/quickstart/install'},
{text: '支持', link: '/support'},
{text: '🔥证书', link: '/cert'},
{text: '关于', link: '/about'},
]
}
function sidebarQuickstart(): DefaultTheme.SidebarItem[] {
return [
{
text: '安装面板',
link: '/install'
},
{
text: '挂载分区',
link: '/disk'
},
{
text: '管理面板',
link: '/panel'
},
{
text: '管理容器',
link: '/container'
},
]
}
function sidebarAdvanced(): DefaultTheme.SidebarItem[] {
return [
{
text: '面板 API',
link: '/api'
},
{
text: '配置容器镜像加速',
link: '/hub-mirror'
},
{
text: '配置反向代理',
link: '/proxy'
},
{
text: '配置进程守护',
link: '/supervisor'
},
{
text: '配置 QUICHTTP3',
link: '/quic'
},
{
text: '配置 TLSv1.1 TLSv1',
link: '/tls'
},
{
text: '安全性建议',
link: '/safe'
},
]
}

View File

@@ -0,0 +1,12 @@
import { defineConfig } from 'vitepress'
import { shared } from './shared'
import { config as en } from './en'
// https://vitepress.dev/reference/site-config
export default defineConfig({
...shared,
locales: {
root: { label: 'English', ...en },
},
})

View File

@@ -0,0 +1,58 @@
import type {DefaultTheme} from "vitepress";
export const enSearch: DefaultTheme.LocalSearchOptions['locales'] = {
root: {
translations: {
button: {
buttonText: 'Search',
buttonAriaLabel: 'Search'
},
modal: {
noResultsText: 'No results for',
resetButtonTitle: 'Clear the search query',
footer: {
selectText: 'Select',
navigateText: 'Navigate',
}
}
}
}
}
export const zh_CNSearch: DefaultTheme.LocalSearchOptions['locales'] = {
zh_CN: {
translations: {
button: {
buttonText: '搜索',
buttonAriaLabel: '搜索'
},
modal: {
noResultsText: '没有找到相关结果:',
resetButtonTitle: '清除搜索条件',
footer: {
selectText: '选择',
navigateText: '切换',
}
}
}
}
}
export const zh_TWSearch: DefaultTheme.LocalSearchOptions['locales'] = {
zh_TW: {
translations: {
button: {
buttonText: '搜尋',
buttonAriaLabel: '搜尋'
},
modal: {
noResultsText: '沒有找到相關結果:',
resetButtonTitle: '清除搜尋條件',
footer: {
selectText: '選擇',
navigateText: '切換',
}
}
}
}
}

View File

@@ -0,0 +1,65 @@
import {groupIconMdPlugin, groupIconVitePlugin} from 'vitepress-plugin-group-icons'
import {createFileSystemTypesCache} from '@shikijs/vitepress-twoslash/cache-fs'
import {transformerTwoslash} from '@shikijs/vitepress-twoslash'
import timeline from "vitepress-markdown-timeline";
import {defineConfig} from "vitepress";
import {enSearch, zh_CNSearch, zh_TWSearch} from './search'
export const shared = defineConfig({
title: 'RatPanel',
rewrites: {
'en/:rest*': ':rest*'
},
lastUpdated: true,
cleanUrls: true,
metaChunk: true,
markdown: {
codeTransformers: [
transformerTwoslash({
typesCache: createFileSystemTypesCache()
})
],
config(md) {
md.use(groupIconMdPlugin);
md.use(timeline);
},
languages: ['go', 'bash', 'shell']
},
themeConfig: {
logo: '/logo.png',
socialLinks: [
{icon: 'github', link: 'https://github.com/tnb-labs/panel'},
{icon: 'tencentqq', link: 'https://jq.qq.com/?_wv=1027&k=I1oJKSTH'},
{icon: 'wechat', link: 'https://work.weixin.qq.com/gm/d8ebf618553398d454e3378695c858b6'},
],
search: {
provider: 'local',
options: {
locales: {
...enSearch,
...zh_CNSearch,
...zh_TWSearch
}
}
}
},
transformPageData: (pageData) => {
// 为版本页单独设置标题
// https://github.com/vuejs/vitepress/discussions/2516
if (pageData.params?.version) {
pageData.title = `v${pageData.params.version}`
}
},
vite: {
plugins: [
groupIconVitePlugin()
],
},
})

View File

@@ -1,17 +1,14 @@
// https://vitepress.dev/guide/custom-theme
import { h } from 'vue'
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import './style.css'
import TwoslashFloatingVue from '@shikijs/vitepress-twoslash/client'
import Theme from 'vitepress/theme'
import '@shikijs/vitepress-twoslash/style.css'
import 'virtual:group-icons.css'
import "vitepress-markdown-timeline/dist/theme/index.css";
import type {EnhanceAppContext} from 'vitepress'
import './styles.css'
export default {
extends: DefaultTheme,
Layout: () => {
return h(DefaultTheme.Layout, null, {
// https://vitepress.dev/guide/extending-default-theme#layout-slots
})
},
enhanceApp({ app, router, siteData }) {
// ...
extends: Theme,
enhanceApp({app}: EnhanceAppContext) {
app.use(TwoslashFloatingVue)
}
} satisfies Theme
}

View File

@@ -1,139 +0,0 @@
/**
* Customize default theme styling by overriding CSS variables:
* https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
*/
/**
* Colors
*
* Each colors have exact same color scale system with 3 levels of solid
* colors with different brightness, and 1 soft color.
*
* - `XXX-1`: The most solid color used mainly for colored text. It must
* satisfy the contrast ratio against when used on top of `XXX-soft`.
*
* - `XXX-2`: The color used mainly for hover state of the button.
*
* - `XXX-3`: The color for solid background, such as bg color of the button.
* It must satisfy the contrast ratio with pure white (#ffffff) text on
* top of it.
*
* - `XXX-soft`: The color used for subtle background such as custom container
* or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
* on top of it.
*
* The soft color must be semi transparent alpha channel. This is crucial
* because it allows adding multiple "soft" colors on top of each other
* to create a accent, such as when having inline code block inside
* custom containers.
*
* - `default`: The color used purely for subtle indication without any
* special meanings attached to it such as bg color for menu hover state.
*
* - `brand`: Used for primary brand colors, such as link text, button with
* brand theme, etc.
*
* - `tip`: Used to indicate useful information. The default theme uses the
* brand color for this by default.
*
* - `warning`: Used to indicate warning to the users. Used in custom
* container, badges, etc.
*
* - `danger`: Used to show error, or dangerous message to the users. Used
* in custom container, badges, etc.
* -------------------------------------------------------------------------- */
:root {
--vp-c-default-1: var(--vp-c-gray-1);
--vp-c-default-2: var(--vp-c-gray-2);
--vp-c-default-3: var(--vp-c-gray-3);
--vp-c-default-soft: var(--vp-c-gray-soft);
--vp-c-brand-1: var(--vp-c-indigo-1);
--vp-c-brand-2: var(--vp-c-indigo-2);
--vp-c-brand-3: var(--vp-c-indigo-3);
--vp-c-brand-soft: var(--vp-c-indigo-soft);
--vp-c-tip-1: var(--vp-c-brand-1);
--vp-c-tip-2: var(--vp-c-brand-2);
--vp-c-tip-3: var(--vp-c-brand-3);
--vp-c-tip-soft: var(--vp-c-brand-soft);
--vp-c-warning-1: var(--vp-c-yellow-1);
--vp-c-warning-2: var(--vp-c-yellow-2);
--vp-c-warning-3: var(--vp-c-yellow-3);
--vp-c-warning-soft: var(--vp-c-yellow-soft);
--vp-c-danger-1: var(--vp-c-red-1);
--vp-c-danger-2: var(--vp-c-red-2);
--vp-c-danger-3: var(--vp-c-red-3);
--vp-c-danger-soft: var(--vp-c-red-soft);
}
/**
* Component: Button
* -------------------------------------------------------------------------- */
:root {
--vp-button-brand-border: transparent;
--vp-button-brand-text: var(--vp-c-white);
--vp-button-brand-bg: var(--vp-c-brand-3);
--vp-button-brand-hover-border: transparent;
--vp-button-brand-hover-text: var(--vp-c-white);
--vp-button-brand-hover-bg: var(--vp-c-brand-2);
--vp-button-brand-active-border: transparent;
--vp-button-brand-active-text: var(--vp-c-white);
--vp-button-brand-active-bg: var(--vp-c-brand-1);
}
/**
* Component: Home
* -------------------------------------------------------------------------- */
:root {
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: -webkit-linear-gradient(
120deg,
#bd34fe 30%,
#41d1ff
);
--vp-home-hero-image-background-image: linear-gradient(
-45deg,
#bd34fe 50%,
#47caff 50%
);
--vp-home-hero-image-filter: blur(44px);
}
@media (min-width: 640px) {
:root {
--vp-home-hero-image-filter: blur(56px);
}
}
@media (min-width: 960px) {
:root {
--vp-home-hero-image-filter: blur(68px);
}
}
/**
* Component: Custom Block
* -------------------------------------------------------------------------- */
:root {
--vp-custom-block-tip-border: transparent;
--vp-custom-block-tip-text: var(--vp-c-text-1);
--vp-custom-block-tip-bg: var(--vp-c-brand-soft);
--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
}
/**
* Component: Algolia
* -------------------------------------------------------------------------- */
.DocSearch {
--docsearch-primary-color: var(--vp-c-brand-1) !important;
}

View File

@@ -0,0 +1,20 @@
@import url('https://googlefonts.admincdn.com/css2?family=Noto+Color+Emoji&display=swap');
:root {
--vp-nav-logo-height: 36px;
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: -webkit-linear-gradient(
120deg,
#bd34fe 30%,
#41d1ff
);
}
.VPHero .VPImage {
filter: drop-shadow(-2px 4px 6px rgba(0, 0, 0, 0.2));
padding: 18px;
}
.icon {
font-family: 'Noto Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Apple Color Emoji', emoji;
}

7
crowdin.yml Normal file
View File

@@ -0,0 +1,7 @@
commit_message: '[skip ci] Update translations (%language%) %original_file_name%'
pull_request_title: 'l10n: update translations'
files:
- source: /en/**/*.md
translation: /%locale_with_underscore%/**/%file_name%.md
- source: /.vitepress/config/en.ts
translation: /.vitepress/config/%locale_with_underscore%.ts

View File

@@ -1,5 +1,5 @@
# 配置进程守护
1. 安装 Supervisor 管理器并打开。
2. Supervisor 管理器中创建需要守护的进程(运行用户不建议使用 root
3. 常见问题:[https://tom.moe/t/supervisor/3112](https://tom.moe/t/supervisor/3112)
# 配置进程守护
1. 安装 Supervisor 管理器并打开。
2. Supervisor 管理器中创建需要守护的进程(运行用户不建议使用 root
3. 常见问题:[https://tom.moe/t/supervisor/3112](https://tom.moe/t/supervisor/3112)

View File

View File

@@ -49,18 +49,18 @@ features:
<div style="display: flex; justify-content: space-around; align-items: center; flex-wrap: wrap;">
<a href="https://www.weixiaoduo.com/" style="padding: 1rem;">
<img width="160" src="/.github/assets/wxd.png" alt="微晓朵">
<img width="160" src="/wxd.png" alt="微晓朵">
</a>
<a href="https://www.dkdun.cn/aff/MQZZNVHQ" style="padding: 1rem;">
<img width="160" src="/.github/assets/dk.png" alt="林枫云">
<img width="160" src="/dk.png" alt="林枫云">
</a>
<a href="https://waf.pro/">
<img width="160" src="/.github/assets/wafpro.png" alt="WAFPRO" style="padding: 1rem;">
<img width="160" src="/wafpro.png" alt="WAFPRO" style="padding: 1rem;">
</a>
<a href="https://scdn.ddunyun.com/">
<img width="160" src="/.github/assets/ddunyun.png" alt="盾云SCDN" style="padding: 1rem;">
<img width="160" src="/ddunyun.png" alt="盾云SCDN" style="padding: 1rem;">
</a>
<a href="https://1ms.run/" style="padding: 1rem;">
<img width="160" src="/.github/assets/1ms.svg" alt="毫秒镜像">
<img width="160" src="/1ms.svg" alt="毫秒镜像">
</a>
</div>

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -1,63 +0,0 @@
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home
hero:
name: "耗子面板"
text: "简单轻量 • 高效运维"
tagline: 全能服务器运维管理面板
actions:
- theme: brand
text: 🌟 点亮 Star
link: https://github.com/tnb-labs/panel
target: _blank
- theme: alt
text: 快速安装
link: /quickstart/install
features:
- icon: ✨
title: 极低占用
details: Go 语言开发,安装包小,占用低,单文件运行,不会对系统性能造成影响
- icon: 🛠
title: 低破坏性
details: 设计为尽可能减少对系统的额外修改,在同类产品中,我们对系统的修改最少
- icon: 📅
title: 追随时代
details: 整体设计走在时代前沿,对新系统兼容性好,在同类产品中处于领先地位
- icon: 🚀
title: 高效运维
details: 功能完善,自定义能力强,既可快速部署小型网站,也可基于定制化需求部署复杂应用
- icon: ⛓️‍💥
title: 离线运行
details: 支持离线模式,甚至可以在部署完成后停止面板进程,不会对已有服务造成任何影响
- icon: 🛡
title: 安全稳定
details: 面板采用业界多种技术保障本体安全性,已在我们的多个生产环境中长期稳定运行
- icon: 💽
title: 全面开源
details: 少有的全开源面板,您可以在遵守开源协议的前提下对面板自由修改、二次开发
- icon: 🆓
title: 永久免费
details: 承诺面板本体未来不会引入任何收费/授权功能,永久免费使用
---
## 合作伙伴
<div style="display: flex; justify-content: space-around; align-items: center; flex-wrap: wrap;">
<a href="https://www.weixiaoduo.com/" style="padding: 1rem;">
<img width="160" src="/.github/assets/wxd.png" alt="微晓朵">
</a>
<a href="https://www.dkdun.cn/aff/MQZZNVHQ" style="padding: 1rem;">
<img width="160" src="/.github/assets/dk.png" alt="林枫云">
</a>
<a href="https://waf.pro/">
<img width="160" src="/.github/assets/wafpro.png" alt="WAFPRO" style="padding: 1rem;">
</a>
<a href="https://scdn.ddunyun.com/">
<img width="160" src="/.github/assets/ddunyun.png" alt="盾云SCDN" style="padding: 1rem;">
</a>
<a href="https://1ms.run/" style="padding: 1rem;">
<img width="160" src="/.github/assets/1ms.svg" alt="毫秒镜像">
</a>
</div>

View File

@@ -1,11 +1,25 @@
{
"devDependencies": {
"vitepress": "^1.5.0",
"vue": "^3.5.13"
},
"type": "module",
"name": "ratpanel-docs",
"version": "1.0.0",
"description": "RatPanel Documentation",
"author": "TNB",
"license": "MIT",
"scripts": {
"docs:dev": "vitepress dev",
"docs:build": "vitepress build",
"docs:preview": "vitepress preview"
},
"dependencies": {
"vitepress-markdown-timeline": "^1.2.2",
"vitepress-plugin-group-icons": "^1.3.8",
"vue": "^3.5.13"
},
"devDependencies": {
"@nolebase/vitepress-plugin-enhanced-mark": "^2.15.1",
"@nolebase/vitepress-plugin-enhanced-readabilities": "^2.15.1",
"@shikijs/vitepress-twoslash": "^3.2.1",
"@types/node": "^22.14.0",
"vitepress": "2.0.0-alpha.4"
}
}

2140
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 819 KiB

After

Width:  |  Height:  |  Size: 819 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

33
tsconfig.json Normal file
View File

@@ -0,0 +1,33 @@
{
"compilerOptions": {
"jsx": "preserve",
"lib": [
"DOM",
"ESNext"
],
"module": "ESNext",
"moduleResolution": "Bundler",
"resolveJsonModule": true,
"strict": true,
"strictNullChecks": true,
"noFallthroughCasesInSwitch": true,
"noImplicitAny": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noEmit": true,
"removeComments": false,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"verbatimModuleSyntax": true,
"skipLibCheck": true
},
"include": [
"**/.vitepress/**/*.ts",
"**/.vitepress/**/*.mts",
"**/.vitepress/**/*.vue"
],
"exclude": [
"node_modules"
]
}