fix: fix known issues. fixed #59,fixed #61, fixed #67, fixed #68 [deploy]

pull/48/MERGE
vince 2024-07-29 00:19:26 +08:00
parent b98f9f9baa
commit 66fd052709
26 changed files with 163 additions and 155 deletions

View File

@ -8,7 +8,7 @@ on:
jobs:
deploy-push-ftp:
name: Deploy Push Ftp
if: github.actor != 'dependabot[bot]' && !contains(github.event.head_commit.message, '[skip ci]')
if: github.actor != 'dependabot[bot]' && !contains(github.event.head_commit.message, '[skip ci]') && contains(github.event.head_commit.message, '[deploy]')
runs-on: ubuntu-latest
strategy:
matrix:

View File

@ -1,5 +1,5 @@
# 应用标题
VITE_GLOB_APP_TITLE=Vben Admin
VITE_APP_TITLE=Vben Admin
# 应用命名空间用于缓存、store等功能的前缀确保隔离
VITE_APP_NAMESPACE=vben-web-antd

View File

@ -11,8 +11,8 @@
name="viewport"
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
/>
<!-- 由 vite 注入 VITE_GLOB_APP_TITLE 变量,在 .env 文件内配置 -->
<title><%= VITE_GLOB_APP_TITLE %></title>
<!-- 由 vite 注入 VITE_APP_TITLE 变量,在 .env 文件内配置 -->
<title><%= VITE_APP_TITLE %></title>
<link rel="icon" href="/favicon.ico" />
<script>
// 生产环境下注入百度统计

View File

@ -1,15 +1,9 @@
import { useAppConfig } from '@vben/hooks';
import { defineOverridesPreferences } from '@vben/preferences';
const { appTitle } = useAppConfig(import.meta.env, import.meta.env.PROD);
/**
* @description
* 使
*/
export const overridesPreferences = defineOverridesPreferences({
// overrides
app: {
name: appTitle,
},
});

View File

@ -1,24 +1,10 @@
import {
defaultImportmapOptions,
defineConfig,
getDefaultPwaOptions,
loadAndConvertEnv,
} from '@vben/vite-config';
import { defineConfig } from '@vben/vite-config';
export default defineConfig(async () => {
const { appTitle, base, port, ...envConfig } = await loadAndConvertEnv();
return {
application: {
...envConfig,
importmap: false,
importmapOptions: defaultImportmapOptions,
pwa: false,
pwaOptions: getDefaultPwaOptions(appTitle),
},
application: {},
vite: {
base,
server: {
port,
proxy: {
'/api': {
changeOrigin: true,

View File

@ -8,11 +8,14 @@ import { findMonorepoRoot } from '@vben/node-utils';
import { defineConfig, loadEnv, mergeConfig } from 'vite';
import { getDefaultPwaOptions } from '../options';
import { loadApplicationPlugins } from '../plugins';
import { loadAndConvertEnv } from '../utils/env';
import { getCommonConfig } from './common';
function defineApplicationConfig(userConfigPromise: DefineApplicationOptions) {
return defineConfig(async (config) => {
const { appTitle, base, port, ...envConfig } = await loadAndConvertEnv();
const options = await userConfigPromise?.(config);
const { command, mode } = config;
const { application = {}, vite = {} } = options || {};
@ -40,12 +43,15 @@ function defineApplicationConfig(userConfigPromise: DefineApplicationOptions) {
'Vben Admin Docs': 'https://docs.vben.pro',
},
pwa: true,
pwaOptions: getDefaultPwaOptions(appTitle),
...envConfig,
...application,
});
const { injectGlobalScss = true } = application;
const applicationConfig: UserConfig = {
base,
build: {
rollupOptions: {
output: {
@ -69,6 +75,7 @@ function defineApplicationConfig(userConfigPromise: DefineApplicationOptions) {
plugins,
server: {
host: true,
port,
warmup: {
// 预热文件
clientFiles: ['./index.html', './src/{views,layouts}/*'],

View File

@ -28,7 +28,7 @@ const getDefaultPwaOptions = (name: string): Partial<PwaPluginOptions> => ({
const defaultImportmapOptions: ImportmapPluginOptions = {
// 通过 Importmap CDN 方式引入,
// 目前只有esm.sh源兼容性好一点jspm.io对于 esm 入口要求高
defaultProvider: 'esm.sh',
defaultProvider: 'jspm.io',
importmap: [
{ name: 'vue' },
{ name: 'pinia' },

View File

@ -110,5 +110,5 @@
</style>
<div class="loading" id="__app-loading__">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
<div class="title"><%= VITE_GLOB_APP_TITLE %></div>
<div class="title"><%= VITE_APP_TITLE %></div>
</div>

View File

@ -109,5 +109,5 @@
</style>
<div class="loading" id="__app-loading__">
<div class="loader"></div>
<div class="title"><%= VITE_GLOB_APP_TITLE %></div>
<div class="title"><%= VITE_APP_TITLE %></div>
</div>

View File

@ -64,10 +64,10 @@ async function loadAndConvertEnv(
> {
const envConfig = await loadEnv(match, confFiles);
const {
VITE_APP_TITLE,
VITE_BASE,
VITE_COMPRESS,
VITE_DEVTOOLS,
VITE_GLOB_APP_TITLE,
VITE_INJECT_APP_LOADING,
VITE_NITRO_MOCK,
VITE_PORT,
@ -80,7 +80,7 @@ async function loadAndConvertEnv(
.filter((item) => item === 'brotli' || item === 'gzip');
return {
appTitle: VITE_GLOB_APP_TITLE ?? 'Vben Admin',
appTitle: VITE_APP_TITLE ?? 'Vben Admin',
base: VITE_BASE || '/',
compress: !!compress,
compressTypes: compressTypes as ('brotli' | 'gzip')[],

View File

@ -31,14 +31,13 @@
"build:analyze": "turbo build:analyze",
"build:docker": "./build-local-docker-image.sh",
"changeset": "pnpm exec changeset",
"check": "pnpm run check:dep && pnpm run check:circular && pnpm run check:type && pnpm run check:cspell",
"check": "pnpm run check:circular && pnpm run check:dep && pnpm run check:type",
"check:circular": "vsh check-circular",
"check:cspell": "cspell lint \"**/*.ts\" \"**/README.md\" \".changeset/*.md\" --no-progress",
"check:dep": "vsh check-dep",
"check:type": "turbo run typecheck",
"clean": "vsh clean",
"commit": "czg",
"dev": "cross-env TURBO_UI=1 turbo run dev",
"dev": "cross-env turbo run dev",
"dev:docs": "pnpm -F @vben/website run docs:dev",
"format": "vsh lint --format",
"lint": "vsh lint",
@ -56,7 +55,7 @@
"@changesets/cli": "^2.27.7",
"@ls-lint/ls-lint": "^2.2.3",
"@types/jsdom": "^21.1.7",
"@types/node": "^20.14.12",
"@types/node": "^22.0.0",
"@vben/commitlint-config": "workspace:*",
"@vben/eslint-config": "workspace:*",
"@vben/lint-staged-config": "workspace:*",
@ -95,11 +94,6 @@
"canvas",
"node-gyp",
"playwright"
],
"updateConfig": {
"ignoreDependencies": [
"zx"
]
}
]
}
}

View File

@ -31,7 +31,7 @@ function handleClick(path?: string) {
>
<li>
<a href="javascript:void 0" @click.stop="handleClick(item.path)">
<span class="flex-center h-full">
<span class="flex-center z-10 h-full">
<VbenIcon
v-if="item.icon && showIcon"
:icon="item.icon"

View File

@ -11,6 +11,7 @@ import { cn } from '@vben-core/toolkit';
interface Props {
class?: HTMLAttributes['class'];
horizontal?: boolean;
scrollBarClass?: HTMLAttributes['class'];
shadow?: boolean;
shadowBorder?: boolean;
}
@ -58,7 +59,11 @@ function handleScroll(event: Event) {
}"
class="scrollbar-bottom-shadow pointer-events-none absolute bottom-0 z-10 h-12 w-full opacity-0 transition-opacity duration-300 ease-in-out will-change-[opacity]"
></div>
<ScrollBar v-if="horizontal" orientation="horizontal" />
<ScrollBar
v-if="horizontal"
:class="scrollBarClass"
orientation="horizontal"
/>
</ScrollArea>
</template>

View File

@ -71,7 +71,11 @@ function scrollIntoView() {
<template>
<div :style="style" class="tabs-chrome size-full flex-1 overflow-hidden pt-1">
<VbenScrollbar class="tabs-chrome__scrollbar h-full" horizontal>
<VbenScrollbar
class="tabs-chrome__scrollbar h-full"
horizontal
scroll-bar-class="z-10"
>
<!-- footer -> 4px -->
<div
ref="contentRef"

View File

@ -72,7 +72,11 @@ function scrollIntoView() {
<template>
<div class="h-full flex-1 overflow-hidden">
<VbenScrollbar class="tabs-scrollbar h-full" horizontal>
<VbenScrollbar
class="tabs-scrollbar h-full"
horizontal
scroll-bar-class="z-10"
>
<div
:class="contentClass"
class="relative !flex h-full w-max items-center"

View File

@ -45,6 +45,11 @@ async function initTabsSortable() {
const el = document.querySelectorAll(`.${contentClass}`)?.[0] as HTMLElement;
const resetElState = () => {
el.style.cursor = 'default';
el.classList.remove('dragging');
};
const { initializeSortable } = useSortable(el, {
filter: (_evt, target: HTMLElement) => {
const parent = findParentElement(target);
@ -57,16 +62,20 @@ async function initTabsSortable() {
const { srcElement } = (evt as any).originalEvent;
if (!srcElement) {
resetElState();
return;
}
const srcParent = findParentElement(srcElement);
if (!srcParent) {
resetElState();
return;
}
if (!srcParent.classList.contains('dragable')) {
resetElState();
return;
}
@ -79,8 +88,7 @@ async function initTabsSortable() {
) {
emit('sortTabs', oldIndex, newIndex);
}
el.classList.remove('dragging');
el.style.cursor = 'default';
resetElState();
},
onMove(evt) {
const parent = findParentElement(evt.related);

View File

@ -15,10 +15,9 @@ export function useAppConfig(
? window._VBEN_ADMIN_PRO_APP_CONF_
: (env as VbenAdminProAppConfigRaw);
const { VITE_GLOB_API_URL, VITE_GLOB_APP_TITLE } = config;
const { VITE_GLOB_API_URL } = config;
return {
apiURL: VITE_GLOB_API_URL,
appTitle: VITE_GLOB_APP_TITLE,
};
}

View File

@ -121,7 +121,10 @@ export const useCoreTabbarStore = defineStore('core-tabbar', {
} else {
// 页面已经存在,不重复添加选项卡,只更新选项卡参数
const currentTab = toRaw(this.tabs)[tabIndex];
this.tabs.splice(tabIndex, 1, { ...currentTab, ...tab });
if (!currentTab.meta.affixTab) {
const mergedTab = { ...currentTab, ...tab };
this.tabs.splice(tabIndex, 1, mergedTab);
}
}
this.updateCacheTab();
},
@ -269,7 +272,8 @@ export const useCoreTabbarStore = defineStore('core-tabbar', {
);
if (index !== -1) {
tab.meta.affixTab = true;
this.addTab(tab);
// this.addTab(tab);
this.tabs.splice(index, 1, tab);
}
},
@ -369,7 +373,8 @@ export const useCoreTabbarStore = defineStore('core-tabbar', {
if (index !== -1) {
tab.meta.affixTab = false;
this.addTab(tab);
// this.addTab(tab);
this.tabs.splice(index, 1, tab);
}
},

View File

@ -8,12 +8,10 @@ declare module 'vue-router' {
export interface VbenAdminProAppConfigRaw {
VITE_GLOB_API_URL: string;
VITE_GLOB_APP_TITLE: string;
}
export interface ApplicationConfig {
apiURL: string;
appTitle: string;
}
declare global {

View File

@ -26,8 +26,8 @@ importers:
specifier: ^21.1.7
version: 21.1.7
'@types/node':
specifier: ^20.14.12
version: 20.14.12
specifier: ^22.0.0
version: 22.0.0
'@vben/commitlint-config':
specifier: workspace:*
version: link:internal/lint-configs/commitlint-config
@ -87,10 +87,10 @@ importers:
version: 2.0.0(sass@1.77.8)(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4))
vite:
specifier: ^5.3.5
version: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
version: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vitest:
specifier: ^2.0.4
version: 2.0.4(@types/node@20.14.12)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3)
version: 2.0.4(@types/node@22.0.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3)
vue-tsc:
specifier: ^2.0.29
version: 2.0.29(typescript@5.5.4)
@ -168,7 +168,7 @@ importers:
dependencies:
'@commitlint/cli':
specifier: ^19.3.0
version: 19.3.0(@types/node@20.14.12)(typescript@5.5.4)
version: 19.3.0(@types/node@22.0.0)(typescript@5.5.4)
'@commitlint/config-conventional':
specifier: ^19.2.2
version: 19.2.2
@ -247,7 +247,7 @@ importers:
version: 4.0.1(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)
eslint-plugin-vitest:
specifier: ^0.5.4
version: 0.5.4(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3))
version: 0.5.4(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@22.0.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3))
eslint-plugin-vue:
specifier: ^9.27.0
version: 9.27.0(eslint@9.8.0)
@ -408,7 +408,7 @@ importers:
version: link:../../packages/types
vite:
specifier: ^5.3.5
version: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
version: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
internal/vite-config:
dependencies:
@ -432,13 +432,13 @@ importers:
version: 2.0.2
vite-plugin-lib-inject-css:
specifier: ^2.1.1
version: 2.1.1(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))
version: 2.1.1(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))
vite-plugin-pwa:
specifier: ^0.20.1
version: 0.20.1(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(workbox-build@7.1.1)(workbox-window@7.1.0)
version: 0.20.1(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(workbox-build@7.1.1)(workbox-window@7.1.0)
vite-plugin-vue-devtools:
specifier: ^7.3.7
version: 7.3.7(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
version: 7.3.7(rollup@4.19.1)(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
devDependencies:
'@types/html-minifier-terser':
specifier: ^7.0.2
@ -448,10 +448,10 @@ importers:
version: link:../node-utils
'@vitejs/plugin-vue':
specifier: ^5.1.1
version: 5.1.1(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
version: 5.1.1(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
'@vitejs/plugin-vue-jsx':
specifier: ^4.0.0
version: 4.0.0(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
version: 4.0.0(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
dayjs:
specifier: ^1.11.12
version: 1.11.12
@ -469,16 +469,16 @@ importers:
version: 1.77.8
vite:
specifier: ^5.3.5
version: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
version: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vite-plugin-compression:
specifier: ^0.5.1
version: 0.5.1(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))
version: 0.5.1(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))
vite-plugin-dts:
specifier: 4.0.0-beta.1
version: 4.0.0-beta.1(@types/node@20.14.12)(rollup@4.19.1)(typescript@5.5.4)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))
version: 4.0.0-beta.1(@types/node@22.0.0)(rollup@4.19.1)(typescript@5.5.4)(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))
vite-plugin-html:
specifier: ^3.2.2
version: 3.2.2(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))
version: 3.2.2(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))
packages/@core/hooks:
dependencies:
@ -946,7 +946,7 @@ importers:
devDependencies:
vitepress:
specifier: ^1.3.1
version: 1.3.1(@algolia/client-search@4.24.0)(@types/node@20.14.12)(async-validator@4.2.5)(axios@1.7.2)(nprogress@0.2.0)(postcss@8.4.40)(qrcode@1.5.3)(sass@1.77.8)(search-insights@2.15.0)(sortablejs@1.15.2)(terser@5.31.3)(typescript@5.5.4)
version: 1.3.1(@algolia/client-search@4.24.0)(@types/node@22.0.0)(async-validator@4.2.5)(axios@1.7.2)(nprogress@0.2.0)(postcss@8.4.40)(qrcode@1.5.3)(sass@1.77.8)(search-insights@2.15.0)(sortablejs@1.15.2)(terser@5.31.3)(typescript@5.5.4)
vue:
specifier: ^3.4.34
version: 3.4.34(typescript@5.5.4)
@ -3672,6 +3672,9 @@ packages:
'@types/node@20.14.12':
resolution: {integrity: sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==}
'@types/node@22.0.0':
resolution: {integrity: sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@ -8636,6 +8639,9 @@ packages:
undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
undici-types@6.11.1:
resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==}
undici@5.28.4:
resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==}
engines: {node: '>=14.0'}
@ -10475,11 +10481,11 @@ snapshots:
dependencies:
mime: 3.0.0
'@commitlint/cli@19.3.0(@types/node@20.14.12)(typescript@5.5.4)':
'@commitlint/cli@19.3.0(@types/node@22.0.0)(typescript@5.5.4)':
dependencies:
'@commitlint/format': 19.3.0
'@commitlint/lint': 19.2.2
'@commitlint/load': 19.2.0(@types/node@20.14.12)(typescript@5.5.4)
'@commitlint/load': 19.2.0(@types/node@22.0.0)(typescript@5.5.4)
'@commitlint/read': 19.2.1
'@commitlint/types': 19.0.3
execa: 8.0.1
@ -10526,7 +10532,7 @@ snapshots:
'@commitlint/rules': 19.0.3
'@commitlint/types': 19.0.3
'@commitlint/load@19.2.0(@types/node@20.14.12)(typescript@5.5.4)':
'@commitlint/load@19.2.0(@types/node@22.0.0)(typescript@5.5.4)':
dependencies:
'@commitlint/config-validator': 19.0.3
'@commitlint/execute-rule': 19.0.0
@ -10534,7 +10540,7 @@ snapshots:
'@commitlint/types': 19.0.3
chalk: 5.3.0
cosmiconfig: 9.0.0(typescript@5.5.4)
cosmiconfig-typescript-loader: 5.0.0(@types/node@20.14.12)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4)
cosmiconfig-typescript-loader: 5.0.0(@types/node@22.0.0)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4)
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
lodash.uniq: 4.5.0
@ -11565,23 +11571,23 @@ snapshots:
- encoding
- supports-color
'@microsoft/api-extractor-model@7.29.3(@types/node@20.14.12)':
'@microsoft/api-extractor-model@7.29.3(@types/node@22.0.0)':
dependencies:
'@microsoft/tsdoc': 0.15.0
'@microsoft/tsdoc-config': 0.17.0
'@rushstack/node-core-library': 5.5.0(@types/node@20.14.12)
'@rushstack/node-core-library': 5.5.0(@types/node@22.0.0)
transitivePeerDependencies:
- '@types/node'
'@microsoft/api-extractor@7.47.2(@types/node@20.14.12)':
'@microsoft/api-extractor@7.47.2(@types/node@22.0.0)':
dependencies:
'@microsoft/api-extractor-model': 7.29.3(@types/node@20.14.12)
'@microsoft/api-extractor-model': 7.29.3(@types/node@22.0.0)
'@microsoft/tsdoc': 0.15.0
'@microsoft/tsdoc-config': 0.17.0
'@rushstack/node-core-library': 5.5.0(@types/node@20.14.12)
'@rushstack/node-core-library': 5.5.0(@types/node@22.0.0)
'@rushstack/rig-package': 0.5.2
'@rushstack/terminal': 0.13.2(@types/node@20.14.12)
'@rushstack/ts-command-line': 4.22.2(@types/node@20.14.12)
'@rushstack/terminal': 0.13.2(@types/node@22.0.0)
'@rushstack/ts-command-line': 4.22.2(@types/node@22.0.0)
lodash: 4.17.21
minimatch: 3.0.8
resolve: 1.22.8
@ -11991,7 +11997,7 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.19.1':
optional: true
'@rushstack/node-core-library@5.5.0(@types/node@20.14.12)':
'@rushstack/node-core-library@5.5.0(@types/node@22.0.0)':
dependencies:
ajv: 8.13.0
ajv-draft-04: 1.0.0(ajv@8.13.0)
@ -12002,23 +12008,23 @@ snapshots:
resolve: 1.22.8
semver: 7.5.4
optionalDependencies:
'@types/node': 20.14.12
'@types/node': 22.0.0
'@rushstack/rig-package@0.5.2':
dependencies:
resolve: 1.22.8
strip-json-comments: 3.1.1
'@rushstack/terminal@0.13.2(@types/node@20.14.12)':
'@rushstack/terminal@0.13.2(@types/node@22.0.0)':
dependencies:
'@rushstack/node-core-library': 5.5.0(@types/node@20.14.12)
'@rushstack/node-core-library': 5.5.0(@types/node@22.0.0)
supports-color: 8.1.1
optionalDependencies:
'@types/node': 20.14.12
'@types/node': 22.0.0
'@rushstack/ts-command-line@4.22.2(@types/node@20.14.12)':
'@rushstack/ts-command-line@4.22.2(@types/node@22.0.0)':
dependencies:
'@rushstack/terminal': 0.13.2(@types/node@20.14.12)
'@rushstack/terminal': 0.13.2(@types/node@22.0.0)
'@types/argparse': 1.0.38
argparse: 1.0.10
string-argv: 0.3.2
@ -12092,7 +12098,7 @@ snapshots:
'@types/conventional-commits-parser@5.0.0':
dependencies:
'@types/node': 20.14.12
'@types/node': 22.0.0
'@types/eslint@8.56.11':
dependencies:
@ -12111,7 +12117,7 @@ snapshots:
'@types/fs-extra@11.0.4':
dependencies:
'@types/jsonfile': 6.1.4
'@types/node': 20.14.12
'@types/node': 22.0.0
'@types/hast@3.0.4':
dependencies:
@ -12121,11 +12127,11 @@ snapshots:
'@types/http-proxy@1.17.14':
dependencies:
'@types/node': 20.14.12
'@types/node': 22.0.0
'@types/jsdom@21.1.7':
dependencies:
'@types/node': 20.14.12
'@types/node': 22.0.0
'@types/tough-cookie': 4.0.5
parse5: 7.1.2
@ -12133,7 +12139,7 @@ snapshots:
'@types/jsonfile@6.1.4':
dependencies:
'@types/node': 20.14.12
'@types/node': 22.0.0
'@types/linkify-it@5.0.0': {}
@ -12167,6 +12173,11 @@ snapshots:
'@types/node@20.14.12':
dependencies:
undici-types: 5.26.5
optional: true
'@types/node@22.0.0':
dependencies:
undici-types: 6.11.1
'@types/normalize-package-data@2.4.4': {}
@ -12299,19 +12310,19 @@ snapshots:
- encoding
- supports-color
'@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))':
'@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))':
dependencies:
'@babel/core': 7.24.9
'@babel/plugin-transform-typescript': 7.24.8(@babel/core@7.24.9)
'@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.9)
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vue: 3.4.34(typescript@5.5.4)
transitivePeerDependencies:
- supports-color
'@vitejs/plugin-vue@5.1.1(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))':
'@vitejs/plugin-vue@5.1.1(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))':
dependencies:
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vue: 3.4.34(typescript@5.5.4)
'@vitest/expect@2.0.4':
@ -12484,14 +12495,14 @@ snapshots:
dependencies:
'@vue/devtools-kit': 7.3.6
'@vue/devtools-core@7.3.7(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))':
'@vue/devtools-core@7.3.7(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))':
dependencies:
'@vue/devtools-kit': 7.3.7
'@vue/devtools-shared': 7.3.7
mitt: 3.0.1
nanoid: 3.3.7
pathe: 1.1.2
vite-hot-client: 0.2.3(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))
vite-hot-client: 0.2.3(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))
vue: 3.4.34(typescript@5.5.4)
transitivePeerDependencies:
- vite
@ -13319,9 +13330,9 @@ snapshots:
core-util-is@1.0.3: {}
cosmiconfig-typescript-loader@5.0.0(@types/node@20.14.12)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4):
cosmiconfig-typescript-loader@5.0.0(@types/node@22.0.0)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4):
dependencies:
'@types/node': 20.14.12
'@types/node': 22.0.0
cosmiconfig: 9.0.0(typescript@5.5.4)
jiti: 1.21.6
typescript: 5.5.4
@ -14215,13 +14226,13 @@ snapshots:
optionalDependencies:
'@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)
eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3)):
eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)(vitest@2.0.4(@types/node@22.0.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3)):
dependencies:
'@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.5.4)
eslint: 9.8.0
optionalDependencies:
'@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)
vitest: 2.0.4(@types/node@20.14.12)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3)
vitest: 2.0.4(@types/node@22.0.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3)
transitivePeerDependencies:
- supports-color
- typescript
@ -17745,6 +17756,8 @@ snapshots:
undici-types@5.26.5: {}
undici-types@6.11.1: {}
undici@5.28.4:
dependencies:
'@fastify/busboy': 2.1.1
@ -17904,17 +17917,17 @@ snapshots:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
vite-hot-client@0.2.3(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)):
vite-hot-client@0.2.3(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)):
dependencies:
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vite-node@2.0.4(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3):
vite-node@2.0.4(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3):
dependencies:
cac: 6.7.14
debug: 4.3.5
pathe: 1.1.2
tinyrainbow: 1.2.0
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
transitivePeerDependencies:
- '@types/node'
- less
@ -17925,18 +17938,18 @@ snapshots:
- supports-color
- terser
vite-plugin-compression@0.5.1(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)):
vite-plugin-compression@0.5.1(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)):
dependencies:
chalk: 4.1.2
debug: 4.3.5
fs-extra: 10.1.0
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
transitivePeerDependencies:
- supports-color
vite-plugin-dts@4.0.0-beta.1(@types/node@20.14.12)(rollup@4.19.1)(typescript@5.5.4)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)):
vite-plugin-dts@4.0.0-beta.1(@types/node@22.0.0)(rollup@4.19.1)(typescript@5.5.4)(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)):
dependencies:
'@microsoft/api-extractor': 7.47.2(@types/node@20.14.12)
'@microsoft/api-extractor': 7.47.2(@types/node@22.0.0)
'@rollup/pluginutils': 5.1.0(rollup@4.19.1)
'@volar/typescript': 2.3.4
'@vue/language-core': 2.0.19(typescript@5.5.4)
@ -17948,13 +17961,13 @@ snapshots:
typescript: 5.5.4
vue-tsc: 2.0.19(typescript@5.5.4)
optionalDependencies:
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
vite-plugin-html@3.2.2(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)):
vite-plugin-html@3.2.2(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)):
dependencies:
'@rollup/pluginutils': 4.2.1
colorette: 2.0.20
@ -17968,9 +17981,9 @@ snapshots:
html-minifier-terser: 6.1.0
node-html-parser: 5.4.2
pathe: 0.2.0
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vite-plugin-inspect@0.8.5(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)):
vite-plugin-inspect@0.8.5(rollup@4.19.1)(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.0(rollup@4.19.1)
@ -17981,46 +17994,46 @@ snapshots:
perfect-debounce: 1.0.0
picocolors: 1.0.1
sirv: 2.0.4
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
transitivePeerDependencies:
- rollup
- supports-color
vite-plugin-lib-inject-css@2.1.1(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)):
vite-plugin-lib-inject-css@2.1.1(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)):
dependencies:
'@ast-grep/napi': 0.22.6
magic-string: 0.30.10
picocolors: 1.0.1
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vite-plugin-pwa@0.20.1(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(workbox-build@7.1.1)(workbox-window@7.1.0):
vite-plugin-pwa@0.20.1(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(workbox-build@7.1.1)(workbox-window@7.1.0):
dependencies:
debug: 4.3.5
pretty-bytes: 6.1.1
tinyglobby: 0.2.0
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
workbox-build: 7.1.1
workbox-window: 7.1.0
transitivePeerDependencies:
- supports-color
vite-plugin-vue-devtools@7.3.7(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4)):
vite-plugin-vue-devtools@7.3.7(rollup@4.19.1)(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4)):
dependencies:
'@vue/devtools-core': 7.3.7(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
'@vue/devtools-core': 7.3.7(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
'@vue/devtools-kit': 7.3.7
'@vue/devtools-shared': 7.3.7
execa: 8.0.1
sirv: 2.0.4
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite-plugin-inspect: 0.8.5(rollup@4.19.1)(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))
vite-plugin-vue-inspector: 5.1.3(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vite-plugin-inspect: 0.8.5(rollup@4.19.1)(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))
vite-plugin-vue-inspector: 5.1.3(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))
transitivePeerDependencies:
- '@nuxt/kit'
- rollup
- supports-color
- vue
vite-plugin-vue-inspector@5.1.3(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)):
vite-plugin-vue-inspector@5.1.3(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)):
dependencies:
'@babel/core': 7.24.9
'@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.24.9)
@ -18031,29 +18044,29 @@ snapshots:
'@vue/compiler-dom': 3.4.33
kolorist: 1.8.0
magic-string: 0.30.10
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
transitivePeerDependencies:
- supports-color
vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3):
vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3):
dependencies:
esbuild: 0.21.5
postcss: 8.4.40
rollup: 4.19.0
optionalDependencies:
'@types/node': 20.14.12
'@types/node': 22.0.0
fsevents: 2.3.3
sass: 1.77.8
terser: 5.31.3
vitepress@1.3.1(@algolia/client-search@4.24.0)(@types/node@20.14.12)(async-validator@4.2.5)(axios@1.7.2)(nprogress@0.2.0)(postcss@8.4.40)(qrcode@1.5.3)(sass@1.77.8)(search-insights@2.15.0)(sortablejs@1.15.2)(terser@5.31.3)(typescript@5.5.4):
vitepress@1.3.1(@algolia/client-search@4.24.0)(@types/node@22.0.0)(async-validator@4.2.5)(axios@1.7.2)(nprogress@0.2.0)(postcss@8.4.40)(qrcode@1.5.3)(sass@1.77.8)(search-insights@2.15.0)(sortablejs@1.15.2)(terser@5.31.3)(typescript@5.5.4):
dependencies:
'@docsearch/css': 3.6.1
'@docsearch/js': 3.6.1(@algolia/client-search@4.24.0)(search-insights@2.15.0)
'@shikijs/core': 1.11.0
'@shikijs/transformers': 1.11.0
'@types/markdown-it': 14.1.1
'@vitejs/plugin-vue': 5.1.1(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
'@vitejs/plugin-vue': 5.1.1(vite@5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3))(vue@3.4.34(typescript@5.5.4))
'@vue/devtools-api': 7.3.6
'@vue/shared': 3.4.34
'@vueuse/core': 10.11.0(vue@3.4.34(typescript@5.5.4))
@ -18062,7 +18075,7 @@ snapshots:
mark.js: 8.11.1
minisearch: 7.1.0
shiki: 1.11.0
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vue: 3.4.34(typescript@5.5.4)
optionalDependencies:
postcss: 8.4.40
@ -18093,7 +18106,7 @@ snapshots:
- typescript
- universal-cookie
vitest@2.0.4(@types/node@20.14.12)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3):
vitest@2.0.4(@types/node@22.0.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3):
dependencies:
'@ampproject/remapping': 2.3.0
'@vitest/expect': 2.0.4
@ -18111,11 +18124,11 @@ snapshots:
tinybench: 2.8.0
tinypool: 1.0.0
tinyrainbow: 1.2.0
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite-node: 2.0.4(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite: 5.3.5(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
vite-node: 2.0.4(@types/node@22.0.0)(sass@1.77.8)(terser@5.31.3)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 20.14.12
'@types/node': 22.0.0
jsdom: 24.1.1
transitivePeerDependencies:
- less

View File

@ -20,6 +20,7 @@ async function runLint({ format }: LintCommandOptions) {
}
$.verbose = true;
await Promise.all([
$`cspell lint "**/*.ts" "**/README.md" ".changeset/*.md" --no-progress`,
$`eslint . --cache`,
// $`ls-lint`,
$`prettier . --ignore-unknown --check --cache`,

View File

@ -18,7 +18,7 @@
::: tip
因为微信群人数有限制,加微信群前,你可以通过[赞助](../sponsor/personal.md)任意金额,并备注 `加入微信群`,作者会将你拉入微信群。也可以主动发送截图给作者
因为微信群人数有限制,加微信群前,你可以通过[赞助](../sponsor/personal.md)任意金额,以主动发送截图给作者,备注`加入微信群`即可
:::

View File

@ -26,7 +26,7 @@
`package.json` 中引入包:
```json
```json {3}
{
"dependencies": {
"@vben/utils": "workspace:*"
@ -46,7 +46,7 @@ import { isString } from '@vben/utils';
在项目中,你可以看到一些 `#` 开头的路径,例如: `#/api`、`#/views`, 这些路径都是别名,用于快速定位到某个目录。它不是通过 `vite``alias` 实现的,而是通过 `Node.js` 本身的 [subpath imports](https://nodejs.org/api/packages.html#subpath-imports) 原理。只需要在 `package.json` 中配置 `imports` 字段即可。
```json
```json {3}
{
"imports": {
"#/*": "./src/*"
@ -56,7 +56,7 @@ import { isString } from '@vben/utils';
为了 IDE 能够识别这些别名,我们还需要在`tsconfig.json`内配置:
```json
```json {5}
{
"compilerOptions": {
"baseUrl": ".",

View File

@ -55,11 +55,9 @@ npm 脚本是项目常见的配置,用于执行一些常见的任务,比如
// changeset 版本管理
"changeset": "pnpm exec changeset",
// 检查项目各种问题
"check": "pnpm run check:dep && pnpm run check:circular && pnpm run check:type && pnpm run check:cspell",
"check": "pnpm run check:circular && pnpm run check:dep && pnpm run check:type",,
// 检查循环引用
"check:circular": "vsh check-circular",
// 检查拼写
"check:cspell": "cspell lint \"**/*.ts\" \"**/README.md\" \".changeset/*.md\" --no-progress",
// 检查依赖
"check:dep": "vsh check-dep",
// 检查类型

View File

@ -31,7 +31,7 @@
```bash [.env]
# 应用标题
VITE_GLOB_APP_TITLE=Vben Admin
VITE_APP_TITLE=Vben Admin
# 应用命名空间用于缓存、store等功能的前缀确保隔离
VITE_APP_NAMESPACE=vben-web-antd
@ -88,7 +88,6 @@ VITE_INJECT_APP_LOADING=true
```ts
window._VBEN_ADMIN_PRO_APP_CONF_ = {
VITE_GLOB_API_URL: 'https://mock-napi.vben.pro/api',
VITE_GLOB_APP_TITLE: 'Vben Admin',
};
Object.freeze(window._VBEN_ADMIN_PRO_APP_CONF_);
Object.defineProperty(window, '_VBEN_ADMIN_PRO_APP_CONF_', {
@ -124,13 +123,11 @@ const { apiURL } = useAppConfig(import.meta.env, import.meta.env.PROD);
```ts
export interface VbenAdminProAppConfigRaw {
VITE_GLOB_API_URL: string;
VITE_GLOB_APP_TITLE: string;
VITE_GLOB_OTHER_API_URL: string; // [!code ++]
}
export interface ApplicationConfig {
apiURL: string;
appTitle: string;
otherApiURL: string; // [!code ++]
}
```
@ -159,17 +156,12 @@ const { otherApiURL } = useAppConfig(import.meta.env, import.meta.env.PROD);
import { useAppConfig } from '@vben/hooks';
import { defineOverridesPreferences } from '@vben/preferences';
const { appTitle } = useAppConfig(import.meta.env, import.meta.env.PROD);
/**
* @description 项目配置文件
* 只需要覆盖项目中的一部分配置,不需要的配置不用覆盖,会自动使用默认配置
*/
export const overridesPreferences = defineOverridesPreferences({
// overrides
app: {
name: appTitle,
},
});
```

View File

@ -22,7 +22,7 @@ VITE_INJECT_APP_LOADING=false
::: tip
- 你可以使用跟`index.html`一样的语法,比如`VITE_GLOB_APP_TITLE`变量,来获取应用的标题。
- 你可以使用跟`index.html`一样的语法,比如`VITE_APP_TITLE`变量,来获取应用的标题。
- 必须保证有一个`id="__app-loading__"`的元素。
- 必须保证有一个`style[data-app-loading="inject-css"]`的元素。
@ -32,6 +32,6 @@ VITE_INJECT_APP_LOADING=false
</style>
<div id="__app-loading__">
<!-- ... -->
<div class="title"><%= VITE_GLOB_APP_TITLE %></div>
<div class="title"><%= VITE_APP_TITLE %></div>
</div>
```