Browse Source

Merge branch 'fork/xingyu4j/tsdown'

# Conflicts:
#	pnpm-lock.yaml
pull/7676/head
Jin Mao 1 week ago
parent
commit
82cda0edaa
  1. 1
      cspell.json
  2. 7
      internal/lint-configs/eslint-config/build.config.ts
  3. 6
      internal/lint-configs/eslint-config/package.json
  4. 2
      internal/lint-configs/eslint-config/src/configs/node.ts
  5. 16
      internal/lint-configs/eslint-config/tsdown.config.ts
  6. 7
      internal/lint-configs/oxfmt-config/build.config.ts
  7. 2
      internal/lint-configs/oxfmt-config/package.json
  8. 4
      internal/lint-configs/oxfmt-config/src/index.ts
  9. 11
      internal/lint-configs/oxfmt-config/tsdown.config.ts
  10. 7
      internal/lint-configs/oxlint-config/build.config.ts
  11. 2
      internal/lint-configs/oxlint-config/package.json
  12. 11
      internal/lint-configs/oxlint-config/tsdown.config.ts
  13. 7
      internal/node-utils/build.config.ts
  14. 4
      internal/node-utils/package.json
  15. 37
      internal/node-utils/scripts/build.mjs
  16. 4
      internal/node-utils/src/date.ts
  17. 34
      internal/node-utils/src/monorepo.ts
  18. 8
      internal/node-utils/tsconfig.build.json
  19. 10
      internal/node-utils/tsdown.config.ts
  20. 7
      internal/vite-config/build.config.ts
  21. 7
      internal/vite-config/package.json
  22. 5
      internal/vite-config/src/plugins/index.ts
  23. 2
      internal/vite-config/src/typing.ts
  24. 41
      internal/vite-config/tsdown.config.ts
  25. 4
      package.json
  26. 2
      packages/@core/base/design/package.json
  27. 7
      packages/@core/base/icons/build.config.ts
  28. 3
      packages/@core/base/icons/package.json
  29. 11
      packages/@core/base/icons/tsdown.config.ts
  30. 14
      packages/@core/base/shared/build.config.ts
  31. 10
      packages/@core/base/shared/package.json
  32. 4
      packages/@core/base/shared/src/utils/__tests__/date.test.ts
  33. 4
      packages/@core/base/shared/src/utils/date.ts
  34. 18
      packages/@core/base/shared/tsdown.config.ts
  35. 7
      packages/@core/base/typings/build.config.ts
  36. 6
      packages/@core/base/typings/package.json
  37. 11
      packages/@core/base/typings/tsdown.config.ts
  38. 2
      packages/@core/base/typings/vue-router.d.ts
  39. 7
      packages/@core/composables/build.config.ts
  40. 3
      packages/@core/composables/package.json
  41. 11
      packages/@core/composables/tsdown.config.ts
  42. 7
      packages/@core/preferences/build.config.ts
  43. 17
      packages/@core/preferences/package.json
  44. 11
      packages/@core/preferences/tsdown.config.ts
  45. 21
      packages/@core/ui-kit/form-ui/build.config.ts
  46. 5
      packages/@core/ui-kit/form-ui/package.json
  47. 22
      packages/@core/ui-kit/form-ui/tsdown.config.ts
  48. 21
      packages/@core/ui-kit/layout-ui/build.config.ts
  49. 5
      packages/@core/ui-kit/layout-ui/package.json
  50. 22
      packages/@core/ui-kit/layout-ui/tsdown.config.ts
  51. 26
      packages/@core/ui-kit/menu-ui/build.config.ts
  52. 5
      packages/@core/ui-kit/menu-ui/package.json
  53. 22
      packages/@core/ui-kit/menu-ui/tsdown.config.ts
  54. 21
      packages/@core/ui-kit/popup-ui/build.config.ts
  55. 5
      packages/@core/ui-kit/popup-ui/package.json
  56. 22
      packages/@core/ui-kit/popup-ui/tsdown.config.ts
  57. 27
      packages/@core/ui-kit/shadcn-ui/build.config.ts
  58. 15
      packages/@core/ui-kit/shadcn-ui/package.json
  59. 5
      packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue
  60. 21
      packages/@core/ui-kit/tabs-ui/build.config.ts
  61. 5
      packages/@core/ui-kit/tabs-ui/package.json
  62. 22
      packages/@core/ui-kit/tabs-ui/tsdown.config.ts
  63. 7
      pnpm-workspace.yaml
  64. 7
      scripts/turbo-run/build.config.ts
  65. 2
      scripts/turbo-run/package.json
  66. 11
      scripts/turbo-run/tsdown.config.ts
  67. 7
      scripts/vsh/build.config.ts
  68. 2
      scripts/vsh/package.json
  69. 67
      scripts/vsh/src/check-circular/index.ts
  70. 2
      scripts/vsh/src/check-dep/index.ts
  71. 11
      scripts/vsh/tsdown.config.ts

1
cspell.json

@ -60,6 +60,7 @@
"tabler",
"taze",
"tdesign",
"tsdown",
"tsgolint",
"turborepo",
"ui-kit",

7
internal/lint-configs/eslint-config/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

6
internal/lint-configs/eslint-config/package.json

@ -12,7 +12,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"stub": "pnpm unbuild --stub"
"stub": "pnpm exec tsdown"
},
"files": [
"dist"
@ -27,12 +27,10 @@
}
},
"dependencies": {
"@vben/oxlint-config": "workspace:*"
},
"devDependencies": {
"@eslint/js": "catalog:",
"@typescript-eslint/eslint-plugin": "catalog:",
"@typescript-eslint/parser": "catalog:",
"@vben/oxlint-config": "workspace:*",
"eslint": "catalog:",
"eslint-plugin-jsonc": "catalog:",
"eslint-plugin-n": "catalog:",

2
internal/lint-configs/eslint-config/src/configs/node.ts

@ -17,7 +17,7 @@ export async function node(): Promise<Linter.Config[]> {
'error',
{
allowModules: [
'unbuild',
'tsdown',
'@vben/vite-config',
'vitest',
'vite',

16
internal/lint-configs/eslint-config/tsdown.config.ts

@ -0,0 +1,16 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
deps: {
skipNodeModulesBundle: true,
},
dts: {
resolver: 'tsc',
},
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});

7
internal/lint-configs/oxfmt-config/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

2
internal/lint-configs/oxfmt-config/package.json

@ -12,7 +12,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"stub": "pnpm unbuild --stub"
"stub": "pnpm exec tsdown"
},
"files": [
"dist"

4
internal/lint-configs/oxfmt-config/src/index.ts

@ -2,7 +2,7 @@ import { defineConfig as defineOxfmtConfig } from 'oxfmt';
type OxfmtConfig = Parameters<typeof defineOxfmtConfig>[0];
const oxfmtConfig = defineOxfmtConfig({
const oxfmtConfig: OxfmtConfig = defineOxfmtConfig({
printWidth: 80,
proseWrap: 'never',
semi: true,
@ -28,7 +28,7 @@ const oxfmtConfig = defineOxfmtConfig({
],
});
function defineConfig(config: OxfmtConfig = {}) {
function defineConfig(config: OxfmtConfig = {}): OxfmtConfig {
return defineOxfmtConfig({
...oxfmtConfig,
...config,

11
internal/lint-configs/oxfmt-config/tsdown.config.ts

@ -0,0 +1,11 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
dts: true,
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});

7
internal/lint-configs/oxlint-config/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

2
internal/lint-configs/oxlint-config/package.json

@ -12,7 +12,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"stub": "pnpm unbuild --stub"
"stub": "pnpm exec tsdown"
},
"files": [
"dist"

11
internal/lint-configs/oxlint-config/tsdown.config.ts

@ -0,0 +1,11 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
dts: true,
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});

7
internal/node-utils/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

4
internal/node-utils/package.json

@ -12,7 +12,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"stub": "pnpm unbuild --stub"
"stub": "node ./scripts/build.mjs"
},
"files": [
"dist"
@ -22,7 +22,7 @@
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./src/index.ts",
"types": "./dist/index.d.ts",
"import": "./dist/index.mjs",
"default": "./dist/index.mjs"
}

37
internal/node-utils/scripts/build.mjs

@ -0,0 +1,37 @@
import { spawnSync } from 'node:child_process';
const pnpmCommand =
process.env.npm_execpath &&
process.env.npm_execpath.endsWith('.cjs')
? [process.execPath, process.env.npm_execpath]
: ['pnpm'];
const steps = [
['exec', 'tsdown', '--no-dts'],
[
'exec',
'tsc',
'-p',
'tsconfig.build.json',
'--emitDeclarationOnly',
'--declaration',
'--outDir',
'dist',
],
];
for (const args of steps) {
const [command, ...commandArgs] = pnpmCommand;
const result = spawnSync(command, [...commandArgs, ...args], {
shell: true,
stdio: 'inherit',
});
if (result.error) {
throw result.error;
}
if (result.status !== 0) {
process.exit(result.status ?? 1);
}
}

4
internal/node-utils/src/date.ts

@ -1,6 +1,6 @@
import dayjs from 'dayjs';
import timezone from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone.js';
import utc from 'dayjs/plugin/utc.js';
dayjs.extend(utc);
dayjs.extend(timezone);

34
internal/node-utils/src/monorepo.ts

@ -1,21 +1,31 @@
import { dirname } from 'node:path';
import type { Package } from '@manypkg/get-packages';
import {
getPackages as getPackagesFunc,
getPackagesSync as getPackagesSyncFunc,
} from '@manypkg/get-packages';
import { findUpSync } from 'find-up';
import { existsSync } from 'node:fs';
import { dirname, join, resolve } from 'node:path';
import * as manypkg from '@manypkg/get-packages';
const { getPackages: getPackagesFunc, getPackagesSync: getPackagesSyncFunc } =
manypkg;
/**
*
* @param cwd
*/
function findMonorepoRoot(cwd: string = process.cwd()) {
const lockFile = findUpSync('pnpm-lock.yaml', {
cwd,
type: 'file',
});
return dirname(lockFile || '');
let currentDir = resolve(cwd);
while (true) {
if (existsSync(join(currentDir, 'pnpm-lock.yaml'))) {
return currentDir;
}
const parentDir = dirname(currentDir);
if (parentDir === currentDir) {
return '';
}
currentDir = parentDir;
}
}
/**
@ -40,7 +50,7 @@ async function getPackages() {
*/
async function getPackage(pkgName: string) {
const { packages } = await getPackages();
return packages.find((pkg) => pkg.packageJson.name === pkgName);
return packages.find((pkg: Package) => pkg.packageJson.name === pkgName);
}
export { findMonorepoRoot, getPackage, getPackages, getPackagesSync };

8
internal/node-utils/tsconfig.build.json

@ -0,0 +1,8 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": false
},
"exclude": ["node_modules", "src/__tests__"]
}

10
internal/node-utils/tsdown.config.ts

@ -0,0 +1,10 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: false,
deps: {
skipNodeModulesBundle: true,
},
entry: ['src/index.ts'],
format: ['esm'],
});

7
internal/vite-config/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

7
internal/vite-config/package.json

@ -12,7 +12,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"stub": "pnpm unbuild --stub"
"stub": "pnpm exec tsdown"
},
"files": [
"dist"
@ -30,6 +30,7 @@
"@intlify/unplugin-vue-i18n": "catalog:",
"@jspm/generator": "catalog:",
"@tailwindcss/vite": "catalog:",
"@vben/node-utils": "workspace:*",
"archiver": "catalog:",
"cheerio": "catalog:",
"get-port": "catalog:",
@ -43,18 +44,16 @@
"@pnpm/workspace.read-manifest": "catalog:",
"@types/archiver": "catalog:",
"@types/html-minifier-terser": "catalog:",
"@vben/node-utils": "workspace:*",
"@vitejs/plugin-vue": "catalog:",
"@vitejs/plugin-vue-jsx": "catalog:",
"dayjs": "catalog:",
"dotenv": "catalog:",
"rollup": "catalog:",
"rollup-plugin-visualizer": "catalog:",
"sass": "catalog:",
"sass-embedded": "catalog:",
"unplugin-dts": "catalog:",
"vite": "catalog:",
"vite-plugin-compression": "catalog:",
"vite-plugin-dts": "catalog:",
"vite-plugin-html": "catalog:",
"vite-plugin-lazy-import": "catalog:"
}

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

@ -12,8 +12,8 @@ import tailwindcss from '@tailwindcss/vite';
import viteVue from '@vitejs/plugin-vue';
import viteVueJsx from '@vitejs/plugin-vue-jsx';
import { visualizer as viteVisualizerPlugin } from 'rollup-plugin-visualizer';
import viteDtsPlugin from 'unplugin-dts/vite';
import viteCompressPlugin from 'vite-plugin-compression';
import viteDtsPlugin from 'vite-plugin-dts';
import { createHtmlPlugin as viteHtmlPlugin } from 'vite-plugin-html';
import { VitePWA } from 'vite-plugin-pwa';
import viteVueDevTools from 'vite-plugin-vue-devtools';
@ -231,12 +231,13 @@ async function loadLibraryPlugins(
// 单独取,否则commonOptions拿不到
const isBuild = options.isBuild;
const { dts, ...commonOptions } = options;
const dtsOptions = typeof dts === 'object' ? dts : undefined;
const commonPlugins = await loadCommonPlugins(commonOptions);
return await loadConditionPlugins([
...commonPlugins,
{
condition: isBuild && !!dts,
plugins: () => [viteDtsPlugin({ logLevel: 'error' })],
plugins: () => [viteDtsPlugin(dtsOptions)],
},
]);
}

2
internal/vite-config/src/typing.ts

@ -1,11 +1,11 @@
import type { PluginVisualizerOptions } from 'rollup-plugin-visualizer';
import type { PluginOptions } from 'unplugin-dts';
import type {
ConfigEnv,
PluginOption,
UserConfig,
UserConfigFnPromise,
} from 'vite';
import type { PluginOptions } from 'vite-plugin-dts';
import type { Options as PwaPluginOptions } from 'vite-plugin-pwa';
/**

41
internal/vite-config/tsdown.config.ts

@ -0,0 +1,41 @@
import { cp, mkdir } from 'node:fs/promises';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
import { defineConfig } from 'tsdown';
const rootDir = dirname(fileURLToPath(import.meta.url));
const loadingAssets = ['default-loading-antd.html', 'default-loading.html'];
export default defineConfig({
clean: true,
deps: {
neverBundle: ['@vben/node-utils'],
skipNodeModulesBundle: true,
},
dts: {
resolver: 'tsc',
},
entry: ['src/index.ts'],
format: ['esm'],
hooks: {
'build:done': async (context) => {
const outDir = context.options.outDir;
if (!outDir) {
return;
}
await mkdir(outDir, { recursive: true });
for (const file of loadingAssets) {
await cp(
join(rootDir, 'src/plugins/inject-app-loading', file),
join(outDir, file),
);
}
},
},
outExtensions: () => ({
dts: '.d.ts',
}),
});

4
package.json

@ -68,6 +68,7 @@
"@changesets/changelog-github": "catalog:",
"@changesets/cli": "catalog:",
"@playwright/test": "catalog:",
"@tsdown/css": "catalog:",
"@types/node": "catalog:",
"@vben/commitlint-config": "workspace:*",
"@vben/eslint-config": "workspace:*",
@ -92,9 +93,10 @@
"playwright": "catalog:",
"rimraf": "catalog:",
"tailwindcss": "catalog:",
"tsdown": "catalog:",
"turbo": "catalog:",
"typescript": "catalog:",
"unbuild": "catalog:",
"unplugin-vue": "catalog:",
"vite": "catalog:",
"vitest": "catalog:",
"vue": "catalog:",

2
packages/@core/base/design/package.json

@ -23,6 +23,7 @@
"exports": {
"./bem": {
"development": "./src/scss-bem/bem.scss",
"production": "./src/scss-bem/bem.scss",
"default": "./dist/bem.scss"
},
"./theme": {
@ -31,6 +32,7 @@
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"production": "./src/index.ts",
"default": "./dist/design.css"
}
},

7
packages/@core/base/icons/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

3
packages/@core/base/icons/package.json

@ -11,7 +11,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"build": "pnpm unbuild"
"build": "pnpm exec tsdown"
},
"files": [
"dist"
@ -22,6 +22,7 @@
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"production": "./src/index.ts",
"default": "./dist/index.mjs"
}
},

11
packages/@core/base/icons/tsdown.config.ts

@ -0,0 +1,11 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
dts: true,
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});

14
packages/@core/base/shared/build.config.ts

@ -1,14 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: [
'src/store',
'src/constants/index',
'src/utils/index',
'src/color/index',
'src/cache/index',
'src/global-state',
],
});

10
packages/@core/base/shared/package.json

@ -11,8 +11,8 @@
"license": "MIT",
"type": "module",
"scripts": {
"build": "pnpm unbuild",
"stub": "pnpm unbuild --stub"
"build": "pnpm exec tsdown",
"stub": "pnpm run build"
},
"files": [
"dist"
@ -22,31 +22,37 @@
"./constants": {
"types": "./src/constants/index.ts",
"development": "./src/constants/index.ts",
"production": "./src/constants/index.ts",
"default": "./dist/constants/index.mjs"
},
"./utils": {
"types": "./src/utils/index.ts",
"development": "./src/utils/index.ts",
"production": "./src/utils/index.ts",
"default": "./dist/utils/index.mjs"
},
"./color": {
"types": "./src/color/index.ts",
"development": "./src/color/index.ts",
"production": "./src/color/index.ts",
"default": "./dist/color/index.mjs"
},
"./cache": {
"types": "./src/cache/index.ts",
"development": "./src/cache/index.ts",
"production": "./src/cache/index.ts",
"default": "./dist/cache/index.mjs"
},
"./store": {
"types": "./src/store.ts",
"development": "./src/store.ts",
"production": "./src/store.ts",
"default": "./dist/store.mjs"
},
"./global-state": {
"types": "./src/global-state.ts",
"development": "./src/global-state.ts",
"production": "./src/global-state.ts",
"default": "./dist/global-state.mjs"
}
},

4
packages/@core/base/shared/src/utils/__tests__/date.test.ts

@ -1,6 +1,6 @@
import dayjs from 'dayjs';
import timezone from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone.js';
import utc from 'dayjs/plugin/utc.js';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import {

4
packages/@core/base/shared/src/utils/date.ts

@ -1,6 +1,6 @@
import dayjs from 'dayjs';
import timezone from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone.js';
import utc from 'dayjs/plugin/utc.js';
dayjs.extend(utc);
dayjs.extend(timezone);

18
packages/@core/base/shared/tsdown.config.ts

@ -0,0 +1,18 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
dts: true,
entry: {
'cache/index': 'src/cache/index.ts',
'color/index': 'src/color/index.ts',
'constants/index': 'src/constants/index.ts',
'global-state': 'src/global-state.ts',
'store': 'src/store.ts',
'utils/index': 'src/utils/index.ts',
},
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});

7
packages/@core/base/typings/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

6
packages/@core/base/typings/package.json

@ -11,10 +11,11 @@
"license": "MIT",
"type": "module",
"scripts": {
"build": "pnpm unbuild"
"build": "pnpm exec tsdown"
},
"files": [
"dist"
"dist",
"vue-router.d.ts"
],
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
@ -23,6 +24,7 @@
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"production": "./src/index.ts",
"default": "./dist/index.mjs"
},
"./vue-router": {

11
packages/@core/base/typings/tsdown.config.ts

@ -0,0 +1,11 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
dts: true,
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});

2
packages/@core/base/typings/vue-router.d.ts

@ -1,5 +1,5 @@
/* eslint-disable no-restricted-imports */
import type { RouteMeta as IRouteMeta } from '@vben-core/typings';
import type { RouteMeta as IRouteMeta } from './dist/index.d.mts';
import 'vue-router';

7
packages/@core/composables/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

3
packages/@core/composables/package.json

@ -11,7 +11,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"build": "pnpm unbuild"
"build": "pnpm exec tsdown"
},
"files": [
"dist"
@ -23,6 +23,7 @@
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"production": "./src/index.ts",
"default": "./dist/index.mjs"
}
},

11
packages/@core/composables/tsdown.config.ts

@ -0,0 +1,11 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
dts: true,
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});

7
packages/@core/preferences/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

17
packages/@core/preferences/package.json

@ -11,7 +11,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"#build": "pnpm unbuild"
"#build": "pnpm exec tsdown"
},
"files": [
"dist",
@ -20,12 +20,23 @@
"sideEffects": [
"**/*.css"
],
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"default": "./src/index.ts",
"#default": "./dist/index.mjs"
"production": "./src/index.ts",
"default": "./dist/index.mjs"
}
},
"publishConfig": {
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.mjs"
}
}
},
"dependencies": {

11
packages/@core/preferences/tsdown.config.ts

@ -0,0 +1,11 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
dts: true,
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});

21
packages/@core/ui-kit/form-ui/build.config.ts

@ -1,21 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: [
{
builder: 'mkdist',
input: './src',
loaders: ['vue'],
pattern: ['**/*.vue'],
},
{
builder: 'mkdist',
format: 'esm',
input: './src',
loaders: ['js'],
pattern: ['**/*.ts'],
},
],
});

5
packages/@core/ui-kit/form-ui/package.json

@ -11,7 +11,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"build": "pnpm unbuild",
"build": "pnpm exec tsdown",
"prepublishOnly": "npm run build"
},
"files": [
@ -22,16 +22,19 @@
],
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"production": "./src/index.ts",
"default": "./dist/index.mjs"
}
},
"publishConfig": {
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.mjs"
}
}

22
packages/@core/ui-kit/form-ui/tsdown.config.ts

@ -0,0 +1,22 @@
import Vue from 'unplugin-vue/rolldown';
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
deps: {
skipNodeModulesBundle: true,
},
dts: {
vue: true,
},
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
js: '.mjs',
}),
platform: 'neutral',
plugins: [Vue({ isProduction: true })],
unbundle: true,
});

21
packages/@core/ui-kit/layout-ui/build.config.ts

@ -1,21 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: [
{
builder: 'mkdist',
input: './src',
loaders: ['vue'],
pattern: ['**/*.vue'],
},
{
builder: 'mkdist',
format: 'esm',
input: './src',
loaders: ['js'],
pattern: ['**/*.ts'],
},
],
});

5
packages/@core/ui-kit/layout-ui/package.json

@ -11,7 +11,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"build": "pnpm unbuild",
"build": "pnpm exec tsdown",
"prepublishOnly": "npm run build"
},
"files": [
@ -22,16 +22,19 @@
],
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"production": "./src/index.ts",
"default": "./dist/index.mjs"
}
},
"publishConfig": {
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.mjs"
}
}

22
packages/@core/ui-kit/layout-ui/tsdown.config.ts

@ -0,0 +1,22 @@
import Vue from 'unplugin-vue/rolldown';
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
deps: {
skipNodeModulesBundle: true,
},
dts: {
vue: true,
},
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
js: '.mjs',
}),
platform: 'neutral',
plugins: [Vue({ isProduction: true })],
unbundle: true,
});

26
packages/@core/ui-kit/menu-ui/build.config.ts

@ -1,26 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: [
{
builder: 'mkdist',
input: './src',
pattern: ['**/*'],
},
{
builder: 'mkdist',
input: './src',
loaders: ['vue'],
pattern: ['**/*.vue'],
},
{
builder: 'mkdist',
format: 'esm',
input: './src',
loaders: ['js'],
pattern: ['**/*.ts'],
},
],
});

5
packages/@core/ui-kit/menu-ui/package.json

@ -11,7 +11,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"build": "pnpm unbuild",
"build": "pnpm exec tsdown",
"prepublishOnly": "npm run build"
},
"files": [
@ -22,16 +22,19 @@
],
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"production": "./src/index.ts",
"default": "./dist/index.mjs"
}
},
"publishConfig": {
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.mjs"
}
}

22
packages/@core/ui-kit/menu-ui/tsdown.config.ts

@ -0,0 +1,22 @@
import Vue from 'unplugin-vue/rolldown';
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
deps: {
skipNodeModulesBundle: true,
},
dts: {
vue: true,
},
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
js: '.mjs',
}),
platform: 'neutral',
plugins: [Vue({ isProduction: true })],
unbundle: true,
});

21
packages/@core/ui-kit/popup-ui/build.config.ts

@ -1,21 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: [
{
builder: 'mkdist',
input: './src',
loaders: ['vue'],
pattern: ['**/*.vue'],
},
{
builder: 'mkdist',
format: 'esm',
input: './src',
loaders: ['js'],
pattern: ['**/*.ts'],
},
],
});

5
packages/@core/ui-kit/popup-ui/package.json

@ -11,7 +11,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"build": "pnpm unbuild",
"build": "pnpm exec tsdown",
"prepublishOnly": "npm run build"
},
"files": [
@ -22,16 +22,19 @@
],
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"production": "./src/index.ts",
"default": "./dist/index.mjs"
}
},
"publishConfig": {
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.mjs"
}
}

22
packages/@core/ui-kit/popup-ui/tsdown.config.ts

@ -0,0 +1,22 @@
import { defineConfig } from 'tsdown';
// eslint-disable-next-line n/no-extraneous-import
import Vue from 'unplugin-vue/rolldown';
export default defineConfig({
clean: true,
deps: {
skipNodeModulesBundle: true,
},
dts: {
vue: true,
},
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
js: '.mjs',
}),
platform: 'neutral',
plugins: [Vue({ isProduction: true })],
unbundle: true,
});

27
packages/@core/ui-kit/shadcn-ui/build.config.ts

@ -1,27 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: [
{
builder: 'mkdist',
input: './src',
pattern: ['**/*'],
},
{
builder: 'mkdist',
input: './src',
loaders: ['vue'],
pattern: ['**/*.vue'],
},
{
builder: 'mkdist',
format: 'esm',
input: './src',
loaders: ['js'],
pattern: ['**/*.ts'],
},
],
});

15
packages/@core/ui-kit/shadcn-ui/package.json

@ -1,8 +1,6 @@
{
"name": "@vben-core/shadcn-ui",
"version": "5.7.0",
"#main": "./dist/index.mjs",
"#module": "./dist/index.mjs",
"homepage": "https://github.com/vbenjs/vue-vben-admin",
"bugs": "https://github.com/vbenjs/vue-vben-admin/issues",
"repository": {
@ -12,29 +10,28 @@
},
"license": "MIT",
"type": "module",
"scripts": {
"#build": "pnpm unbuild",
"#prepublishOnly": "npm run build"
},
"files": [
"dist"
"components.json",
"src"
],
"sideEffects": [
"**/*.css"
],
"main": "./src/index.ts",
"module": "./src/index.ts",
"types": "./src/index.ts",
"exports": {
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"default": "./src/index.ts",
"//default": "./dist/index.mjs"
"default": "./src/index.ts"
}
},
"publishConfig": {
"exports": {
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"default": "./src/index.ts"
}
}

5
packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue

@ -448,8 +448,9 @@ defineExpose({
}
.item {
@apply h-7.5 w-full box-border;
box-sizing: border-box;
width: 100%;
height: 30px;
background-color: #f3f3f3;
border: 1px solid #666;
}

21
packages/@core/ui-kit/tabs-ui/build.config.ts

@ -1,21 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: [
{
builder: 'mkdist',
input: './src',
loaders: ['vue'],
pattern: ['**/*.vue'],
},
{
builder: 'mkdist',
format: 'esm',
input: './src',
loaders: ['js'],
pattern: ['**/*.ts'],
},
],
});

5
packages/@core/ui-kit/tabs-ui/package.json

@ -11,7 +11,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"build": "pnpm unbuild",
"build": "pnpm exec tsdown",
"prepublishOnly": "npm run build"
},
"files": [
@ -22,16 +22,19 @@
],
"main": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./src/index.ts",
"development": "./src/index.ts",
"production": "./src/index.ts",
"default": "./dist/index.mjs"
}
},
"publishConfig": {
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.mjs"
}
}

22
packages/@core/ui-kit/tabs-ui/tsdown.config.ts

@ -0,0 +1,22 @@
import { defineConfig } from 'tsdown';
// eslint-disable-next-line n/no-extraneous-import
import Vue from 'unplugin-vue/rolldown';
export default defineConfig({
clean: true,
deps: {
skipNodeModulesBundle: true,
},
dts: {
vue: true,
},
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
js: '.mjs',
}),
platform: 'neutral',
plugins: [Vue({ isProduction: true })],
unbundle: true,
});

7
pnpm-workspace.yaml

@ -46,6 +46,7 @@ catalog:
'@tailwindcss/vite': ^4.2.1
'@tanstack/vue-query': ^5.92.9
'@tanstack/vue-store': ^0.9.2
'@tsdown/css': ^0.21.3
'@types/archiver': ^7.0.0
'@types/html-minifier-terser': ^7.0.2
'@types/json-bigint': ^1.0.4
@ -136,7 +137,6 @@ catalog:
reka-ui: ^2.9.2
resolve.exports: ^2.0.3
rimraf: ^6.1.3
rollup: ^4.59.0
rollup-plugin-visualizer: ^7.0.1
sass: ^1.98.0
sass-embedded: ^1.98.0
@ -155,15 +155,16 @@ catalog:
tdesign-vue-next: ^1.18.5
theme-colors: ^0.1.0
tippy.js: ^6.3.7
tsdown: ^0.21.3
turbo: ^2.8.17
tw-animate-css: ^1.4.0
typescript: ^5.9.3
unbuild: ^3.6.1
unplugin-dts: ^1.0.0-beta.6
unplugin-element-plus: ^0.11.2
unplugin-vue: ^7.1.1
vee-validate: ^4.15.1
vite: ^8.0.0
vite-plugin-compression: ^0.5.1
vite-plugin-dts: ^4.5.4
vite-plugin-html: ^3.2.2
vite-plugin-lazy-import: ^1.0.7
vite-plugin-pwa: ^1.2.0

7
scripts/turbo-run/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

2
scripts/turbo-run/package.json

@ -5,7 +5,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"stub": "pnpm unbuild --stub"
"stub": "pnpm exec tsdown"
},
"files": [
"dist"

11
scripts/turbo-run/tsdown.config.ts

@ -0,0 +1,11 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
dts: true,
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});

7
scripts/vsh/build.config.ts

@ -1,7 +0,0 @@
import { defineBuildConfig } from 'unbuild';
export default defineBuildConfig({
clean: true,
declaration: true,
entries: ['src/index'],
});

2
scripts/vsh/package.json

@ -5,7 +5,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"stub": "pnpm unbuild --stub"
"stub": "pnpm exec tsdown"
},
"files": [
"dist"

67
scripts/vsh/src/check-circular/index.ts

@ -1,10 +1,15 @@
import type { CAC } from 'cac';
import { extname } from 'node:path';
import { access, mkdtemp, readFile, rm } from 'node:fs/promises';
import { createRequire } from 'node:module';
import { tmpdir } from 'node:os';
import { extname, join } from 'node:path';
import { getStagedFiles } from '@vben/node-utils';
import { execa, getStagedFiles } from '@vben/node-utils';
import { circularDepsDetect } from 'circular-dependency-scanner';
const require = createRequire(import.meta.url);
const circularScannerCli =
require.resolve('circular-dependency-scanner/dist/cli.js');
// 默认配置
const DEFAULT_CONFIG = {
@ -41,6 +46,44 @@ interface CommandOptions {
// 缓存机制
const cache = new Map<string, CircularDependencyResult[]>();
async function detectCircularDependencies({
cwd,
ignorePattern,
staged,
}: {
cwd: string;
ignorePattern: string;
staged: boolean;
}): Promise<CircularDependencyResult[]> {
const tempDir = await mkdtemp(join(tmpdir(), 'vsh-check-circular-'));
const outputFile = join(tempDir, 'circles.json');
try {
const args = [circularScannerCli, cwd, '--output', outputFile];
if (staged) {
args.push('--absolute');
}
args.push('--ignore', ignorePattern);
await execa(process.execPath, args, {
cwd,
});
await access(outputFile);
const output = await readFile(outputFile, 'utf8');
return JSON.parse(output) as CircularDependencyResult[];
} catch (error) {
if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {
return [];
}
throw error;
} finally {
await rm(tempDir, { force: true, recursive: true });
}
}
/**
*
* @param circles -
@ -85,17 +128,17 @@ async function checkCircular({
const cacheKey = `${staged}-${process.cwd()}-${ignorePattern}`;
if (cache.has(cacheKey)) {
const cachedResults = cache.get(cacheKey);
if (cachedResults) {
verbose && formatCircles(cachedResults);
if (cachedResults && verbose) {
formatCircles(cachedResults);
}
return;
}
// 检测循环依赖
const results = await circularDepsDetect({
absolute: staged,
const results = await detectCircularDependencies({
cwd: process.cwd(),
ignore: [ignorePattern],
ignorePattern,
staged,
});
if (staged) {
@ -118,11 +161,15 @@ async function checkCircular({
// 更新缓存
cache.set(cacheKey, circularFiles);
verbose && formatCircles(circularFiles);
if (verbose) {
formatCircles(circularFiles);
}
} else {
// 更新缓存
cache.set(cacheKey, results);
verbose && formatCircles(results);
if (verbose) {
formatCircles(results);
}
}
// 如果发现循环依赖,只输出警告信息

2
scripts/vsh/src/check-dep/index.ts

@ -10,7 +10,7 @@ const DEFAULT_CONFIG = {
ignoreMatches: [
'vite',
'vitest',
'unbuild',
'tsdown',
'@vben/tsconfig',
'@vben/vite-config',
'@types/*',

11
scripts/vsh/tsdown.config.ts

@ -0,0 +1,11 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
clean: true,
dts: true,
entry: ['src/index.ts'],
format: ['esm'],
outExtensions: () => ({
dts: '.d.ts',
}),
});
Loading…
Cancel
Save