chore: 工程能力增强,可交互式使用常用功能

This commit is contained in:
wangxuefeng 2025-02-19 15:22:48 +08:00
parent eab709f94f
commit c3ebe3e15c
7 changed files with 434 additions and 40 deletions

View File

@ -19,9 +19,9 @@ import { ElConfigProvider, ElMessage } from 'element-plus';
import {
XMask,
useMask,
Bell,
Lock,
SwitchButton,
// Bell,
// Lock,
// SwitchButton,
type ActionBarItems,
type ActionProps
} from '@vtj/web';
@ -30,19 +30,19 @@ import _logo from './assets/logo.svg';
const { disabled, title, menus, logo, themeSwitchable, pure } = useMask();
const actions: ActionBarItems = [
{
name: 'message',
icon: Bell,
badge: 1
},
{
name: 'lock',
icon: Lock
},
{
name: 'logout',
icon: SwitchButton
}
// {
// name: 'message',
// icon: Bell,
// badge: 1
// }
// {
// name: 'lock',
// icon: Lock
// },
// {
// name: 'logout',
// icon: SwitchButton
// }
];
const onActionClick = (action: ActionProps) => {

View File

@ -1,5 +1,5 @@
{
"name": "y-code",
"name": "@sy/low-code-y-code-v1",
"version": "1.0.0",
"private": true,
"type": "module",

View File

@ -12,6 +12,8 @@
"email": "wangxuefeng@shiyue.com"
},
"scripts": {
"low-code:help": "node ./scripts/index.mjs",
"dev:select-app": "node ./scripts/dev-select-app.mjs",
"preinstall": "npx only-allow pnpm && pnpm i -g turbo rimraf",
"dev": "turbo run dev",
"build": "turbo run build",
@ -50,5 +52,9 @@
"typescript": "~5.6.3",
"vue-eslint-parser": "~9.4.3",
"vue-tsc": "~2.1.10"
},
"dependencies": {
"inquirer": "^12.4.2",
"ora": "^8.2.0"
}
}

286
pnpm-lock.yaml generated
View File

@ -7,6 +7,16 @@ settings:
importers:
.:
dependencies:
commander:
specifier: ^13.1.0
version: 13.1.0
inquirer:
specifier: ^12.4.2
version: 12.4.2(@types/node@22.10.10)
ora:
specifier: ^8.2.0
version: 8.2.0
devDependencies:
'@commitlint/cli':
specifier: ~19.5.0
@ -515,7 +525,7 @@ importers:
version: 5.3.3
unplugin-vue-components:
specifier: ^0.26.0
version: 0.26.0(@babel/parser@7.26.9)(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.34.8)(vue@3.5.13(typescript@5.3.3))
version: 0.26.0(@babel/parser@7.26.9)(@nuxt/kit@3.15.4)(rollup@4.34.8)(vue@3.5.13(typescript@5.3.3))
vite:
specifier: ^6.1.0
version: 6.1.0(@types/node@20.17.19)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)
@ -2242,6 +2252,15 @@ packages:
eslint: ^8.55.0
prettier: ^3.2.5
'@inquirer/checkbox@4.1.2':
resolution: {integrity: sha512-PL9ixC5YsPXzXhAZFUPmkXGxfgjkdfZdPEPPmt4kFwQ4LBMDG9n/nHXYRGGZSKZJs+d1sGKWgS2GiPzVRKUdtQ==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/confirm@5.1.6':
resolution: {integrity: sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==}
engines: {node: '>=18'}
@ -2260,10 +2279,91 @@ packages:
'@types/node':
optional: true
'@inquirer/editor@4.2.7':
resolution: {integrity: sha512-gktCSQtnSZHaBytkJKMKEuswSk2cDBuXX5rxGFv306mwHfBPjg5UAldw9zWGoEyvA9KpRDkeM4jfrx0rXn0GyA==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/expand@4.0.9':
resolution: {integrity: sha512-Xxt6nhomWTAmuSX61kVgglLjMEFGa+7+F6UUtdEUeg7fg4r9vaFttUUKrtkViYYrQBA5Ia1tkOJj2koP9BuLig==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/figures@1.0.10':
resolution: {integrity: sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==}
engines: {node: '>=18'}
'@inquirer/input@4.1.6':
resolution: {integrity: sha512-1f5AIsZuVjPT4ecA8AwaxDFNHny/tSershP/cTvTDxLdiIGTeILNcKozB0LaYt6mojJLUbOYhpIxicaYf7UKIQ==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/number@3.0.9':
resolution: {integrity: sha512-iN2xZvH3tyIYXLXBvlVh0npk1q/aVuKXZo5hj+K3W3D4ngAEq/DkLpofRzx6oebTUhBvOgryZ+rMV0yImKnG3w==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/password@4.0.9':
resolution: {integrity: sha512-xBEoOw1XKb0rIN208YU7wM7oJEHhIYkfG7LpTJAEW913GZeaoQerzf5U/LSHI45EVvjAdgNXmXgH51cUXKZcJQ==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/prompts@7.3.2':
resolution: {integrity: sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/rawlist@4.0.9':
resolution: {integrity: sha512-+5t6ebehKqgoxV8fXwE49HkSF2Rc9ijNiVGEQZwvbMI61/Q5RcD+jWD6Gs1tKdz5lkI8GRBL31iO0HjGK1bv+A==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/search@3.0.9':
resolution: {integrity: sha512-DWmKztkYo9CvldGBaRMr0ETUHgR86zE6sPDVOHsqz4ISe9o1LuiWfgJk+2r75acFclA93J/lqzhT0dTjCzHuoA==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/select@4.0.9':
resolution: {integrity: sha512-BpJyJe7Dkhv2kz7yG7bPSbJLQuu/rqyNlF1CfiiFeFwouegfH+zh13KDyt6+d9DwucKo7hqM3wKLLyJxZMO+Xg==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/type@3.0.4':
resolution: {integrity: sha512-2MNFrDY8jkFYc9Il9DgLsHhMzuHnOYM1+CUYVWbzu9oT0hC7V7EcYvdCKeoll/Fcci04A+ERZ9wcc7cQ8lTkIA==}
engines: {node: '>=18'}
@ -6133,6 +6233,15 @@ packages:
resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
inquirer@12.4.2:
resolution: {integrity: sha512-reyjHcwyK2LObXgTJH4T1Dpfhwu88LNPTZmg/KenmTsy3T8lN/kZT8Oo7UwwkB9q8+ss2qjjN7GV8oFAfyz9Xg==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
inquirer@8.2.5:
resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==}
engines: {node: '>=12.0.0'}
@ -6273,6 +6382,10 @@ packages:
resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
engines: {node: '>=8'}
is-interactive@2.0.0:
resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
engines: {node: '>=12'}
is-map@2.0.3:
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
engines: {node: '>= 0.4'}
@ -6798,6 +6911,10 @@ packages:
resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
engines: {node: '>=10'}
log-symbols@6.0.0:
resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==}
engines: {node: '>=18'}
log-update@6.1.0:
resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
engines: {node: '>=18'}
@ -7448,6 +7565,10 @@ packages:
resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
engines: {node: '>=10'}
ora@8.2.0:
resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==}
engines: {node: '>=18'}
os-browserify@0.3.0:
resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
@ -8688,6 +8809,10 @@ packages:
std-env@3.8.0:
resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==}
stdin-discarder@0.2.2:
resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
engines: {node: '>=18'}
stream-browserify@3.0.0:
resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==}
@ -12030,10 +12155,10 @@ snapshots:
confusing-browser-globals: 1.0.11
deepmerge: 4.3.1
eslint: 9.13.0(jiti@2.4.2)
eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@2.4.2))
eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))
eslint-config-prettier: 9.1.0(eslint@9.13.0(jiti@2.4.2))
eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))
eslint-config-standard-with-typescript: 43.0.1(@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3)
eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))
eslint-config-standard-with-typescript: 43.0.1(@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3)
eslint-import-resolver-typescript: 3.8.1(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@2.4.2))
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2))
eslint-plugin-n: 16.6.2(eslint@9.13.0(jiti@2.4.2))
@ -12049,13 +12174,22 @@ snapshots:
- supports-color
- typescript
'@inquirer/checkbox@4.1.2(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/figures': 1.0.10
'@inquirer/type': 3.0.4(@types/node@22.10.10)
ansi-escapes: 4.3.2
yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/confirm@5.1.6(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/type': 3.0.4(@types/node@22.10.10)
optionalDependencies:
'@types/node': 22.10.10
optional: true
'@inquirer/confirm@5.1.6(@types/node@22.7.9)':
dependencies:
@ -12076,7 +12210,6 @@ snapshots:
yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 22.10.10
optional: true
'@inquirer/core@10.1.7(@types/node@22.7.9)':
dependencies:
@ -12091,12 +12224,91 @@ snapshots:
optionalDependencies:
'@types/node': 22.7.9
'@inquirer/editor@4.2.7(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/type': 3.0.4(@types/node@22.10.10)
external-editor: 3.1.0
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/expand@4.0.9(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/type': 3.0.4(@types/node@22.10.10)
yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/figures@1.0.10': {}
'@inquirer/input@4.1.6(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/type': 3.0.4(@types/node@22.10.10)
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/number@3.0.9(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/type': 3.0.4(@types/node@22.10.10)
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/password@4.0.9(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/type': 3.0.4(@types/node@22.10.10)
ansi-escapes: 4.3.2
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/prompts@7.3.2(@types/node@22.10.10)':
dependencies:
'@inquirer/checkbox': 4.1.2(@types/node@22.10.10)
'@inquirer/confirm': 5.1.6(@types/node@22.10.10)
'@inquirer/editor': 4.2.7(@types/node@22.10.10)
'@inquirer/expand': 4.0.9(@types/node@22.10.10)
'@inquirer/input': 4.1.6(@types/node@22.10.10)
'@inquirer/number': 3.0.9(@types/node@22.10.10)
'@inquirer/password': 4.0.9(@types/node@22.10.10)
'@inquirer/rawlist': 4.0.9(@types/node@22.10.10)
'@inquirer/search': 3.0.9(@types/node@22.10.10)
'@inquirer/select': 4.0.9(@types/node@22.10.10)
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/rawlist@4.0.9(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/type': 3.0.4(@types/node@22.10.10)
yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/search@3.0.9(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/figures': 1.0.10
'@inquirer/type': 3.0.4(@types/node@22.10.10)
yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/select@4.0.9(@types/node@22.10.10)':
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/figures': 1.0.10
'@inquirer/type': 3.0.4(@types/node@22.10.10)
ansi-escapes: 4.3.2
yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 22.10.10
'@inquirer/type@3.0.4(@types/node@22.10.10)':
optionalDependencies:
'@types/node': 22.10.10
optional: true
'@inquirer/type@3.0.4(@types/node@22.7.9)':
optionalDependencies:
@ -13432,11 +13644,6 @@ snapshots:
vite: 6.1.0(@types/node@22.7.9)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)
vue: 3.5.13(typescript@5.6.3)
'@vitejs/plugin-vue@5.2.1(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))':
dependencies:
vite: 6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)
vue: 3.5.13(typescript@5.7.3)
'@vitejs/plugin-vue@5.2.1(vite@6.1.0(@types/node@20.17.19)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.3.3))':
dependencies:
vite: 6.1.0(@types/node@20.17.19)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1)
@ -13546,7 +13753,7 @@ snapshots:
'@types/serve-static': 1.15.7
'@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))
'@vitejs/plugin-legacy': 6.0.1(terser@5.37.0)(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))
'@vitejs/plugin-vue': 5.2.1(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))
'@vitejs/plugin-vue': 5.2.1(vite@6.1.0(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))
'@vitejs/plugin-vue-jsx': 4.1.1(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))
'@vitest/coverage-v8': 2.1.9(vitest@2.1.9(@types/node@22.10.10)(jsdom@25.0.1)(less@4.2.2)(msw@2.7.0(@types/node@22.10.10)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0))
'@vtj/node': 0.9.6
@ -13568,7 +13775,7 @@ snapshots:
vite-plugin-dts: 4.4.0(@types/node@22.10.10)(rollup@3.29.5)(typescript@5.7.3)(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))
vite-plugin-node-polyfills: 0.22.0(rollup@3.29.5)(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))
vite-plugin-vue-devtools: 7.6.8(rollup@3.29.5)(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))
vite-plugin-vue-style-bundler: 1.0.9(@types/less@3.0.8)(@vitejs/plugin-vue@5.2.1(vite@6.1.0(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)))(less@4.2.2)(sass@1.83.4)(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))
vite-plugin-vue-style-bundler: 1.0.9(@types/less@3.0.8)(@vitejs/plugin-vue@5.2.1(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)))(less@4.2.2)(sass@1.83.4)(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))
vitest: 2.1.9(@types/node@22.10.10)(jsdom@25.0.1)(less@4.2.2)(msw@2.7.0(@types/node@22.10.10)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0)
vue-tsc: 2.2.2(typescript@5.7.3)
transitivePeerDependencies:
@ -15775,7 +15982,7 @@ snapshots:
eslint: 9.13.0(jiti@2.4.2)
semver: 7.7.1
eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@2.4.2)):
eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2)):
dependencies:
confusing-browser-globals: 1.0.11
eslint: 9.13.0(jiti@2.4.2)
@ -15788,12 +15995,12 @@ snapshots:
dependencies:
eslint: 9.13.0(jiti@2.4.2)
eslint-config-standard-with-typescript@43.0.1(@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3):
eslint-config-standard-with-typescript@43.0.1(@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3):
dependencies:
'@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3)
'@typescript-eslint/parser': 6.21.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3)
eslint: 9.13.0(jiti@2.4.2)
eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))
eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2))
eslint-plugin-n: 16.6.2(eslint@9.13.0(jiti@2.4.2))
eslint-plugin-promise: 6.6.0(eslint@9.13.0(jiti@2.4.2))
@ -15801,7 +16008,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2)):
eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-n@16.6.2(eslint@9.13.0(jiti@2.4.2)))(eslint-plugin-promise@6.6.0(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2)):
dependencies:
eslint: 9.13.0(jiti@2.4.2)
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2))
@ -15833,7 +16040,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2)):
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.1(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2)):
dependencies:
debug: 3.2.7
optionalDependencies:
@ -15862,7 +16069,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.13.0(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.1)(eslint@9.13.0(jiti@2.4.2))
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.1(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@2.4.2)))(eslint@9.13.0(jiti@2.4.2))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@ -17031,6 +17238,18 @@ snapshots:
ini@4.1.1: {}
inquirer@12.4.2(@types/node@22.10.10):
dependencies:
'@inquirer/core': 10.1.7(@types/node@22.10.10)
'@inquirer/prompts': 7.3.2(@types/node@22.10.10)
'@inquirer/type': 3.0.4(@types/node@22.10.10)
ansi-escapes: 4.3.2
mute-stream: 2.0.0
run-async: 3.0.0
rxjs: 7.8.1
optionalDependencies:
'@types/node': 22.10.10
inquirer@8.2.5:
dependencies:
ansi-escapes: 4.3.2
@ -17198,6 +17417,8 @@ snapshots:
is-interactive@1.0.0: {}
is-interactive@2.0.0: {}
is-map@2.0.3: {}
is-module@1.0.0: {}
@ -17719,6 +17940,11 @@ snapshots:
chalk: 4.1.2
is-unicode-supported: 0.1.0
log-symbols@6.0.0:
dependencies:
chalk: 5.4.1
is-unicode-supported: 1.3.0
log-update@6.1.0:
dependencies:
ansi-escapes: 7.0.0
@ -18397,6 +18623,18 @@ snapshots:
strip-ansi: 6.0.1
wcwidth: 1.0.1
ora@8.2.0:
dependencies:
chalk: 5.4.1
cli-cursor: 5.0.0
cli-spinners: 2.9.2
is-interactive: 2.0.0
is-unicode-supported: 2.1.0
log-symbols: 6.0.0
stdin-discarder: 0.2.2
string-width: 7.2.0
strip-ansi: 7.1.0
os-browserify@0.3.0: {}
os-tmpdir@1.0.2: {}
@ -19702,6 +19940,8 @@ snapshots:
std-env@3.8.0: {}
stdin-discarder@0.2.2: {}
stream-browserify@3.0.0:
dependencies:
inherits: 2.0.4
@ -20456,7 +20696,7 @@ snapshots:
pathe: 2.0.3
picomatch: 4.0.2
unplugin-vue-components@0.26.0(@babel/parser@7.26.9)(@nuxt/kit@3.15.4(magicast@0.3.5))(rollup@4.34.8)(vue@3.5.13(typescript@5.3.3)):
unplugin-vue-components@0.26.0(@babel/parser@7.26.9)(@nuxt/kit@3.15.4)(rollup@4.34.8)(vue@3.5.13(typescript@5.3.3)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.4(rollup@4.34.8)
@ -20773,10 +21013,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
vite-plugin-vue-style-bundler@1.0.9(@types/less@3.0.8)(@vitejs/plugin-vue@5.2.1(vite@6.1.0(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)))(less@4.2.2)(sass@1.83.4)(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)):
vite-plugin-vue-style-bundler@1.0.9(@types/less@3.0.8)(@vitejs/plugin-vue@5.2.1(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)))(less@4.2.2)(sass@1.83.4)(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3)):
dependencies:
'@types/less': 3.0.8
'@vitejs/plugin-vue': 5.2.1(vite@6.0.11(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))
'@vitejs/plugin-vue': 5.2.1(vite@6.1.0(@types/node@22.10.10)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))
less: 4.2.2
magic-string: 0.30.17
remove: 0.1.5

View File

@ -0,0 +1,69 @@
import inquirer from "inquirer";
import { exec, execSync } from "child_process";
import path from "node:path";
import fs from "node:fs";
import { fileURLToPath } from "node:url";
import { getLoadAnimation } from "./utils/index.mjs";
import { ExitPromptError } from "inquirer";
const loadAnimation = getLoadAnimation("正在获取应用列表...");
// 替换原有的 __dirname 定义
const dirname = path.dirname(fileURLToPath(import.meta.url));
// 获取 apps 目录
const appsDir = path.join(dirname, "../apps");
const EXCLUDE_DIRS = ["platform"];
// 通过 apps 目录生成 commands 对象
try {
loadAnimation.start(); // 启动加载动画
const commands = fs
.readdirSync(appsDir)
.filter((app) => {
const isDirectory = fs.statSync(path.join(appsDir, app)).isDirectory();
return isDirectory && !EXCLUDE_DIRS.includes(app);
})
.map((app) => ({
name: `📦 ${app}`, // 显示带图标的友好名称
value: app, // 实际值保持原目录名
}));
// console.log(commands);
// 提供交互式选择
inquirer
.prompt([
{
type: "list",
name: "command",
message: "选择要独立运行的子应用",
choices: commands,
},
])
.then((answers) => {
loadAnimation.start("正在启动子应用...");
// 获取用户选择的命令
const selectedCommand = `turbo run dev --filter=@sy/low-code-${answers.command}`;
// 执行 Bash 命令
console.log("🚀 执行命令:", selectedCommand); // 添加命令预览
execSync(selectedCommand, {
stdio: "inherit",
cwd: path.join(appsDir, ".."),
});
loadAnimation.succeed("子应用启动成功");
})
.catch((error) => {
if (error instanceof ExitPromptError) {
loadAnimation.stop(); // 停止加载动画
console.log("\n👋 已退出选择操作");
process.exit(0); // 正常退出
} else {
loadAnimation.fail("选择失败");
console.error("错误详情:", error.message); // 仅显示错误消息
}
});
} finally {
loadAnimation.stop(); // 确保最终停止加载动画
}

71
scripts/index.mjs Normal file
View File

@ -0,0 +1,71 @@
import inquirer from "inquirer";
import { execSync } from "child_process";
import path from "node:path";
import fs from "node:fs";
import { fileURLToPath } from "node:url";
// 修正后的目录获取逻辑
const dirname = path.dirname(fileURLToPath(import.meta.url));
const EXCLUDE_FILES = ["index.mjs", "utils"]; // 排除自身和其他非命令文件
// 获取当前目录下的命令文件
const commands = fs
.readdirSync(dirname) // 直接读取当前目录
.filter((file) => {
const fullPath = path.join(dirname, file);
return (
fs.statSync(fullPath).isFile() &&
!EXCLUDE_FILES.includes(file) &&
path.extname(file) === ".mjs"
);
})
.map((file) => ({
name: `📦 ${path.basename(file, ".mjs")}`,
value: path.basename(file, ".mjs"),
}));
// 提供交互式选择
inquirer
.prompt([
{
type: "list",
name: "command",
message: "选择要执行的命令",
choices: commands,
},
])
.then((answers) => {
console.log("answers", answers);
// 获取用户选择的命令
const selectedCommand = `node ${path.join(dirname, answers.command)}.mjs`;
// 执行 Bash 命令
console.log("🚀 执行命令:", selectedCommand); // 添加命令预览
execSync(selectedCommand, {
stdio: "inherit",
});
})
.catch((error) => {
if (error.isTtyError) {
console.log("\n👋 终端环境异常");
} else if (error.message.includes("User force closed the prompt")) {
console.log("\n🚪 已主动退出程序");
} else {
console.error("执行错误:", error.message);
}
process.exit(0); // 确保进程正常退出
});
// 添加全局未捕获异常处理
process.on("uncaughtException", (error) => {
if (error.message.includes("User force closed the prompt")) {
console.log("\n🔌 连接已断开");
process.exit(0);
}
});
// 添加 SIGINT 监听
process.on("SIGINT", () => {
console.log("\n🛑 收到终止信号");
process.exit(0);
});

8
scripts/utils/index.mjs Normal file
View File

@ -0,0 +1,8 @@
import ora from "ora";
export function getLoadAnimation(text) {
return ora({
text,
color: "cyan",
spinner: "dots",
});
}