Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions globals.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,8 @@ declare module '*.vue' {
const component: DefineComponent<{}, {}, any> & Plugin;
export default component;
}

declare const TD_SITE_METADATA: {
dependencies: Record<string, string>;
devDependencies: Record<string, string>;
};
1 change: 0 additions & 1 deletion internal/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,3 @@ export * from './src/paths';
export * from './src/package-json';
export * from './src/exec';
export * from './src/time';
export * from './src/catalogs';
13 changes: 1 addition & 12 deletions internal/utils/scripts/postinstall-tasks.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
import { parse } from 'yaml';
import { readFileSync, writeFileSync } from 'fs';
import { joinWorkspaceRoot } from '../src/paths';
import { run } from '../src/exec';

// 1. generate catalog.ts
const CATALOG_PATH = './internal/utils/src/catalogs.ts';
const sourcePath = joinWorkspaceRoot('pnpm-workspace.yaml');
const destPath = joinWorkspaceRoot(CATALOG_PATH);
const yamlContent = readFileSync(sourcePath, 'utf-8');
const documents = parse(yamlContent);
writeFileSync(destPath, `export const catalogs = ${JSON.stringify(documents.catalogs, null, 2)}`);
run(`npx prettier --write ${CATALOG_PATH}`, { cwd: joinWorkspaceRoot() });

// 2. rollup.config.ts
// rollup.config.ts
run('npx rollup -c rollup.config.ts', { cwd: joinWorkspaceRoot('internal/utils') });
119 changes: 0 additions & 119 deletions internal/utils/src/catalogs.ts

This file was deleted.

8 changes: 4 additions & 4 deletions packages/tdesign-vue-next-chat/site/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
"type": "module",
"scripts": {
"start": "pnpm run dev",
"dev": "vite",
"build": "vite build",
"intranet": "vite build --mode intranet",
"preview": "vite build --mode preview && cp dist/index.html dist/404.html"
"dev": "vite --configLoader runner",
"build": "vite build --configLoader runner",
"intranet": "vite build --mode intranet --configLoader runner",
"preview": "vite build --mode preview --configLoader runner && cp dist/index.html dist/404.html"
},
"author": "tdesign",
"license": "MIT",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import fs from 'fs';
import path from 'path';
import matter from 'gray-matter';
// TODO: 后续将这里修改为 mjs 后修改为 @tdesign/common 引入
import { compileUsage, getGitTimestamp } from '../../../../packages/common/docs/compile';
import { compileUsage, getGitTimestamp } from '../../../../../packages/common/docs/compile';
// TODO: 同上
import camelCase from 'lodash/camelCase';
import { joinPackagesRoot, joinProComponentsRoot } from '@tdesign/internal-utils';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { parse } from 'yaml';
import { readFileSync } from 'fs';
import { joinWorkspaceRoot, tdesignVueNextPackageJson, tdesignVueNextChatPackageJson } from '@tdesign/internal-utils';
export default function siteMetadata() {
const sourcePath = joinWorkspaceRoot('pnpm-workspace.yaml');
const yamlContent = readFileSync(sourcePath, 'utf-8');
const documents = parse(yamlContent);
Comment on lines +2 to +7
Copy link

Copilot AI Aug 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reading the YAML file synchronously on every plugin initialization could cause performance issues and lacks error handling. Consider adding try-catch blocks and validating the file exists.

Suggested change
import { readFileSync } from 'fs';
import { joinWorkspaceRoot, tdesignVueNextPackageJson, tdesignVueNextChatPackageJson } from '@tdesign/internal-utils';
export default function siteMetadata() {
const sourcePath = joinWorkspaceRoot('pnpm-workspace.yaml');
const yamlContent = readFileSync(sourcePath, 'utf-8');
const documents = parse(yamlContent);
import { readFileSync, existsSync } from 'fs';
import { joinWorkspaceRoot, tdesignVueNextPackageJson, tdesignVueNextChatPackageJson } from '@tdesign/internal-utils';
export default function siteMetadata() {
const sourcePath = joinWorkspaceRoot('pnpm-workspace.yaml');
let documents = {};
if (existsSync(sourcePath)) {
try {
const yamlContent = readFileSync(sourcePath, 'utf-8');
documents = parse(yamlContent);
} catch (err) {
// eslint-disable-next-line no-console
console.warn(`[site-metadata] Failed to read or parse YAML file at ${sourcePath}:`, err);
documents = {};
}
} else {
// eslint-disable-next-line no-console
console.warn(`[site-metadata] YAML file not found at ${sourcePath}.`);
documents = {};
}

Copilot uses AI. Check for mistakes.
Copy link
Collaborator

@zhangpaopao0609 zhangpaopao0609 Sep 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

可以聊聊为什么要这样修改吗?我的疑问在于

  1. 本质上没有改变获取 catalogs 的思路,都是读 yml
  2. 无法复用:由于当前 site 没有整合的缘故,还是重复的,多个 site 就要编写多次;同时还无法给到其它模块使用

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

需要获取依赖版本只有站点在使用,而且每次动到依赖版本catalogs.ts都会产生一个变更出来,我认为做成插件供站点使用好点

return {
name: 'site-metadata',
config() {
return {
define: {
TD_SITE_METADATA: JSON.stringify({
dependencies: {
vue: documents.catalogs.deps.vue,
less: documents.catalogs.bundle.less,
clipboard: documents.catalogs.deps.clipboard,
marked: documents.catalogs.deps.marked,
'tdesign-vue-next': tdesignVueNextPackageJson.version,
'tdesign-icons-vue-next': documents.catalogs.tdesign['tdesign-icons-vue-next'],
'@tdesign-vue-next/chat': tdesignVueNextChatPackageJson.version,
'highlight.js': documents.catalogs.deps['highlight.js'],
'marked-highlight': documents.catalogs.docs['marked-highlight'],
},
devDependencies: {
vite: documents.catalogs.bundle.vite,
'@vue/compiler-sfc': documents.catalogs.bundle['@vue/compiler-sfc'],
'@vitejs/plugin-vue': documents.catalogs.bundle['@vitejs/plugin-vue'],
'@vitejs/plugin-vue-jsx': documents.catalogs.bundle['@vitejs/plugin-vue-jsx'],
},
}),
},
};
},
};
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import { tdesignVueNextChatPackageJson, tdesignVueNextPackageJson } from '@tdesign/internal-utils/package-json';
import { catalogs } from '@tdesign/internal-utils/catalogs';

export const htmlContent = `
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
Expand Down Expand Up @@ -72,21 +69,21 @@ export const packageJSONContent = JSON.stringify(
serve: 'vite preview',
},
dependencies: {
vue: catalogs.deps.vue,
less: catalogs.bundle.less,
clipboard: catalogs.deps.clipboard,
marked: catalogs.deps.marked,
'tdesign-vue-next': tdesignVueNextPackageJson.version,
'tdesign-icons-vue-next': catalogs.tdesign['tdesign-icons-vue-next'],
'@tdesign-vue-next/chat': tdesignVueNextChatPackageJson.version,
'highlight.js': catalogs.deps['highlight.js'],
'marked-highlight': catalogs.docs['marked-highlight'],
vue: TD_SITE_METADATA.dependencies.vue,
less: TD_SITE_METADATA.dependencies.less,
clipboard: TD_SITE_METADATA.dependencies.clipboard,
marked: TD_SITE_METADATA.dependencies.marked,
'tdesign-vue-next': TD_SITE_METADATA.dependencies['tdesign-vue-next'],
'tdesign-icons-vue-next': TD_SITE_METADATA.dependencies['tdesign-icons-vue-next'],
'@tdesign-vue-next/chat': TD_SITE_METADATA.dependencies['@tdesign-vue-next/chat'],
'highlight.js': TD_SITE_METADATA.dependencies['highlight.js'],
'marked-highlight': TD_SITE_METADATA.dependencies['marked-highlight'],
},
devDependencies: {
vite: catalogs.bundle.vite,
'@vue/compiler-sfc': catalogs.bundle['@vue/compiler-sfc'],
'@vitejs/plugin-vue': catalogs.bundle['@vitejs/plugin-vue'],
'@vitejs/plugin-vue-jsx': catalogs.bundle['@vitejs/plugin-vue-jsx'],
vite: TD_SITE_METADATA.devDependencies.vite,
'@vue/compiler-sfc': TD_SITE_METADATA.devDependencies['@vue/compiler-sfc'],
'@vitejs/plugin-vue': TD_SITE_METADATA.devDependencies['@vitejs/plugin-vue'],
'@vitejs/plugin-vue-jsx': TD_SITE_METADATA.devDependencies['@vitejs/plugin-vue-jsx'],
},
},
null,
Expand Down
9 changes: 7 additions & 2 deletions packages/tdesign-vue-next-chat/site/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
import { defineConfig, searchForWorkspaceRoot } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import tDocPlugin from './plugin-doc';
import { joinPosix, joinComponentsRoot, joinTdesignVueNextRoot } from '@tdesign/internal-utils';
import tDocPlugin from './plugins/plugin-doc';
import siteMetadata from './plugins/site-metadata';
import { dirname } from 'path';
import { fileURLToPath } from 'url';

const publicPathMap: Record<string, string> = {
preview: '/',
intranet: '/chat/',
production: 'https://static.tdesign.tencent.com/chat/',
};
// eslint-disable-next-line no-underscore-dangle
const __dirname = dirname(fileURLToPath(import.meta.url));

export default defineConfig(({ mode }) => {
return {
Expand All @@ -31,7 +36,7 @@ export default defineConfig(({ mode }) => {
allow: [searchForWorkspaceRoot(process.cwd())],
},
},
plugins: [vue(), vueJsx(), tDocPlugin()],
plugins: [vue(), vueJsx(), tDocPlugin(), siteMetadata()],
optimizeDeps: {
include: ['prismjs', 'prismjs/components/prism-bash.js'],
},
Expand Down
32 changes: 32 additions & 0 deletions packages/tdesign-vue-next/site/plugins/site-metadata/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { parse } from 'yaml';
import { readFileSync } from 'fs';
import { joinWorkspaceRoot, tdesignVueNextPackageJson } from '@tdesign/internal-utils';
export default function siteMetadata() {
const sourcePath = joinWorkspaceRoot('pnpm-workspace.yaml');
const yamlContent = readFileSync(sourcePath, 'utf-8');
const documents = parse(yamlContent);
Comment on lines +2 to +7
Copy link

Copilot AI Aug 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reading the YAML file synchronously on every plugin initialization could cause performance issues and lacks error handling. Consider adding try-catch blocks and validating the file exists.

Suggested change
import { readFileSync } from 'fs';
import { joinWorkspaceRoot, tdesignVueNextPackageJson } from '@tdesign/internal-utils';
export default function siteMetadata() {
const sourcePath = joinWorkspaceRoot('pnpm-workspace.yaml');
const yamlContent = readFileSync(sourcePath, 'utf-8');
const documents = parse(yamlContent);
import { readFileSync, existsSync } from 'fs';
import { joinWorkspaceRoot, tdesignVueNextPackageJson } from '@tdesign/internal-utils';
export default function siteMetadata() {
const sourcePath = joinWorkspaceRoot('pnpm-workspace.yaml');
let documents: any = {};
if (existsSync(sourcePath)) {
try {
const yamlContent = readFileSync(sourcePath, 'utf-8');
documents = parse(yamlContent);
} catch (err) {
console.warn(`[site-metadata] Failed to read or parse YAML file at ${sourcePath}:`, err);
documents = {};
}
} else {
console.warn(`[site-metadata] YAML file not found at ${sourcePath}.`);
documents = {};
}

Copilot uses AI. Check for mistakes.
return {
name: 'site-metadata',
config() {
return {
define: {
TD_SITE_METADATA: JSON.stringify({
dependencies: {
vue: documents.catalogs.deps.vue,
less: documents.catalogs.bundle.less,
'tdesign-vue-next': tdesignVueNextPackageJson.version,
'tdesign-icons-vue-next': documents.catalogs.tdesign['tdesign-icons-vue-next'],
dayjs: documents.catalogs.deps.dayjs,
},
devDependencies: {
vite: documents.catalogs.bundle.vite,
'@vue/compiler-sfc': documents.catalogs.bundle['@vue/compiler-sfc'],
'@vitejs/plugin-vue': documents.catalogs.bundle['@vitejs/plugin-vue'],
'@vitejs/plugin-vue-jsx': documents.catalogs.bundle['@vitejs/plugin-vue-jsx'],
},
}),
},
};
},
};
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import { catalogs } from '@tdesign/internal-utils/catalogs';
import { tdesignVueNextPackageJson } from '@tdesign/internal-utils/package-json';

export const htmlContent = `<div id="app"></div>`;

export const mainJsContent = `
Expand Down Expand Up @@ -72,11 +69,11 @@ export const packageJSONContent = (name: string) => {
return {
name: name,
dependencies: {
vue: catalogs.deps.vue,
less: catalogs.bundle.less,
'tdesign-vue-next': tdesignVueNextPackageJson.version,
'tdesign-icons-vue-next': catalogs.tdesign['tdesign-icons-vue-next'],
dayjs: catalogs.deps.dayjs,
vue: TD_SITE_METADATA.dependencies.vue,
less: TD_SITE_METADATA.dependencies.less,
'tdesign-vue-next': TD_SITE_METADATA.dependencies['tdesign-vue-next'],
'tdesign-icons-vue-next': TD_SITE_METADATA.dependencies['tdesign-icons-vue-next'],
dayjs: TD_SITE_METADATA.dependencies.dayjs,
},
devDependencies: {
'@vue/cli-plugin-babel': '~4.5.0',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import { catalogs } from '@tdesign/internal-utils/catalogs';
import { tdesignVueNextPackageJson } from '@tdesign/internal-utils/package-json';

export const htmlContent = `
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
Expand Down Expand Up @@ -98,17 +95,17 @@ export const packageJSONContent = JSON.stringify(
serve: 'vite preview',
},
dependencies: {
vue: catalogs.deps.vue,
less: catalogs.bundle.less,
'tdesign-vue-next': tdesignVueNextPackageJson.version,
'tdesign-icons-vue-next': catalogs.tdesign['tdesign-icons-vue-next'],
dayjs: catalogs.deps.dayjs,
vue: TD_SITE_METADATA.dependencies.vue,
less: TD_SITE_METADATA.dependencies.less,
'tdesign-vue-next': TD_SITE_METADATA.dependencies['tdesign-vue-next'],
'tdesign-icons-vue-next': TD_SITE_METADATA.dependencies['tdesign-icons-vue-next'],
dayjs: TD_SITE_METADATA.dependencies.dayjs,
},
devDependencies: {
vite: catalogs.bundle.vite,
'@vue/compiler-sfc': catalogs.bundle['@vue/compiler-sfc'],
'@vitejs/plugin-vue': catalogs.bundle['@vitejs/plugin-vue'],
'@vitejs/plugin-vue-jsx': catalogs.bundle['@vitejs/plugin-vue-jsx'],
vite: TD_SITE_METADATA.devDependencies.vite,
'@vue/compiler-sfc': TD_SITE_METADATA.devDependencies['@vue/compiler-sfc'],
'@vitejs/plugin-vue': TD_SITE_METADATA.devDependencies['@vitejs/plugin-vue'],
'@vitejs/plugin-vue-jsx': TD_SITE_METADATA.devDependencies['@vitejs/plugin-vue-jsx'],
},
},
null,
Expand Down
3 changes: 2 additions & 1 deletion packages/tdesign-vue-next/site/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import pwaConfig from './configs/pwa';

import changelog2Json from './plugins/changelog-to-json';
import tdDocToVue from './plugins/td-doc-to-vue';
import siteMetadata from './plugins/site-metadata';

// eslint-disable-next-line no-underscore-dangle
const __dirname = dirname(fileURLToPath(import.meta.url));
Expand Down Expand Up @@ -37,6 +38,6 @@ export default defineConfig(({ mode }) => {
'tdesign-vue-next': joinComponentsRoot(),
},
},
plugins: [vue(), vueJsx(), tdDocToVue(), changelog2Json(), VitePWA(pwaConfig)],
plugins: [vue(), vueJsx(), tdDocToVue(), changelog2Json(), siteMetadata(), VitePWA(pwaConfig)],
};
});
Loading