Browse Source

perf: Use Imports Instead of Aliases

vben 9 months ago
parent
commit
6ffec31ce8

+ 3 - 0
apps/web-antd/package.json

@@ -21,6 +21,9 @@
     "preview": "vite preview",
     "typecheck": "vue-tsc --noEmit --skipLibCheck"
   },
+  "imports": {
+    "#/*": "./src/*"
+  },
   "dependencies": {
     "@vben-core/helpers": "workspace:*",
     "@vben-core/preferences": "workspace:*",

+ 1 - 1
apps/web-antd/src/apis/modules/user.ts

@@ -2,7 +2,7 @@ import type { UserInfo } from '@vben/types';
 
 import type { UserApiType } from '../types';
 
-import { request } from '@/forward';
+import { request } from '#/forward';
 
 /**
  * 登录

+ 1 - 1
apps/web-antd/src/bootstrap.ts

@@ -4,7 +4,7 @@ import { setupI18n } from '@vben/locales';
 import '@vben/styles';
 import { preferences } from '@vben-core/preferences';
 
-import { setupStore } from '@/store';
+import { setupStore } from '#/store';
 
 import App from './app.vue';
 import { router } from './router';

+ 2 - 2
apps/web-antd/src/router/guard.ts

@@ -9,9 +9,9 @@ import { useAccessStore } from '@vben-core/stores';
 
 import { useTitle } from '@vueuse/core';
 
-import { dynamicRoutes, essentialsRouteNames } from '@/router/routes';
+import { dynamicRoutes, essentialsRouteNames } from '#/router/routes';
 
-const forbiddenPage = () => import('@/views/_essential/fallback/forbidden.vue');
+const forbiddenPage = () => import('#/views/_essential/fallback/forbidden.vue');
 
 /**
  * 通用守卫配置

+ 7 - 8
apps/web-antd/src/router/routes/_essentials.ts

@@ -3,13 +3,12 @@ import type { RouteRecordRaw } from 'vue-router';
 import { DEFAULT_HOME_PATH } from '@vben/constants';
 import { $t } from '@vben/locales';
 
-import { AuthPageLayoutType } from '@/layouts';
-
-import Login from '@/views/_essential/authentication/login.vue';
+import { AuthPageLayoutType } from '#/layouts';
+import Login from '#/views/_essential/authentication/login.vue';
 
 /** 全局404页面 */
 const fallbackNotFoundRoute: RouteRecordRaw = {
-  component: () => import('@/views/_essential/fallback/not-found.vue'),
+  component: () => import('#/views/_essential/fallback/not-found.vue'),
   meta: {
     hideInBreadcrumb: true,
     hideInMenu: true,
@@ -50,7 +49,7 @@ const essentialsRoutes: RouteRecordRaw[] = [
         name: 'CodeLogin',
         path: 'code-login',
         component: () =>
-          import('@/views/_essential/authentication/code-login.vue'),
+          import('#/views/_essential/authentication/code-login.vue'),
         meta: {
           title: $t('page.essentials.code-login'),
         },
@@ -59,7 +58,7 @@ const essentialsRoutes: RouteRecordRaw[] = [
         name: 'QrCodeLogin',
         path: 'qrcode-login',
         component: () =>
-          import('@/views/_essential/authentication/qrcode-login.vue'),
+          import('#/views/_essential/authentication/qrcode-login.vue'),
         meta: {
           title: $t('page.essentials.qrcode-login'),
         },
@@ -68,7 +67,7 @@ const essentialsRoutes: RouteRecordRaw[] = [
         name: 'ForgetPassword',
         path: 'forget-password',
         component: () =>
-          import('@/views/_essential/authentication/forget-password.vue'),
+          import('#/views/_essential/authentication/forget-password.vue'),
         meta: {
           title: $t('page.essentials.forget-password'),
         },
@@ -77,7 +76,7 @@ const essentialsRoutes: RouteRecordRaw[] = [
         name: 'Register',
         path: 'register',
         component: () =>
-          import('@/views/_essential/authentication/register.vue'),
+          import('#/views/_essential/authentication/register.vue'),
         meta: {
           title: $t('page.essentials.register'),
         },

+ 6 - 5
apps/web-antd/src/router/routes/modules/fallback.ts

@@ -1,8 +1,9 @@
 import type { RouteRecordRaw } from 'vue-router';
 
-import { BasicLayout } from '@/layouts';
 import { $t } from '@vben/locales/helper';
 
+import { BasicLayout } from '#/layouts';
+
 const routes: RouteRecordRaw[] = [
   {
     component: BasicLayout,
@@ -17,7 +18,7 @@ const routes: RouteRecordRaw[] = [
       {
         name: 'Fallback403',
         path: '403',
-        component: () => import('@/views/_essential/fallback/forbidden.vue'),
+        component: () => import('#/views/_essential/fallback/forbidden.vue'),
         meta: {
           icon: 'mdi:do-not-disturb-alt',
           title: '403',
@@ -26,7 +27,7 @@ const routes: RouteRecordRaw[] = [
       {
         name: 'Fallback404',
         path: '404',
-        component: () => import('@/views/_essential/fallback/not-found.vue'),
+        component: () => import('#/views/_essential/fallback/not-found.vue'),
         meta: {
           icon: 'mdi:table-off',
           title: '404',
@@ -36,7 +37,7 @@ const routes: RouteRecordRaw[] = [
         name: 'Fallback500',
         path: '500',
         component: () =>
-          import('@/views/_essential/fallback/internal-error.vue'),
+          import('#/views/_essential/fallback/internal-error.vue'),
         meta: {
           icon: 'mdi:server-network-off',
           title: '500',
@@ -45,7 +46,7 @@ const routes: RouteRecordRaw[] = [
       {
         name: 'FallbackOffline',
         path: 'offline',
-        component: () => import('@/views/_essential/fallback/offline.vue'),
+        component: () => import('#/views/_essential/fallback/offline.vue'),
         meta: {
           icon: 'mdi:offline',
           title: $t('fallback.offline'),

+ 2 - 2
apps/web-antd/src/router/routes/modules/home.ts

@@ -1,6 +1,6 @@
 import type { RouteRecordRaw } from 'vue-router';
 
-import { BasicLayout } from '@/layouts';
+import { BasicLayout } from '#/layouts';
 
 const routes: RouteRecordRaw[] = [
   {
@@ -17,7 +17,7 @@ const routes: RouteRecordRaw[] = [
       {
         name: 'Welcome',
         path: '/welcome',
-        component: () => import('@/views/dashboard/index.vue'),
+        component: () => import('#/views/dashboard/index.vue'),
         meta: {
           affixTab: true,
           title: 'Welcome',

+ 6 - 5
apps/web-antd/src/router/routes/modules/nested.ts

@@ -1,8 +1,9 @@
 import type { RouteRecordRaw } from 'vue-router';
 
-import { BasicLayout } from '@/layouts';
 import { $t } from '@vben/locales/helper';
 
+import { BasicLayout } from '#/layouts';
+
 const routes: RouteRecordRaw[] = [
   {
     component: BasicLayout,
@@ -19,7 +20,7 @@ const routes: RouteRecordRaw[] = [
       {
         name: 'Menu1',
         path: 'menu1',
-        component: () => import('@/views/nested/menu-1.vue'),
+        component: () => import('#/views/nested/menu-1.vue'),
         meta: {
           icon: 'ic:round-menu',
           keepAlive: true,
@@ -39,7 +40,7 @@ const routes: RouteRecordRaw[] = [
           {
             name: 'Menu21',
             path: 'menu2-1',
-            component: () => import('@/views/nested/menu-2-1.vue'),
+            component: () => import('#/views/nested/menu-2-1.vue'),
             meta: {
               icon: 'ic:round-menu',
               keepAlive: true,
@@ -60,7 +61,7 @@ const routes: RouteRecordRaw[] = [
           {
             name: 'Menu31',
             path: 'menu3-1',
-            component: () => import('@/views/nested/menu-3-1.vue'),
+            component: () => import('#/views/nested/menu-3-1.vue'),
             meta: {
               icon: 'ic:round-menu',
               keepAlive: true,
@@ -79,7 +80,7 @@ const routes: RouteRecordRaw[] = [
               {
                 name: 'Menu321',
                 path: 'menu3-2-1',
-                component: () => import('@/views/nested/menu-3-2-1.vue'),
+                component: () => import('#/views/nested/menu-3-2-1.vue'),
                 meta: {
                   icon: 'ic:round-menu',
                   keepAlive: true,

+ 2 - 1
apps/web-antd/src/router/routes/modules/outside.ts

@@ -1,8 +1,9 @@
 import type { RouteRecordRaw } from 'vue-router';
 
-import { BasicLayout, IFrameView } from '@/layouts';
 import { $t } from '@vben/locales/helper';
 
+import { BasicLayout, IFrameView } from '#/layouts';
+
 const routes: RouteRecordRaw[] = [
   {
     component: BasicLayout,

+ 3 - 2
apps/web-antd/src/router/routes/modules/vben.ts

@@ -2,9 +2,10 @@ import type { RouteRecordRaw } from 'vue-router';
 
 import { VBEN_GITHUB_URL, VBEN_LOGO } from '@vben/constants';
 
-import { BasicLayout, IFrameView } from '@/layouts';
 import { $t } from '@vben/locales/helper';
 
+import { BasicLayout, IFrameView } from '#/layouts';
+
 const routes: RouteRecordRaw[] = [
   {
     component: BasicLayout,
@@ -20,7 +21,7 @@ const routes: RouteRecordRaw[] = [
       {
         name: 'VbenAbout',
         path: 'about',
-        component: () => import('@/views/_essential/vben/about/index.vue'),
+        component: () => import('#/views/_essential/vben/about/index.vue'),
         meta: {
           icon: 'mdi:creative-commons',
           title: $t('page.vben.about'),

+ 2 - 1
apps/web-antd/src/views/_essential/authentication/login.vue

@@ -9,9 +9,10 @@ import { AuthenticationLogin } from '@vben/universal-ui';
 import { useRequest } from '@vben-core/request';
 import { useAccessStore } from '@vben-core/stores';
 
-import { getUserInfo, userLogin } from '@/apis';
 import { notification } from 'ant-design-vue';
 
+import { getUserInfo, userLogin } from '#/apis';
+
 defineOptions({ name: 'Login' });
 
 const router = useRouter();

+ 1 - 1
apps/web-antd/tsconfig.json

@@ -4,7 +4,7 @@
   "compilerOptions": {
     "baseUrl": ".",
     "paths": {
-      "@/*": ["./src/*"]
+      "#/*": ["./src/*"]
     }
   },
   "references": [{ "path": "./tsconfig.node.json" }],

+ 1 - 7
internal/lint-configs/eslint-config/src/configs/perfectionist.ts

@@ -46,13 +46,7 @@ export async function perfectionist(): Promise<Linter.FlatConfig[]> {
               'object',
               'unknown',
             ],
-            'internal-pattern': [
-              '@/layouts/**',
-              '@/apis/**',
-              '@/forward/**',
-              '@/router/**',
-              '@/views/**',
-            ],
+            'internal-pattern': ['#*', '#*/**'],
             'newlines-between': 'always',
             order: 'asc',
             type: 'natural',

+ 1 - 0
internal/node-utils/package.json

@@ -32,6 +32,7 @@
     "@manypkg/get-packages": "^2.2.1",
     "consola": "^3.2.3",
     "find-up": "^7.0.0",
+    "nanoid": "^5.0.7",
     "pkg-types": "^1.1.1",
     "prettier": "^3.3.2",
     "rimraf": "^5.0.7",

+ 0 - 48
internal/node-utils/src/find.ts

@@ -1,48 +0,0 @@
-import fs from 'node:fs';
-import { dirname, extname, resolve } from 'node:path';
-
-import { findUpSync } from 'find-up';
-
-/**
- * 查找 package.json 文件所在的目录
- * @param pathname
- */
-function findUpPackageDir(pathname: string = '') {
-  const file = findUpSync('package.json', {
-    cwd: dirname(pathname),
-    type: 'file',
-  });
-  return dirname(file || '');
-}
-
-/**
- * 根据给定的扩展名数组来查找文件是否存在,并返回对应文件路径
- * @param pathname 文件路径
- * @param extensions 扩展名数组
- * @returns 对应文件路径,如果未找到则返回 null
- */
-function findFileByExtension(
-  pathname: string = '',
-  extensions: string[] = ['.ts'],
-): string {
-  if (extname(pathname)) {
-    return pathname;
-  }
-
-  for (const ext of extensions) {
-    const fullpath = resolve(pathname);
-    if (fs.existsSync(fullpath + ext) && fs.statSync(fullpath + ext).isFile()) {
-      return fullpath + ext;
-    }
-  }
-
-  for (const ext of extensions) {
-    const resultPath = resolve(pathname, `index${ext}`);
-    if (fs.existsSync(resultPath)) {
-      return resultPath;
-    }
-  }
-  return pathname;
-}
-
-export { findFileByExtension, findUpPackageDir };

+ 0 - 1
internal/node-utils/src/index.ts

@@ -1,5 +1,4 @@
 export { UNICODE } from './constants';
-export { findFileByExtension, findUpPackageDir } from './find';
 export * from './git';
 export { add as gitAdd, getStagedFiles } from './git';
 export { generatorContentHash } from './hash';

+ 0 - 27
internal/vite-config/src/config/application.ts

@@ -2,8 +2,6 @@ import type { UserConfig } from 'vite';
 
 import type { DefineApplicationOptions } from '../typing';
 
-import { resolve } from 'node:path';
-
 import { defineConfig, loadEnv, mergeConfig } from 'vite';
 
 import { getApplicationConditionPlugins } from '../plugins';
@@ -57,31 +55,6 @@ function defineApplicationConfig(options: DefineApplicationOptions = {}) {
         legalComments: 'none',
       },
       plugins,
-      resolve: {
-        alias: [
-          {
-            find: /@\//,
-            replacement: `${resolve(root, '.', 'src')}/`,
-          },
-          /**
-           * 确保大仓内的子包,如果通过源码方式引用,可以直接使用@别名
-           */
-          // {
-          //   find: '@',
-          //   replacement: '@',
-          //   customResolver(source, importer) {
-          //     if (source[0] === '@') {
-          //       const realPath = source.replace(
-          //         /^@/,
-          //         resolve(findUpPackageDir(importer), 'src'),
-          //       );
-          //       return findFileByExtension(realPath);
-          //     }
-          //     return null;
-          //   },
-          // },
-        ],
-      },
       server: {
         host: true,
         warmup: {

+ 3 - 0
pnpm-lock.yaml

@@ -325,6 +325,9 @@ importers:
       find-up:
         specifier: ^7.0.0
         version: 7.0.0
+      nanoid:
+        specifier: ^5.0.7
+        version: 5.0.7
       pkg-types:
         specifier: ^1.1.1
         version: 1.1.1

+ 0 - 28
scripts/update-dependencies

@@ -1,28 +0,0 @@
-// #!/bin/bash
-
-// #/ Usage: script/update-dependencies
-// #/ Create a branch to update a dependency.
-
-// # Delete update-dependencies branch if it exists
-// if git branch | grep -q "update-dependencies"; then
-//   echo "Deleting update-dependencies branch 🗑"
-//   git branch -D update-dependencies
-//   echo "Branch deleted 🎉"
-// fi
-
-// # Create update-dependencies branch
-// echo "Creating update-dependencies branch 🌱"
-// git checkout -b update-dependencies
-// echo "Branch created 🎉"
-
-// # Update dependencies in package.json
-// echo "Updating dependencies in package.json 📦"
-// pnpm update --interactive --recursive --latest
-// # Clean up pnpm-lock.yaml file and install dependencies
-// script/clean && pnpm install
-// # Git operations
-// git add -A
-// git commit -am "chore: update dependencies 📦"
-// git push origin update-dependencies
-// gh pr create --fill
-// echo "Dependencies updated 🎉"