diff --git a/apps/designer/src/App.vue b/apps/designer/src/App.vue index c0d4397..47edb6f 100644 --- a/apps/designer/src/App.vue +++ b/apps/designer/src/App.vue @@ -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) => { diff --git a/apps/y-code-v1/package.json b/apps/y-code-v1/package.json index 19cbecc..3696a6e 100644 --- a/apps/y-code-v1/package.json +++ b/apps/y-code-v1/package.json @@ -1,5 +1,5 @@ { - "name": "y-code", + "name": "@sy/low-code-y-code-v1", "version": "1.0.0", "private": true, "type": "module", diff --git a/package.json b/package.json index d0368cf..7975629 100644 --- a/package.json +++ b/package.json @@ -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" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b44445f..9b51850 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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 diff --git a/scripts/dev-select-app.mjs b/scripts/dev-select-app.mjs new file mode 100644 index 0000000..4fea83d --- /dev/null +++ b/scripts/dev-select-app.mjs @@ -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(); // 确保最终停止加载动画 +} diff --git a/scripts/index.mjs b/scripts/index.mjs new file mode 100644 index 0000000..71fbd1a --- /dev/null +++ b/scripts/index.mjs @@ -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); +}); diff --git a/scripts/utils/index.mjs b/scripts/utils/index.mjs new file mode 100644 index 0000000..f6b400f --- /dev/null +++ b/scripts/utils/index.mjs @@ -0,0 +1,8 @@ +import ora from "ora"; +export function getLoadAnimation(text) { + return ora({ + text, + color: "cyan", + spinner: "dots", + }); +}