diff --git a/apps/web-antd/src/forward/access.ts b/apps/web-antd/src/forward/access.ts index 661b79c2..3900ab80 100644 --- a/apps/web-antd/src/forward/access.ts +++ b/apps/web-antd/src/forward/access.ts @@ -12,8 +12,7 @@ import { getAllMenus } from '#/apis'; import { BasicLayout, IFrameView } from '#/layouts'; import { $t } from '#/locales'; -const forbiddenComponent = () => - import('#/views/_essential/fallback/forbidden.vue'); +const forbiddenComponent = () => import('#/views/_core/fallback/forbidden.vue'); async function generateAccess(options: GenerateMenuAndRoutesOptions) { const pageMap: ComponentRecordType = import.meta.glob('../views/**/*.vue'); diff --git a/apps/web-antd/src/router/guard.ts b/apps/web-antd/src/router/guard.ts index 96aec056..90967bb1 100644 --- a/apps/web-antd/src/router/guard.ts +++ b/apps/web-antd/src/router/guard.ts @@ -8,7 +8,7 @@ import { useTitle } from '@vueuse/core'; import { generateAccess } from '#/forward'; import { $t } from '#/locales'; -import { dynamicRoutes, essentialsRouteNames } from '#/router/routes'; +import { coreRouteNames, dynamicRoutes } from '#/router/routes'; import { useAccessStore } from '#/store'; /** @@ -63,7 +63,7 @@ function setupAccessGuard(router: Router) { if (!accessToken) { if ( // 基本路由,这些路由不需要进入权限拦截 - essentialsRouteNames.includes(to.name as string) || + coreRouteNames.includes(to.name as string) || // 明确声明忽略权限访问权限,则可以访问 to.meta.ignoreAccess ) { diff --git a/apps/web-antd/src/router/routes/_essentials.ts b/apps/web-antd/src/router/routes/core.ts similarity index 61% rename from apps/web-antd/src/router/routes/_essentials.ts rename to apps/web-antd/src/router/routes/core.ts index bd3f45e7..f793a57e 100644 --- a/apps/web-antd/src/router/routes/_essentials.ts +++ b/apps/web-antd/src/router/routes/core.ts @@ -4,11 +4,11 @@ import { DEFAULT_HOME_PATH } from '@vben/constants'; import { AuthPageLayout } from '#/layouts'; import { $t } from '#/locales'; -import Login from '#/views/_essential/authentication/login.vue'; +import Login from '#/views/_core/authentication/login.vue'; /** 全局404页面 */ const fallbackNotFoundRoute: RouteRecordRaw = { - component: () => import('#/views/_essential/fallback/not-found.vue'), + component: () => import('#/views/_core/fallback/not-found.vue'), meta: { hideInBreadcrumb: true, hideInMenu: true, @@ -20,7 +20,7 @@ const fallbackNotFoundRoute: RouteRecordRaw = { }; /** 基本路由,这些路由是必须存在的 */ -const essentialsRoutes: RouteRecordRaw[] = [ +const coreRoutes: RouteRecordRaw[] = [ { meta: { title: 'Root', @@ -42,47 +42,45 @@ const essentialsRoutes: RouteRecordRaw[] = [ path: 'login', component: Login, meta: { - title: $t('page.essentials.login'), + title: $t('page.core.login'), }, }, { name: 'CodeLogin', path: 'code-login', - component: () => - import('#/views/_essential/authentication/code-login.vue'), + component: () => import('#/views/_core/authentication/code-login.vue'), meta: { - title: $t('page.essentials.codeLogin'), + title: $t('page.core.codeLogin'), }, }, { name: 'QrCodeLogin', path: 'qrcode-login', component: () => - import('#/views/_essential/authentication/qrcode-login.vue'), + import('#/views/_core/authentication/qrcode-login.vue'), meta: { - title: $t('page.essentials.qrcodeLogin'), + title: $t('page.core.qrcodeLogin'), }, }, { name: 'ForgetPassword', path: 'forget-password', component: () => - import('#/views/_essential/authentication/forget-password.vue'), + import('#/views/_core/authentication/forget-password.vue'), meta: { - title: $t('page.essentials.forgetPassword'), + title: $t('page.core.forgetPassword'), }, }, { name: 'Register', path: 'register', - component: () => - import('#/views/_essential/authentication/register.vue'), + component: () => import('#/views/_core/authentication/register.vue'), meta: { - title: $t('page.essentials.register'), + title: $t('page.core.register'), }, }, ], }, ]; -export { essentialsRoutes, fallbackNotFoundRoute }; +export { coreRoutes, fallbackNotFoundRoute }; diff --git a/apps/web-antd/src/router/routes/index.ts b/apps/web-antd/src/router/routes/index.ts index bc1981e1..cc829703 100644 --- a/apps/web-antd/src/router/routes/index.ts +++ b/apps/web-antd/src/router/routes/index.ts @@ -3,7 +3,7 @@ import type { RouteRecordRaw } from 'vue-router'; import { traverseTreeValues } from '@vben/utils'; import { mergeRouteModules } from '@vben-core/helpers'; -import { essentialsRoutes, fallbackNotFoundRoute } from './_essentials'; +import { coreRoutes, fallbackNotFoundRoute } from './core'; const dynamicRouteFiles = import.meta.glob('./modules/**/*.ts', { eager: true, @@ -21,15 +21,12 @@ const staticRoutes: RouteRecordRaw[] = []; /** 路由列表,由基本路由+静态路由组成 */ const routes: RouteRecordRaw[] = [ - ...essentialsRoutes, + ...coreRoutes, ...staticRoutes, fallbackNotFoundRoute, ]; /** 基本路由列表,这些路由不需要进入权限拦截 */ -const essentialsRouteNames = traverseTreeValues( - essentialsRoutes, - (route) => route.name, -); +const coreRouteNames = traverseTreeValues(coreRoutes, (route) => route.name); -export { dynamicRoutes, essentialsRouteNames, routes }; +export { coreRouteNames, dynamicRoutes, routes }; diff --git a/apps/web-antd/src/router/routes/modules/demos.ts b/apps/web-antd/src/router/routes/modules/demos.ts index 22409893..1d8bd9eb 100644 --- a/apps/web-antd/src/router/routes/modules/demos.ts +++ b/apps/web-antd/src/router/routes/modules/demos.ts @@ -141,8 +141,7 @@ const routes: RouteRecordRaw[] = [ { name: 'Fallback403', path: '403', - component: () => - import('#/views/_essential/fallback/forbidden.vue'), + component: () => import('#/views/_core/fallback/forbidden.vue'), meta: { icon: 'mdi:do-not-disturb-alt', title: '403', @@ -151,8 +150,7 @@ const routes: RouteRecordRaw[] = [ { name: 'Fallback404', path: '404', - component: () => - import('#/views/_essential/fallback/not-found.vue'), + component: () => import('#/views/_core/fallback/not-found.vue'), meta: { icon: 'mdi:table-off', title: '404', @@ -162,7 +160,7 @@ const routes: RouteRecordRaw[] = [ name: 'Fallback500', path: '500', component: () => - import('#/views/_essential/fallback/internal-error.vue'), + import('#/views/_core/fallback/internal-error.vue'), meta: { icon: 'mdi:server-network-off', title: '500', @@ -171,7 +169,7 @@ const routes: RouteRecordRaw[] = [ { name: 'FallbackOffline', path: 'offline', - component: () => import('#/views/_essential/fallback/offline.vue'), + component: () => import('#/views/_core/fallback/offline.vue'), meta: { icon: 'mdi:offline', title: $t('fallback.offline'), diff --git a/apps/web-antd/src/router/routes/modules/vben.ts b/apps/web-antd/src/router/routes/modules/vben.ts index 21fed101..2d1a50de 100644 --- a/apps/web-antd/src/router/routes/modules/vben.ts +++ b/apps/web-antd/src/router/routes/modules/vben.ts @@ -1,6 +1,6 @@ import type { RouteRecordRaw } from 'vue-router'; -import { VBEN_GITHUB_URL, VBEN_LOGO } from '@vben/constants'; +import { VBEN_GITHUB_URL, VBEN_LOGO_URL } from '@vben/constants'; import { BasicLayout, IFrameView } from '#/layouts'; import { $t } from '#/locales'; @@ -10,7 +10,7 @@ const routes: RouteRecordRaw[] = [ component: BasicLayout, meta: { badgeType: 'dot', - icon: VBEN_LOGO, + icon: VBEN_LOGO_URL, order: 9999, title: 'Vben Admin', }, @@ -21,7 +21,7 @@ const routes: RouteRecordRaw[] = [ { name: 'VbenAbout', path: 'about', - component: () => import('#/views/_essential/vben/about/index.vue'), + component: () => import('#/views/_core/vben/about/index.vue'), meta: { badgeType: 'dot', icon: 'mdi:creative-commons', diff --git a/apps/web-antd/src/views/_essential/README.md b/apps/web-antd/src/views/_core/README.md similarity index 89% rename from apps/web-antd/src/views/_essential/README.md rename to apps/web-antd/src/views/_core/README.md index 81eec5e3..8248afe6 100644 --- a/apps/web-antd/src/views/_essential/README.md +++ b/apps/web-antd/src/views/_core/README.md @@ -1,3 +1,3 @@ -# \_essential +# \_core 此目录包含应用程序正常运行所需的基本视图。这些视图是应用程序布局中使用的视图。 diff --git a/apps/web-antd/src/views/_essential/authentication/code-login.vue b/apps/web-antd/src/views/_core/authentication/code-login.vue similarity index 100% rename from apps/web-antd/src/views/_essential/authentication/code-login.vue rename to apps/web-antd/src/views/_core/authentication/code-login.vue diff --git a/apps/web-antd/src/views/_essential/authentication/forget-password.vue b/apps/web-antd/src/views/_core/authentication/forget-password.vue similarity index 100% rename from apps/web-antd/src/views/_essential/authentication/forget-password.vue rename to apps/web-antd/src/views/_core/authentication/forget-password.vue diff --git a/apps/web-antd/src/views/_essential/authentication/login.vue b/apps/web-antd/src/views/_core/authentication/login.vue similarity index 100% rename from apps/web-antd/src/views/_essential/authentication/login.vue rename to apps/web-antd/src/views/_core/authentication/login.vue diff --git a/apps/web-antd/src/views/_essential/authentication/qrcode-login.vue b/apps/web-antd/src/views/_core/authentication/qrcode-login.vue similarity index 100% rename from apps/web-antd/src/views/_essential/authentication/qrcode-login.vue rename to apps/web-antd/src/views/_core/authentication/qrcode-login.vue diff --git a/apps/web-antd/src/views/_essential/authentication/register.vue b/apps/web-antd/src/views/_core/authentication/register.vue similarity index 100% rename from apps/web-antd/src/views/_essential/authentication/register.vue rename to apps/web-antd/src/views/_core/authentication/register.vue diff --git a/apps/web-antd/src/views/_essential/fallback/coming-soon.vue b/apps/web-antd/src/views/_core/fallback/coming-soon.vue similarity index 100% rename from apps/web-antd/src/views/_essential/fallback/coming-soon.vue rename to apps/web-antd/src/views/_core/fallback/coming-soon.vue diff --git a/apps/web-antd/src/views/_essential/fallback/forbidden.vue b/apps/web-antd/src/views/_core/fallback/forbidden.vue similarity index 100% rename from apps/web-antd/src/views/_essential/fallback/forbidden.vue rename to apps/web-antd/src/views/_core/fallback/forbidden.vue diff --git a/apps/web-antd/src/views/_essential/fallback/internal-error.vue b/apps/web-antd/src/views/_core/fallback/internal-error.vue similarity index 100% rename from apps/web-antd/src/views/_essential/fallback/internal-error.vue rename to apps/web-antd/src/views/_core/fallback/internal-error.vue diff --git a/apps/web-antd/src/views/_essential/fallback/not-found.vue b/apps/web-antd/src/views/_core/fallback/not-found.vue similarity index 100% rename from apps/web-antd/src/views/_essential/fallback/not-found.vue rename to apps/web-antd/src/views/_core/fallback/not-found.vue diff --git a/apps/web-antd/src/views/_essential/fallback/offline.vue b/apps/web-antd/src/views/_core/fallback/offline.vue similarity index 100% rename from apps/web-antd/src/views/_essential/fallback/offline.vue rename to apps/web-antd/src/views/_core/fallback/offline.vue diff --git a/apps/web-antd/src/views/_essential/vben/about/index.vue b/apps/web-antd/src/views/_core/vben/about/index.vue similarity index 100% rename from apps/web-antd/src/views/_essential/vben/about/index.vue rename to apps/web-antd/src/views/_core/vben/about/index.vue diff --git a/packages/@core/locales/src/langs/en-US.json b/packages/@core/locales/src/langs/en-US.json index f34515e9..7ef68fda 100644 --- a/packages/@core/locales/src/langs/en-US.json +++ b/packages/@core/locales/src/langs/en-US.json @@ -1,6 +1,6 @@ { "page": { - "essentials": { + "core": { "login": "Login", "register": "Register", "codeLogin": "Code Login", diff --git a/packages/@core/locales/src/langs/zh-CN.json b/packages/@core/locales/src/langs/zh-CN.json index e94f564f..1d56b6d8 100644 --- a/packages/@core/locales/src/langs/zh-CN.json +++ b/packages/@core/locales/src/langs/zh-CN.json @@ -1,6 +1,6 @@ { "page": { - "essentials": { + "core": { "login": "登陆", "register": "注册", "codeLogin": "验证码登陆", diff --git a/packages/@core/shared/constants/build.config.ts b/packages/@core/shared/constants/build.config.ts new file mode 100644 index 00000000..97e572c5 --- /dev/null +++ b/packages/@core/shared/constants/build.config.ts @@ -0,0 +1,7 @@ +import { defineBuildConfig } from 'unbuild'; + +export default defineBuildConfig({ + clean: true, + declaration: true, + entries: ['src/index'], +}); diff --git a/packages/@core/shared/constants/package.json b/packages/@core/shared/constants/package.json new file mode 100644 index 00000000..33be1106 --- /dev/null +++ b/packages/@core/shared/constants/package.json @@ -0,0 +1,38 @@ +{ + "name": "@vben-core/constants", + "version": "5.0.0", + "homepage": "https://github.com/vbenjs/vue-vben-admin", + "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", + "repository": { + "type": "git", + "url": "git+https://github.com/vbenjs/vue-vben-admin.git", + "directory": "packages/@vben-core/shared/constants" + }, + "license": "MIT", + "type": "module", + "scripts": { + "build": "pnpm unbuild", + "stub": "pnpm unbuild --stub" + }, + "files": [ + "dist" + ], + "sideEffects": false, + "main": "./dist/index.mjs", + "module": "./dist/index.mjs", + "exports": { + ".": { + "types": "./src/index.ts", + "development": "./src/index.ts", + "default": "./dist/index.mjs" + } + }, + "publishConfig": { + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.mjs" + } + } + } +} diff --git a/packages/constants/src/vben.ts b/packages/@core/shared/constants/src/index.ts similarity index 76% rename from packages/constants/src/vben.ts rename to packages/@core/shared/constants/src/index.ts index b642f3bf..4dd2fe48 100644 --- a/packages/constants/src/vben.ts +++ b/packages/@core/shared/constants/src/index.ts @@ -6,6 +6,7 @@ const VBEN_GITHUB_URL = 'https://github.com/vbenjs/vue-vben-admin'; /** * @zh_CN Vben Logo */ -const VBEN_LOGO = +const VBEN_LOGO_URL = 'https://cdn.jsdelivr.net/npm/@vbenjs/static-source@0.1.3/source/logo-v1.webp'; -export { VBEN_GITHUB_URL, VBEN_LOGO }; + +export { VBEN_GITHUB_URL, VBEN_LOGO_URL }; diff --git a/packages/@core/shared/constants/tsconfig.json b/packages/@core/shared/constants/tsconfig.json new file mode 100644 index 00000000..f6860a32 --- /dev/null +++ b/packages/@core/shared/constants/tsconfig.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@vben/tsconfig/library.json", + "include": ["src"], + "exclude": ["node_modules"] +} diff --git a/packages/@core/shared/typings/src/index.ts b/packages/@core/shared/typings/src/index.ts index e7391f98..33c35661 100644 --- a/packages/@core/shared/typings/src/index.ts +++ b/packages/@core/shared/typings/src/index.ts @@ -1,5 +1,5 @@ export type * from './app'; -export * from './basic'; +export type * from './basic'; export type * from './helper'; export type * from './menu-record'; export type * from './tabs'; diff --git a/packages/constants/package.json b/packages/constants/package.json index ed4bed31..8b8fb92c 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -36,5 +36,8 @@ "default": "./dist/index.mjs" } } + }, + "dependencies": { + "@vben-core/constants": "workspace:*" } } diff --git a/packages/constants/src/_essentials.ts b/packages/constants/src/core.ts similarity index 100% rename from packages/constants/src/_essentials.ts rename to packages/constants/src/core.ts diff --git a/packages/constants/src/index.ts b/packages/constants/src/index.ts index 1875ae37..629beea6 100644 --- a/packages/constants/src/index.ts +++ b/packages/constants/src/index.ts @@ -1,2 +1,2 @@ -export * from './_essentials'; -export * from './vben'; +export * from './core'; +export * from '@vben-core/constants'; diff --git a/packages/hooks/build.config.ts b/packages/hooks/build.config.ts new file mode 100644 index 00000000..97e572c5 --- /dev/null +++ b/packages/hooks/build.config.ts @@ -0,0 +1,7 @@ +import { defineBuildConfig } from 'unbuild'; + +export default defineBuildConfig({ + clean: true, + declaration: true, + entries: ['src/index'], +}); diff --git a/packages/hooks/package.json b/packages/hooks/package.json new file mode 100644 index 00000000..d0a4ce77 --- /dev/null +++ b/packages/hooks/package.json @@ -0,0 +1,40 @@ +{ + "name": "@vben/hooks", + "version": "5.0.0", + "homepage": "https://github.com/vbenjs/vue-vben-admin", + "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", + "repository": { + "type": "git", + "url": "git+https://github.com/vbenjs/vue-vben-admin.git", + "directory": "packages/hooks" + }, + "license": "MIT", + "type": "module", + "scripts": { + "build": "pnpm unbuild", + "stub": "pnpm unbuild --stub" + }, + "files": [ + "dist" + ], + "sideEffects": [ + "**/*.css" + ], + "main": "./dist/index.mjs", + "module": "./dist/index.mjs", + "exports": { + ".": { + "types": "./src/index.ts", + "development": "./src/index.ts", + "default": "./dist/index.mjs" + } + }, + "publishConfig": { + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.mjs" + } + } + } +} diff --git a/packages/hooks/src/index.ts b/packages/hooks/src/index.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/packages/hooks/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/hooks/tsconfig.json b/packages/hooks/tsconfig.json new file mode 100644 index 00000000..f6860a32 --- /dev/null +++ b/packages/hooks/tsconfig.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@vben/tsconfig/library.json", + "include": ["src"], + "exclude": ["node_modules"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 77314fbd..0dedaf75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -639,6 +639,8 @@ importers: specifier: ^9.13.1 version: 9.13.1(vue@3.4.31(typescript@5.5.3)) + packages/@core/shared/constants: {} + packages/@core/shared/design: dependencies: modern-normalize: @@ -908,7 +910,13 @@ importers: specifier: ^1.5.5 version: 1.5.5 - packages/constants: {} + packages/constants: + dependencies: + '@vben-core/constants': + specifier: workspace:* + version: link:../@core/shared/constants + + packages/hooks: {} packages/icons: dependencies: diff --git a/vben-admin.code-workspace b/vben-admin.code-workspace index 554c019b..84c301e3 100644 --- a/vben-admin.code-workspace +++ b/vben-admin.code-workspace @@ -64,6 +64,10 @@ "name": "@vben-core/locales", "path": "packages/@core/locales", }, + { + "name": "@vben-core/constants", + "path": "packages/@core/shared/constants", + }, { "name": "@vben-core/design", "path": "packages/@core/shared/design", @@ -116,6 +120,10 @@ "name": "@vben/constants", "path": "packages/constants", }, + { + "name": "@vben/hooks", + "path": "packages/hooks", + }, { "name": "@vben/icons", "path": "packages/icons",