Skip to content

Commit 199d550

Browse files
committed
feat: add about page
1 parent d4f61c2 commit 199d550

File tree

28 files changed

+394
-18
lines changed

28 files changed

+394
-18
lines changed

apps/web-antd/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
"@vben/icons": "workspace:*",
3636
"@vben/layouts": "workspace:*",
3737
"@vben/locales": "workspace:*",
38-
"@vben/universal-ui": "workspace:*",
3938
"@vben/styles": "workspace:*",
4039
"@vben/types": "workspace:*",
40+
"@vben/universal-ui": "workspace:*",
4141
"@vben/utils": "workspace:*",
4242
"@vben/widgets": "workspace:*",
4343
"@vueuse/core": "^10.11.0",
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script lang="ts" setup>
2-
import { Fallback } from '@vben/universal-ui';
2+
import { About } from '@vben/universal-ui';
33
4-
defineOptions({ name: 'Menu1' });
4+
defineOptions({ name: 'About' });
55
</script>
66

77
<template>
8-
<Fallback status="hello" />
8+
<About />
99
</template>

cspell.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
"qrcode",
2323
"shadcn",
2424
"sonner",
25-
"ui-kit",
2625
"unplugin",
2726
"vben",
2827
"vueuse",
@@ -35,7 +34,9 @@
3534
"nocheck",
3635
"prefixs",
3736
"vitepress",
38-
"ependencies"
37+
"ependencies",
38+
"vite",
39+
"echarts"
3940
],
4041
"ignorePaths": ["**/node_modules/**", "**/dist/**", "**/iconify/**"]
4142
}

internal/node-utils/src/date.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import utc from 'dayjs/plugin/utc';
55
dayjs.extend(utc);
66
dayjs.extend(timezone);
77

8-
const dateUtil = dayjs().tz('Asia/Shanghai');
8+
dayjs.tz.setDefault('Asia/Shanghai');
9+
10+
const dateUtil = dayjs;
911

1012
export { dateUtil };

internal/node-utils/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ export { prettierFormat } from './prettier';
99
export type { Package } from '@manypkg/get-packages';
1010
export { consola } from 'consola';
1111
export { nanoid } from 'nanoid';
12-
export { readPackageJSON } from 'pkg-types';
12+
export { type PackageJson, readPackageJSON } from 'pkg-types';
1313
export { rimraf } from 'rimraf';
1414
export { $, chalk as colors, fs, spinner } from 'zx';

internal/tsconfig/web.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"lib": ["ESNext", "DOM", "DOM.Iterable"],
99
"useDefineForClassFields": true,
1010
"moduleResolution": "bundler",
11-
"types": ["vite/client"],
11+
"types": ["vite/client", "@vben/types/window"],
1212
"declaration": false
1313
}
1414
}

internal/vite-config/src/config/application.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ function defineApplicationConfig(options: DefineApplicationOptions = {}) {
2424
html: true,
2525
i18n: true,
2626
injectAppLoading: true,
27+
injectMetadata: true,
2728
isBuild,
2829
license: true,
2930
mock: true,

internal/vite-config/src/config/library.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ function defineLibraryConfig(options: DefineLibraryOptions = {}) {
1919
const plugins = await getLibraryConditionPlugins({
2020
dts: false,
2121
injectLibCss: true,
22+
injectMetadata: true,
2223
isBuild,
2324
mode,
2425
...(typeof library === 'function' ? library(config) : library),

internal/vite-config/src/plugins/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import viteVueDevTools from 'vite-plugin-vue-devtools';
2727
import { viteExtraAppConfigPlugin } from './extra-app-config';
2828
import { viteImportMapPlugin } from './importmap';
2929
import { viteInjectAppLoadingPlugin } from './inject-app-loading';
30+
import { viteMetadataPlugin } from './inject-metadata';
3031
import { viteLicensePlugin } from './license';
3132

3233
/**
@@ -52,7 +53,7 @@ async function getConditionEstablishedPlugins(
5253
async function getCommonConditionPlugins(
5354
options: CommonPluginOptions,
5455
): Promise<ConditionPlugin[]> {
55-
const { devtools, isBuild, visualizer } = options;
56+
const { devtools, injectMetadata, isBuild, visualizer } = options;
5657
return [
5758
{
5859
condition: true,
@@ -66,10 +67,15 @@ async function getCommonConditionPlugins(
6667
viteVueJsx(),
6768
],
6869
},
70+
6971
{
7072
condition: !isBuild && devtools,
7173
plugins: () => [viteVueDevTools()],
7274
},
75+
{
76+
condition: injectMetadata,
77+
plugins: async () => [await viteMetadataPlugin()],
78+
},
7379
{
7480
condition: isBuild && !!visualizer,
7581
plugins: () => [<PluginOption>viteVisualizerPlugin({
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import type { PluginOption } from 'vite';
2+
3+
import { dateUtil, getPackages, readPackageJSON } from '@vben/node-utils';
4+
5+
function resolvePackageVersion(
6+
pkgsMeta: Record<string, string>,
7+
name: string,
8+
value: string,
9+
) {
10+
if (value.includes('workspace')) {
11+
return pkgsMeta[name];
12+
}
13+
return value;
14+
}
15+
16+
async function resolveMonorepoDependencies() {
17+
const { packages } = await getPackages();
18+
const resultDevDependencies: Record<string, string> = {};
19+
const resultDependencies: Record<string, string> = {};
20+
const pkgsMeta: Record<string, string> = {};
21+
22+
for (const { packageJson } of packages) {
23+
pkgsMeta[packageJson.name] = packageJson.version;
24+
}
25+
26+
for (const { packageJson } of packages) {
27+
const { dependencies = {}, devDependencies = {} } = packageJson;
28+
for (const [key, value] of Object.entries(dependencies)) {
29+
resultDependencies[key] = resolvePackageVersion(pkgsMeta, key, value);
30+
}
31+
for (const [key, value] of Object.entries(devDependencies)) {
32+
resultDevDependencies[key] = resolvePackageVersion(pkgsMeta, key, value);
33+
}
34+
}
35+
return {
36+
dependencies: resultDependencies,
37+
devDependencies: resultDevDependencies,
38+
};
39+
}
40+
41+
/**
42+
* 用于注入项目信息
43+
*/
44+
async function viteMetadataPlugin(
45+
root = process.cwd(),
46+
): Promise<PluginOption | undefined> {
47+
const { author, description, homepage, license, repository, version } =
48+
await readPackageJSON(root);
49+
50+
const buildTime = dateUtil().format('YYYY-MM-DD HH:mm:ss');
51+
52+
return {
53+
async config() {
54+
const { dependencies, devDependencies } =
55+
await resolveMonorepoDependencies();
56+
const repositoryUrl =
57+
typeof repository === 'object' ? repository.url : repository;
58+
59+
const isAuthorObject = typeof author === 'object';
60+
const authorName = isAuthorObject ? author.name : author;
61+
const authorEmail = isAuthorObject ? author.email : null;
62+
const authorUrl = isAuthorObject ? author.url : null;
63+
64+
return {
65+
define: {
66+
__VBEN_ADMIN_METADATA__: JSON.stringify({
67+
authorEmail,
68+
authorName,
69+
authorUrl,
70+
buildTime,
71+
dependencies,
72+
description,
73+
devDependencies,
74+
homepage,
75+
license,
76+
repositoryUrl,
77+
version,
78+
}),
79+
},
80+
};
81+
},
82+
enforce: 'post',
83+
name: 'vite:inject-metadata',
84+
};
85+
}
86+
87+
export { viteMetadataPlugin };

0 commit comments

Comments
 (0)