diff --git a/.env b/.env index aa87d32..64218c1 100644 --- a/.env +++ b/.env @@ -1,4 +1,6 @@ -VITE_BUILD_TIME= -VITE_BUILD_COMMIT= VITE_BASE=/ + VITE_SPLIT_CHUNKS=true +VITE_SOURCE_MAP=true +VITE_BUILD_TIME= +VITE_BUILD_COMMIT= \ No newline at end of file diff --git a/components.d.ts b/components.d.ts index b567c37..16c9236 100644 --- a/components.d.ts +++ b/components.d.ts @@ -15,6 +15,5 @@ declare module 'vue' { IconTooling: typeof import('./src/components/icons/IconTooling.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] - TButton: typeof import('tdesign-mobile-vue/esm')['Button'] } } diff --git a/package.json b/package.json index 969eacf..fcdbabf 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "unplugin-vue-markdown": "^0.26.2", "unplugin-vue-router": "^0.10.2", "vite": "^5.4.0", + "vite-plugin-cdn-import": "^1.0.1", "vite-plugin-vue-devtools": "^7.3.7", "vitest": "^2.0.5", "vue-tsc": "^2.0.29" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a48407..fe52028 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,6 +164,9 @@ importers: vite: specifier: ^5.4.0 version: 5.4.0(@types/node@22.2.0)(less@4.2.0) + vite-plugin-cdn-import: + specifier: ^1.0.1 + version: 1.0.1(rollup@4.20.0)(vite@5.4.0(@types/node@22.2.0)(less@4.2.0)) vite-plugin-vue-devtools: specifier: ^7.3.7 version: 7.3.8(rollup@4.20.0)(vite@5.4.0(@types/node@22.2.0)(less@4.2.0))(vue@3.4.37(typescript@5.5.4)) @@ -1519,6 +1522,9 @@ packages: error-stack-parser-es@0.1.5: resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==} + es-module-lexer@0.4.1: + resolution: {integrity: sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==, tarball: https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz} + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -1690,6 +1696,10 @@ packages: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, tarball: https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz} + engines: {node: '>=12'} + fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -1880,6 +1890,9 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==, tarball: https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -2027,6 +2040,9 @@ packages: resolution: {integrity: sha512-oN3Bcd7ZVt+0VGEs7402qR/tjgjbM7kPlH/z7ufJnzTLVBzXJITRHOJiwMmmYMgZfdoWQsfQcY+iKlxiBppnMA==} engines: {node: '>=16.14.0'} + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz} + magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} @@ -2383,6 +2399,11 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rollup-plugin-external-globals@0.10.0: + resolution: {integrity: sha512-RXlupZrmn97AaaS5dWnktkjM+Iy+od0E+8L0mUkMIs3iuoUXNJebueQocQKV7Ircd54fSGGmkBaXwNzY05J1yQ==, tarball: https://registry.npmjs.org/rollup-plugin-external-globals/-/rollup-plugin-external-globals-0.10.0.tgz} + peerDependencies: + rollup: ^2.25.0 || ^3.3.0 || ^4.1.4 + rollup@4.20.0: resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -2468,6 +2489,10 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz} engines: {node: '>=0.10.0'} + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, tarball: https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz} + deprecated: Please use @jridgewell/sourcemap-codec instead + speakingurl@14.0.1: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} @@ -2736,6 +2761,15 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-plugin-cdn-import@1.0.1: + resolution: {integrity: sha512-lgjLxgwFSKvJLbqjVBirUZ0rQo00GpUGJzRpgQu8RyBw9LA7jaqG6fUMQzBC9qWmTGabPC3iOzwCcoi7PseRAQ==, tarball: https://registry.npmjs.org/vite-plugin-cdn-import/-/vite-plugin-cdn-import-1.0.1.tgz} + + vite-plugin-externals@0.6.2: + resolution: {integrity: sha512-R5oVY8xDJjLXLTs2XDYzvYbc/RTZuIwOx2xcFbYf+/VXB6eJuatDgt8jzQ7kZ+IrgwQhe6tU8U2fTyy72C25CQ==, tarball: https://registry.npmjs.org/vite-plugin-externals/-/vite-plugin-externals-0.6.2.tgz} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: '>=2.0.0' + vite-plugin-inspect@0.8.5: resolution: {integrity: sha512-JvTUqsP1JNDw0lMZ5Z/r5cSj81VK2B7884LO1DC3GMBhdcjcsAnJjdWq7bzQL01Xbh+v60d3lju3g+z7eAtNew==} engines: {node: '>=14'} @@ -4376,6 +4410,8 @@ snapshots: error-stack-parser-es@0.1.5: {} + es-module-lexer@0.4.1: {} + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -4626,6 +4662,12 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 @@ -4803,6 +4845,10 @@ snapshots: is-potential-custom-element-name@1.0.1: {} + is-reference@3.0.2: + dependencies: + '@types/estree': 1.0.5 + is-stream@2.0.1: {} is-stream@3.0.0: {} @@ -4958,6 +5004,10 @@ snapshots: dependencies: magic-string: 0.30.11 + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -5260,6 +5310,14 @@ snapshots: dependencies: glob: 7.2.3 + rollup-plugin-external-globals@0.10.0(rollup@4.20.0): + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) + estree-walker: 3.0.3 + is-reference: 3.0.2 + magic-string: 0.30.11 + rollup: 4.20.0 + rollup@4.20.0: dependencies: '@types/estree': 1.0.5 @@ -5342,6 +5400,8 @@ snapshots: source-map@0.6.1: optional: true + sourcemap-codec@1.4.8: {} + speakingurl@14.0.1: {} sprintf-js@1.0.3: {} @@ -5668,6 +5728,22 @@ snapshots: - supports-color - terser + vite-plugin-cdn-import@1.0.1(rollup@4.20.0)(vite@5.4.0(@types/node@22.2.0)(less@4.2.0)): + dependencies: + rollup-plugin-external-globals: 0.10.0(rollup@4.20.0) + vite-plugin-externals: 0.6.2(vite@5.4.0(@types/node@22.2.0)(less@4.2.0)) + transitivePeerDependencies: + - rollup + - vite + + vite-plugin-externals@0.6.2(vite@5.4.0(@types/node@22.2.0)(less@4.2.0)): + dependencies: + acorn: 8.12.1 + es-module-lexer: 0.4.1 + fs-extra: 10.1.0 + magic-string: 0.25.9 + vite: 5.4.0(@types/node@22.2.0)(less@4.2.0) + vite-plugin-inspect@0.8.5(rollup@4.20.0)(vite@5.4.0(@types/node@22.2.0)(less@4.2.0)): dependencies: '@antfu/utils': 0.7.10 diff --git a/src/pages/data-loaders.[id].vue b/src/pages/data-loaders.[id].vue index 8464228..32a9ea5 100644 --- a/src/pages/data-loaders.[id].vue +++ b/src/pages/data-loaders.[id].vue @@ -8,7 +8,7 @@ export const usePageData = defineBasicLoader( async (...args) => { console.log('[DefineLoaderFn]', 'args :>> ', args); const [route] = args; - await new Promise((resolve) => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 520)); return { idFromPreviousPage: route.params.id, someOtherData: 'someOtherData' }; }, { diff --git a/vite.config.ts b/vite.config.ts index 14756f5..d50fd87 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -6,11 +6,12 @@ import UnoCSS from 'unocss/vite'; import AutoImport from 'unplugin-auto-import/vite'; import { TDesignResolver } from 'unplugin-vue-components/resolvers'; import Components from 'unplugin-vue-components/vite'; +import Markdown from 'unplugin-vue-markdown/vite'; import { getPascalCaseRouteName, VueRouterAutoImports } from 'unplugin-vue-router'; import VueRouter from 'unplugin-vue-router/vite'; import { defineConfig, loadEnv } from 'vite'; +import cdnImport from 'vite-plugin-cdn-import'; import vueDevTools from 'vite-plugin-vue-devtools'; -import Markdown from 'unplugin-vue-markdown/vite'; // https://vitejs.dev/config/ export default defineConfig(({ mode, command }) => { @@ -56,6 +57,12 @@ export default defineConfig(({ mode, command }) => { vueJsx(), Markdown({}), vueDevTools(), + cdnImport({ + // https://github.com/mmf-fe/vite-plugin-cdn-import/blob/HEAD/README.zh-CN.md + modules: ['vue'], + prodUrl: '//fastly.jsdelivr.net/npm/{name}@{version}/{path}', + enableInDevMode: true, + }), ], define: { $__DEV__: JSON.stringify(!isBuild), @@ -66,7 +73,7 @@ export default defineConfig(({ mode, command }) => { }, }, build: { - sourcemap: mode !== 'production', + sourcemap: mode !== 'production' || env.VITE_SOURCE_MAP === 'true', rollupOptions: { output: { // chunkFileNames: 'assets/chunk/[name]_[hash].js',