create-lumal-admin 0.0.5-beta → 0.0.6-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +39 -10
- package/dist/cli.d.ts +9 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +236 -19
- package/dist/cli.js.map +1 -1
- package/dist/create.d.ts +10 -1
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +18 -5
- package/dist/create.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/presets.d.ts +29 -3
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +38 -10
- package/dist/presets.js.map +1 -1
- package/dist/project-cli.d.ts +3 -0
- package/dist/project-cli.d.ts.map +1 -0
- package/dist/project-cli.js +13 -0
- package/dist/project-cli.js.map +1 -0
- package/dist/projects.d.ts +21 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +124 -0
- package/dist/projects.js.map +1 -0
- package/dist/templates.d.ts +2 -0
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +42 -13
- package/dist/templates.js.map +1 -1
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -3
- package/templates/base/API-CONTRACT.md +67 -20
- package/templates/base/README.md +20 -3
- package/templates/base/src/App.vue +71 -79
- package/templates/base/src/app/components/AppHeaderActions.vue +46 -0
- package/templates/base/src/{components/app → app/components}/AppSettingsDrawer.vue +15 -15
- package/templates/base/src/app/menu-policy.ts +163 -0
- package/templates/base/src/app/module.ts +46 -0
- package/templates/base/src/app/router/index.ts +107 -0
- package/templates/base/src/app/router/views.ts +12 -0
- package/templates/base/src/{services → app/services}/access.ts +1 -1
- package/templates/base/src/app/services/contracts.ts +54 -0
- package/templates/base/src/app/services/local-contracts.ts +18 -0
- package/templates/base/src/{services → app/services}/preferences.ts +8 -8
- package/templates/base/src/app/services/session-runtime.ts +186 -0
- package/templates/base/src/{services → app/services}/session.ts +4 -4
- package/templates/base/src/app/stored-menus.ts +72 -0
- package/templates/base/src/app/views/SafeIframeView.vue +34 -0
- package/templates/base/src/{views → app/views}/auth/LoginView.vue +29 -34
- package/templates/base/src/app/views/error/ForbiddenView.vue +20 -0
- package/templates/base/src/{views → app/views}/error/NotFoundView.vue +5 -7
- package/templates/base/src/main.ts +21 -22
- package/templates/base/src/modules/business/README.md +33 -0
- package/templates/base/src/{views → modules}/dashboard/DashboardView.vue +3 -3
- package/templates/base/src/modules/dashboard/module.ts +14 -0
- package/templates/base/src/shared/api.ts +53 -0
- package/templates/base/src/shared/components/BaseEntityDialog.vue +39 -0
- package/templates/base/src/shared/composables/use-async-data.ts +35 -0
- package/templates/base/src/shared/composables/use-entity-editor.ts +77 -0
- package/templates/base/src/shared/status.ts +4 -0
- package/templates/base/src/shared/tree.ts +41 -0
- package/templates/base/src/styles.scss +1 -6
- package/templates/base/tests/menu-policy.test.ts.template +89 -0
- package/templates/base/tests/session.test.ts.template +38 -27
- package/templates/base/vite.config.ts +4 -4
- package/templates/blank/README.md +6 -0
- package/templates/blank/src/App.vue +11 -0
- package/templates/common/AGENTS.md +13 -0
- package/templates/common/_editorconfig +15 -0
- package/templates/common/_gitattributes +6 -0
- package/templates/{base → common}/_gitignore +1 -0
- package/templates/common/_prettierignore +6 -0
- package/templates/common/docs/DEVELOPMENT.md +26 -0
- package/templates/common/eslint.config.mjs +60 -0
- package/templates/common/package.json +39 -0
- package/templates/common/prettier.config.mjs +8 -0
- package/templates/{base → common}/tsconfig.json +2 -5
- package/templates/common/vitest.config.ts +3 -0
- package/templates/features/examples/src/modules/examples/CrudExampleView.vue +51 -0
- package/templates/features/examples/src/{views → modules}/examples/FormExampleView.vue +15 -8
- package/templates/features/examples/src/modules/examples/module.ts +27 -0
- package/templates/features/system/src/modules/system/config/ConfigView.vue +104 -0
- package/templates/features/system/src/modules/system/config/api.ts +38 -0
- package/templates/features/system/src/modules/system/config/routes.ts +21 -0
- package/templates/features/system/src/modules/system/dictionary/DictionaryItemView.vue +141 -0
- package/templates/features/system/src/modules/system/dictionary/DictionaryTypeView.vue +107 -0
- package/templates/features/system/src/modules/system/dictionary/api.ts +61 -0
- package/templates/features/system/src/modules/system/dictionary/cache.ts +9 -0
- package/templates/features/system/src/modules/system/dictionary/routes.ts +32 -0
- package/templates/features/system/src/modules/system/dictionary/types.ts +22 -0
- package/templates/features/system/src/modules/system/local.ts +348 -0
- package/templates/features/system/src/modules/system/menu/MenuView.vue +133 -0
- package/templates/features/system/src/modules/system/menu/api.ts +73 -0
- package/templates/features/system/src/modules/system/menu/components/MenuEditorDialog.vue +106 -0
- package/templates/features/system/src/modules/system/menu/routes.ts +23 -0
- package/templates/features/system/src/modules/system/menu/types.ts +18 -0
- package/templates/features/system/src/modules/system/module.ts +22 -0
- package/templates/features/system/src/modules/system/organization/OrganizationView.vue +134 -0
- package/templates/features/system/src/modules/system/organization/api.ts +38 -0
- package/templates/features/system/src/modules/system/organization/routes.ts +23 -0
- package/templates/features/system/src/modules/system/organization/types.ts +17 -0
- package/templates/features/system/src/modules/system/role/RoleView.vue +90 -0
- package/templates/features/system/src/modules/system/role/api.ts +40 -0
- package/templates/features/system/src/modules/system/role/components/RoleAuthorizationDialog.vue +110 -0
- package/templates/features/system/src/modules/system/role/permission-tree.ts +31 -0
- package/templates/features/system/src/modules/system/role/routes.ts +24 -0
- package/templates/features/system/src/modules/system/role/types.ts +12 -0
- package/templates/features/system/src/modules/system/user/UserView.vue +297 -0
- package/templates/features/system/src/modules/system/user/api.ts +45 -0
- package/templates/features/system/src/modules/system/user/components/UserOrganizationFilter.vue +61 -0
- package/templates/features/system/src/modules/system/user/components/UserRoleDialog.vue +93 -0
- package/templates/features/system/src/modules/system/user/routes.ts +27 -0
- package/templates/features/system/src/modules/system/user/types.ts +28 -0
- package/templates/features/system/tests/system.test.ts.template +266 -0
- package/templates/modes/http/src/app/services/data-source.ts +124 -0
- package/templates/modes/http/src/app/services/http-adapter.ts +128 -0
- package/templates/modes/http/tests/http.test.ts.template +186 -133
- package/templates/modes/local/src/app/services/data-source.ts +113 -0
- package/templates/modes/local/src/app/services/local-database.ts +67 -0
- package/templates/modes/local/tests/local.test.ts.template +117 -77
- package/templates/presets/standard/src/modules/dashboard/DashboardView.vue +52 -0
- package/templates/presets/standard/src/modules/dashboard/components/DashboardSessionStatus.vue +41 -0
- package/templates/presets/standard/src/modules/dashboard/components/DashboardShortcuts.vue +51 -0
- package/templates/presets/standard/src/modules/profile/ProfileView.vue +109 -0
- package/templates/presets/standard/src/modules/profile/api.ts +49 -0
- package/templates/presets/standard/src/modules/profile/components/ProfilePasswordForm.vue +68 -0
- package/templates/presets/standard/src/modules/profile/local.ts +40 -0
- package/templates/presets/standard/src/modules/profile/module.ts +11 -0
- package/templates/presets/standard/tests/profile.test.ts.template +72 -0
- package/templates/screen/README.md +6 -0
- package/templates/screen/src/App.vue +7 -0
- package/templates/screen/src/screen/ScreenEntry.vue +18 -0
- package/templates/screen/src/screen/ScreenView.vue +48 -0
- package/templates/screen/src/screen/components/ScreenMetrics.vue +40 -0
- package/templates/screen-auth/src/screen/ScreenEntry.vue +52 -0
- package/templates/screen-auth/src/screen/components/ScreenLoginForm.vue +44 -0
- package/templates/screen-auth/src/services/session.ts +61 -0
- package/templates/screen-auth/tests/session.test.ts.template +54 -0
- package/templates/screen-auth-http/src/services/auth-adapter.ts +14 -0
- package/templates/screen-auth-http/tests/auth-adapter.test.ts.template +17 -0
- package/templates/screen-auth-local-demo/src/services/auth-adapter.ts +15 -0
- package/templates/screen-auth-local-demo/tests/auth-adapter.test.ts.template +18 -0
- package/templates/screen-data/src/screen/ScreenView.vue +69 -0
- package/templates/screen-data/src/services/metrics-types.ts +4 -0
- package/templates/screen-data-http/src/services/metrics.ts +20 -0
- package/templates/screen-data-http/src/services/request.ts +3 -0
- package/templates/screen-data-http/tests/metrics.test.ts.template +21 -0
- package/templates/screen-data-local/src/services/metrics.ts +11 -0
- package/templates/screen-data-local/tests/metrics.test.ts.template +9 -0
- package/templates/screen-http/API-CONTRACT.md +20 -0
- package/templates/screen-http/src/services/http.ts +17 -0
- package/templates/screen-request-auth/src/services/request.ts +15 -0
- package/templates/screen-router/src/App.vue +7 -0
- package/templates/screen-router/src/main.ts +13 -0
- package/templates/screen-router/src/router.ts +7 -0
- package/templates/screen-router/tests/app.test.ts.template +20 -0
- package/templates/screen-viewport/src/screen/ScreenViewport.vue +30 -0
- package/templates/screen-visualization-charts/src/screen/components/ScreenVisualization.vue +22 -0
- package/templates/screen-visualization-cockpit/src/screen/components/ScreenVisualization.vue +33 -0
- package/templates/screen-visualization-cockpit/src/screen/components/ScreenWidget.vue +10 -0
- package/templates/screen-visualization-datav/src/screen/components/ScreenVisualization.vue +11 -0
- package/templates/vben-compatible/MIGRATION.md +2 -0
- package/templates/vben-compatible/src/{views/migration → modules/vben-migration}/VbenFormView.vue +2 -1
- package/templates/vben-compatible/src/{views/migration → modules/vben-migration}/VbenUsersView.vue +3 -2
- package/templates/vben-compatible/src/modules/vben-migration/components/VbenFormExample.vue +64 -0
- package/templates/vben-compatible/src/{components/migration → modules/vben-migration/components}/VbenUsers.vue +73 -64
- package/templates/vben-compatible/src/modules/vben-migration/local.ts +68 -0
- package/templates/vben-compatible/src/modules/vben-migration/module.ts +42 -0
- package/templates/vue/index.html +12 -0
- package/templates/vue/src/main.ts +5 -0
- package/templates/vue/src/styles.css +19 -0
- package/templates/vue/tests/app.test.ts.template +10 -0
- package/templates/vue/vite.config.ts +9 -0
- package/templates/vue/vitest.config.ts +4 -0
- package/templates/base/eslint.config.mjs +0 -8
- package/templates/base/src/components/app/AppHeaderActions.vue +0 -34
- package/templates/base/src/router/index.ts +0 -86
- package/templates/base/src/router/views.ts +0 -16
- package/templates/base/src/services/contracts.ts +0 -29
- package/templates/base/src/services/session-runtime.ts +0 -137
- package/templates/base/src/views/error/ForbiddenView.vue +0 -25
- package/templates/base/vitest.config.ts +0 -3
- package/templates/features/examples/src/modules/examples.ts +0 -10
- package/templates/features/examples/src/views/examples/CrudExampleView.vue +0 -30
- package/templates/features/system/src/business/system/entities.ts +0 -93
- package/templates/features/system/src/modules/system.ts +0 -28
- package/templates/features/system/src/views/system/SystemEntityView.vue +0 -85
- package/templates/modes/http/src/services/data-source.ts +0 -120
- package/templates/modes/http/src/services/http-adapter.ts +0 -124
- package/templates/modes/local/src/services/data-source.ts +0 -176
- package/templates/vben-compatible/src/components/migration/VbenFormExample.vue +0 -34
- package/templates/vben-compatible/src/modules/vben.ts +0 -17
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# create-lumal-admin
|
|
2
2
|
|
|
3
|
+
## 0.0.6-beta (2026-10-25)
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 使用 Clack 键盘向导、功能注册表和创建前摘要确认,保留参数与非交互调用。
|
|
8
|
+
- 按 `app/modules/shared` 组织生成源码;系统管理七页独立实现,开发示例和迁移示例独立分组。
|
|
9
|
+
- 增加模块级强类型服务、角色授权、机构和菜单树、字典缓存、配置表单、工作台和个人中心。
|
|
10
|
+
- 加固远程菜单、外链、iframe 与权限刷新,保留 Local/HTTP 的失败传播和会话隔离。
|
|
11
|
+
- 增加真实 PTY、可选模块组合、生产浏览器业务测试及可复现体积比较。
|
|
12
|
+
- 新增 create-lumal binary 和 Admin/Screen/Blank 项目类型,不发布另一个未经验证的 create-lumal npm 包。
|
|
13
|
+
- Screen 的认证、数据、路由、Charts/DataV/Cockpit 和视口适配按需生成;Blank 默认仅依赖 Vue。
|
|
14
|
+
- 统一 ESLint/Prettier/EditorConfig、测试与 check、分层 AI 开发规范,生成依赖精确同步为 0.0.6-beta。
|
|
15
|
+
|
|
3
16
|
## 0.0.5-beta (2026-10-20)
|
|
4
17
|
|
|
5
18
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -1,26 +1,52 @@
|
|
|
1
1
|
# create-lumal-admin
|
|
2
2
|
|
|
3
|
-
`create-lumal-admin`
|
|
3
|
+
`create-lumal-admin` 保留轻量后台入口,同时提供通用 `create-lumal` 二进制,可生成 Admin、Screen 或 Blank。
|
|
4
|
+
本文面向 `0.0.6-beta`,实际版本可用性以 registry 为准;发布核验前使用本包候选 tarball。
|
|
5
|
+
通用 binary 由本包分发,没有新增独立 `create-lumal` npm 包,不能把 `pnpm create lumal` 当成已发布命令。
|
|
6
|
+
|
|
7
|
+
## 项目类型与可选能力
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm --package=create-lumal-admin@0.0.6-beta dlx create-lumal my-blank --template blank --no-interactive
|
|
11
|
+
pnpm --package=create-lumal-admin@0.0.6-beta dlx create-lumal my-screen --template screen --no-interactive
|
|
12
|
+
pnpm --package=create-lumal-admin@0.0.6-beta dlx create-lumal my-api-screen --template screen --auth http --data http --router-mode history --no-interactive
|
|
13
|
+
pnpm --package=create-lumal-admin@0.0.6-beta dlx create-lumal my-datav --template screen --visualization datav --viewport contain --no-interactive
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Blank 只安装 Vue 运行时。Screen 默认没有 Router、认证、API、Admin 或可视化依赖,
|
|
17
|
+
`--auth none|local-demo|http`、`--data none|local|http`、`--router-mode none|hash|history`
|
|
18
|
+
分别控制认证、业务数据和路由;HTTP 认证本身需要网络,不受业务数据模式影响。
|
|
19
|
+
`--visualization none|charts|datav|cockpit` 只加入所选可视化,Cockpit 使用 runtime/external,
|
|
20
|
+
不加载 Designer;DataV 数字/边框不安装 ECharts。
|
|
21
|
+
|
|
22
|
+
`--viewport disabled|responsive|contain|width|vw` 默认 responsive,无额外视口包。
|
|
23
|
+
contain 按设计宽高完整等比缩放,width 可能纵向滚动,vw 提供实际容器单位、不全局转换CSS。
|
|
24
|
+
历史实验参数 scale 是 contain 别名。设计尺寸在生成的 ScreenViewport 中显式配置,
|
|
25
|
+
登录栏独立占位,不能把整屏高度误当内容高度。详见仓库 `docs/screen-viewport-guide.md`。
|
|
26
|
+
所有项目生成相同语义的 lint、format:check、typecheck、test、build 和 check。
|
|
4
27
|
|
|
5
28
|
## 使用
|
|
6
29
|
|
|
7
|
-
环境要求:Node.js `>=22.12.0`、pnpm `10.33.0`。以下命令面向 `0.0.
|
|
30
|
+
环境要求:Node.js `>=22.12.0`、pnpm `10.33.0`。以下命令面向 `0.0.6-beta`,
|
|
8
31
|
显式指定版本,不依赖 npm 的 `latest`。源码开发时以真实 tarball 验证独立消费者,
|
|
9
32
|
不使用旧版 CLI 代替新版模板能力。
|
|
10
33
|
在线文档:https://lumal.cuteyuchen.top/packages/create-lumal-admin。
|
|
11
34
|
|
|
12
35
|
```bash
|
|
13
|
-
pnpm create lumal-admin@0.0.
|
|
14
|
-
pnpm create lumal-admin@0.0.
|
|
36
|
+
pnpm create lumal-admin@0.0.6-beta my-admin
|
|
37
|
+
pnpm create lumal-admin@0.0.6-beta my-admin-http --api-mode http
|
|
15
38
|
```
|
|
16
39
|
|
|
17
|
-
|
|
40
|
+
本版模块化向导不会覆盖历史发布版本,不能用旧 CLI 代替本地构建或候选 tarball 验收。
|
|
41
|
+
|
|
42
|
+
在 TTY 中依次选择目录、npm 名称、预设、数据源、路由和业务模块。单选使用上下方向键和
|
|
43
|
+
Enter,多选使用 Space,最后展示摘要并确认,确认前不写文件。Ctrl+C / Escape 取消不残留文件。默认
|
|
18
44
|
`standard / local / hash`。CI、非 TTY 或 `--no-interactive` 均使用确定性默认值,不等待输入。
|
|
19
45
|
|
|
20
46
|
```bash
|
|
21
|
-
pnpm create lumal-admin@0.0.
|
|
22
|
-
pnpm create lumal-admin@0.0.
|
|
23
|
-
pnpm create lumal-admin@0.0.
|
|
47
|
+
pnpm create lumal-admin@0.0.6-beta my-admin --preset standard --api-mode http --router-mode history --no-interactive
|
|
48
|
+
pnpm create lumal-admin@0.0.6-beta my-admin-v5 --preset vben-compatible
|
|
49
|
+
pnpm create lumal-admin@0.0.6-beta my-minimal --preset minimal
|
|
24
50
|
```
|
|
25
51
|
|
|
26
52
|
| 参数 | 取值 |
|
|
@@ -45,7 +71,7 @@ pnpm build
|
|
|
45
71
|
pnpm preview
|
|
46
72
|
```
|
|
47
73
|
|
|
48
|
-
## 生成内容
|
|
74
|
+
## Admin 生成内容
|
|
49
75
|
|
|
50
76
|
- Vue 3 + TypeScript + Vite。
|
|
51
77
|
- Element Plus 作为 UI 基础。
|
|
@@ -57,6 +83,9 @@ pnpm preview
|
|
|
57
83
|
- 主题切换、布局与标签偏好持久化、全局设置抽屉。
|
|
58
84
|
- 统一应用服务、真实 HTTP 认证与显式后端 adapter。
|
|
59
85
|
- Element Plus、Vue 和 Lumal 公共能力的明确 vendor 分包配置。
|
|
86
|
+
- `src/app` 基础设施、`modules` 独立业务、`shared` 共享能力;每个 module.ts 注册菜单、懒加载器与真实权限。
|
|
87
|
+
- 系统管理父路由及七个独立页面;用户批量/角色分配、独立授权树、菜单和机构树、字典关联、配置表单。
|
|
88
|
+
- standard 工作台和个人中心;examples 与 vben-migration 各有独立目录和父菜单。
|
|
60
89
|
|
|
61
90
|
脚手架生成的项目只通过 `@lumal/core`、`@lumal/icons`、`@lumal/icons-vue` 等公开包入口消费能力,不依赖 monorepo 内部源码路径。
|
|
62
91
|
|
|
@@ -91,7 +120,7 @@ History 部署需要服务器回退 `index.html`,不应把 API 请求回退到
|
|
|
91
120
|
## 维护与验收
|
|
92
121
|
|
|
93
122
|
`src/cli.ts` 负责参数和交互,`create.ts` 负责安全写入,`templates.ts` 组合
|
|
94
|
-
`templates/base`、`modes`、`features` 和 `vben-compatible` 真实资源。
|
|
123
|
+
`templates/base`、`modes`、`features`、`presets/standard` 和 `vben-compatible` 真实资源。
|
|
95
124
|
资源随 npm tarball 发布,不依赖工作区源码。
|
|
96
125
|
|
|
97
126
|
仓库运行 `pnpm build` 后执行 `pnpm test:create-consumer`:真实 tarball CLI、
|
package/dist/cli.d.ts
CHANGED
|
@@ -3,12 +3,18 @@ export declare function parseCliArgs(args: string[]): {
|
|
|
3
3
|
target: string;
|
|
4
4
|
name: string | undefined;
|
|
5
5
|
apiMode: "http" | "local" | undefined;
|
|
6
|
+
template: "admin" | "blank" | "screen" | undefined;
|
|
7
|
+
auth: "http" | "none" | "local-demo" | undefined;
|
|
8
|
+
data: "http" | "local" | "none" | undefined;
|
|
9
|
+
visualization: "none" | "charts" | "datav" | "cockpit" | undefined;
|
|
10
|
+
viewport: "disabled" | "responsive" | "width" | "contain" | "scale" | "vw" | undefined;
|
|
6
11
|
preset: "minimal" | "standard" | "vben-compatible" | undefined;
|
|
7
|
-
routerMode: "hash" | "history" | undefined;
|
|
8
|
-
features: ("
|
|
12
|
+
routerMode: "hash" | "history" | "none" | undefined;
|
|
13
|
+
features: import("./types.js").AdminFeature[] | undefined;
|
|
9
14
|
help: boolean | undefined;
|
|
10
15
|
version: boolean | undefined;
|
|
11
16
|
interactive: boolean;
|
|
12
17
|
};
|
|
13
|
-
export declare function main(args?: string[]): Promise<void>;
|
|
18
|
+
export declare function main(args?: string[], unified?: boolean): Promise<void>;
|
|
19
|
+
export declare function canInteract(): boolean;
|
|
14
20
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAaA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;;;;;;;;;;;;;;;EA+C1C;AAqBD,wBAAsB,IAAI,CAAC,IAAI,WAAwB,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAiNvF;AAoBD,wBAAgB,WAAW,IAAI,OAAO,CAIrC"}
|
package/dist/cli.js
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
import { realpathSync } from 'node:fs';
|
|
3
3
|
import { basename, resolve } from 'node:path';
|
|
4
4
|
import process from 'node:process';
|
|
5
|
-
import {
|
|
5
|
+
import { PassThrough } from 'node:stream';
|
|
6
6
|
import { pathToFileURL } from 'node:url';
|
|
7
7
|
import { parseArgs } from 'node:util';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { cancel, confirm, intro, isCancel, multiselect, note, outro, select, spinner, text } from '@clack/prompts';
|
|
9
|
+
import { assertTargetDirectory } from './create.js';
|
|
10
|
+
import { apiModes, assertPackageName, availableFeatures, defaultFeatures, featureDefinitions, features, presets, routerModes } from './presets.js';
|
|
11
|
+
import { createLumalProject, projectRouterModes, projectTemplates, resolveProjectOptions, screenAuthModes, screenDataModes, screenViewports, screenVisualizations } from './projects.js';
|
|
10
12
|
import { getVersion } from './templates.js';
|
|
11
13
|
export function parseCliArgs(args) {
|
|
12
14
|
const { values, positionals } = parseArgs({
|
|
@@ -15,6 +17,11 @@ export function parseCliArgs(args) {
|
|
|
15
17
|
strict: true,
|
|
16
18
|
options: {
|
|
17
19
|
'api-mode': { type: 'string' },
|
|
20
|
+
'template': { type: 'string' },
|
|
21
|
+
'auth': { type: 'string' },
|
|
22
|
+
'data': { type: 'string' },
|
|
23
|
+
'visualization': { type: 'string' },
|
|
24
|
+
'viewport': { type: 'string' },
|
|
18
25
|
'features': { type: 'string' },
|
|
19
26
|
'help': { type: 'boolean', short: 'h' },
|
|
20
27
|
'name': { type: 'string' },
|
|
@@ -38,8 +45,13 @@ export function parseCliArgs(args) {
|
|
|
38
45
|
target: positionals[0],
|
|
39
46
|
name: values.name,
|
|
40
47
|
apiMode: choice('api-mode', values['api-mode'], apiModes),
|
|
48
|
+
template: choice('template', values.template, projectTemplates),
|
|
49
|
+
auth: choice('auth', values.auth, screenAuthModes),
|
|
50
|
+
data: choice('data', values.data, screenDataModes),
|
|
51
|
+
visualization: choice('visualization', values.visualization, screenVisualizations),
|
|
52
|
+
viewport: choice('viewport', values.viewport, screenViewports),
|
|
41
53
|
preset: choice('preset', values.preset, presets),
|
|
42
|
-
routerMode: choice('router-mode', values['router-mode'],
|
|
54
|
+
routerMode: choice('router-mode', values['router-mode'], projectRouterModes),
|
|
43
55
|
features: selected,
|
|
44
56
|
help: values.help,
|
|
45
57
|
version: values.version,
|
|
@@ -49,8 +61,14 @@ export function parseCliArgs(args) {
|
|
|
49
61
|
const help = `用法:pnpm create lumal-admin [目录] [选项]
|
|
50
62
|
|
|
51
63
|
--preset minimal|standard|vben-compatible 模板(默认 standard)
|
|
64
|
+
--template admin|screen|blank 项目类型(旧入口默认 admin)
|
|
52
65
|
--api-mode local|http 数据源(默认 local)
|
|
53
|
-
--router-mode hash|history
|
|
66
|
+
--router-mode none|hash|history 路由(Admin 默认 hash;Screen/Blank 默认 none)
|
|
67
|
+
Admin 仅 hash|history;Blank 仅 none
|
|
68
|
+
--auth none|local-demo|http Screen 认证(默认 none)
|
|
69
|
+
--data none|local|http Screen 业务数据(默认 none)
|
|
70
|
+
--visualization none|charts|datav|cockpit Screen 可视化(默认 none)
|
|
71
|
+
--viewport disabled|responsive|contain|width|vw Screen 适配(scale 为 contain 别名)
|
|
54
72
|
--features system,examples|none 业务模块(标准预设默认全部)
|
|
55
73
|
--name <npm包名> 项目名称(默认目录名)
|
|
56
74
|
--no-interactive 禁用交互,CI/非 TTY 自动禁用
|
|
@@ -58,8 +76,10 @@ const help = `用法:pnpm create lumal-admin [目录] [选项]
|
|
|
58
76
|
-v, --version 显示版本
|
|
59
77
|
|
|
60
78
|
非空目录拒绝覆盖;HTTP 模式必须自行配置后端。`;
|
|
61
|
-
export async function main(args = process.argv.slice(2)) {
|
|
79
|
+
export async function main(args = process.argv.slice(2), unified = false) {
|
|
62
80
|
const options = parseCliArgs(args);
|
|
81
|
+
if (!unified)
|
|
82
|
+
options.template ??= 'admin';
|
|
63
83
|
if (options.help) {
|
|
64
84
|
console.log(help);
|
|
65
85
|
return;
|
|
@@ -68,27 +88,224 @@ export async function main(args = process.argv.slice(2)) {
|
|
|
68
88
|
console.log(await getVersion());
|
|
69
89
|
return;
|
|
70
90
|
}
|
|
71
|
-
|
|
72
|
-
|
|
91
|
+
const interactive = canInteract()
|
|
92
|
+
&& options.interactive;
|
|
93
|
+
if (interactive) {
|
|
94
|
+
intro(unified ? '创建 Lumal 项目' : '创建 Lumal Admin');
|
|
95
|
+
const input = new PassThrough();
|
|
96
|
+
const previousRawMode = process.stdin.isRaw;
|
|
97
|
+
// Clack 每题关闭 readline;保持原始终端为 raw,避免 Windows 在题间启动 cooked read。
|
|
98
|
+
Object.assign(input, { isTTY: true, setRawMode: () => process.stdin.setRawMode(true) });
|
|
99
|
+
process.stdin.setRawMode(true);
|
|
100
|
+
process.stdin.pipe(input);
|
|
101
|
+
// 每一步的取消都发生在首次文件写入之前。
|
|
73
102
|
try {
|
|
74
|
-
options.target ??=
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
103
|
+
options.target ??= await answer(text({
|
|
104
|
+
input,
|
|
105
|
+
message: '项目目录',
|
|
106
|
+
placeholder: 'lumal-admin',
|
|
107
|
+
defaultValue: 'lumal-admin',
|
|
108
|
+
validate: value => validation(() => assertTargetDirectory(value?.trim() || 'lumal-admin')),
|
|
109
|
+
}));
|
|
110
|
+
await assertTargetDirectory(options.target);
|
|
111
|
+
const defaultName = basename(resolve(options.target));
|
|
112
|
+
options.name ??= await answer(text({
|
|
113
|
+
input,
|
|
114
|
+
message: 'npm 项目名称',
|
|
115
|
+
placeholder: defaultName,
|
|
116
|
+
defaultValue: defaultName,
|
|
117
|
+
validate: value => validation(() => assertPackageName(value?.trim() || defaultName)),
|
|
118
|
+
}));
|
|
119
|
+
assertPackageName(options.name);
|
|
120
|
+
options.template ??= await answer(select({
|
|
121
|
+
input,
|
|
122
|
+
message: '项目类型',
|
|
123
|
+
initialValue: 'admin',
|
|
124
|
+
options: [
|
|
125
|
+
{ value: 'admin', label: 'Admin', hint: '完整管理后台' },
|
|
126
|
+
{ value: 'screen', label: 'Screen', hint: '独立大屏,无后台布局' },
|
|
127
|
+
{ value: 'blank', label: 'Blank', hint: '仅 Vue + TypeScript + Vite' },
|
|
128
|
+
],
|
|
129
|
+
}));
|
|
130
|
+
if (options.template === 'admin') {
|
|
131
|
+
options.preset ??= await answer(select({
|
|
132
|
+
input,
|
|
133
|
+
message: '项目模板',
|
|
134
|
+
initialValue: 'standard',
|
|
135
|
+
options: [
|
|
136
|
+
{ value: 'minimal', label: 'Minimal', hint: '极简开发基座' },
|
|
137
|
+
{ value: 'standard', label: 'Standard', hint: '完整轻量后台,推荐' },
|
|
138
|
+
{ value: 'vben-compatible', label: 'Vben Compatible', hint: '支持 Vben 5 高频业务 API 迁移' },
|
|
139
|
+
],
|
|
140
|
+
}));
|
|
141
|
+
options.apiMode ??= await answer(select({
|
|
142
|
+
input,
|
|
143
|
+
message: '数据源模式',
|
|
144
|
+
initialValue: 'local',
|
|
145
|
+
options: [
|
|
146
|
+
{ value: 'local', label: 'Local Mock', hint: '开箱即用的本地开发演示数据' },
|
|
147
|
+
{ value: 'http', label: 'HTTP API', hint: '对接真实后端接口' },
|
|
148
|
+
],
|
|
149
|
+
}));
|
|
150
|
+
options.routerMode ??= await answer(select({
|
|
151
|
+
input,
|
|
152
|
+
message: '路由模式',
|
|
153
|
+
initialValue: 'hash',
|
|
154
|
+
options: [
|
|
155
|
+
{ value: 'hash', label: 'Hash', hint: '部署简单' },
|
|
156
|
+
{ value: 'history', label: 'History', hint: '服务端需配置 SPA fallback' },
|
|
157
|
+
],
|
|
158
|
+
}));
|
|
159
|
+
const available = availableFeatures(options.preset);
|
|
160
|
+
if (options.features === undefined) {
|
|
161
|
+
options.features = available.length
|
|
162
|
+
? await answer(multiselect({
|
|
163
|
+
input,
|
|
164
|
+
message: '可选功能(Space 勾选,方向键移动,Enter 确认)',
|
|
165
|
+
options: available.map(value => ({ value, ...featureDefinitions[value] })),
|
|
166
|
+
initialValues: defaultFeatures(options.preset),
|
|
167
|
+
required: false,
|
|
168
|
+
}))
|
|
169
|
+
: [];
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else if (options.template === 'screen') {
|
|
173
|
+
options.auth ??= await answer(select({
|
|
174
|
+
input,
|
|
175
|
+
message: 'Screen 认证',
|
|
176
|
+
initialValue: 'none',
|
|
177
|
+
options: [
|
|
178
|
+
{ value: 'none', label: 'None', hint: '访客访问' },
|
|
179
|
+
{ value: 'local-demo', label: 'Local Demo', hint: '仅开发演示,生产禁用' },
|
|
180
|
+
{ value: 'http', label: 'HTTP', hint: '包含登录与刷新网络请求,与业务数据独立' },
|
|
181
|
+
],
|
|
182
|
+
}));
|
|
183
|
+
options.data ??= options.apiMode ?? await answer(select({
|
|
184
|
+
input,
|
|
185
|
+
message: 'Screen 业务数据',
|
|
186
|
+
initialValue: 'none',
|
|
187
|
+
options: [
|
|
188
|
+
{ value: 'none', label: 'None', hint: '纯静态页面' },
|
|
189
|
+
{ value: 'local', label: 'Local', hint: '显式本地示例' },
|
|
190
|
+
{ value: 'http', label: 'HTTP', hint: '真实接口,失败不回退' },
|
|
191
|
+
],
|
|
192
|
+
}));
|
|
193
|
+
options.routerMode ??= await answer(select({
|
|
194
|
+
input,
|
|
195
|
+
message: 'Screen 路由',
|
|
196
|
+
initialValue: 'none',
|
|
197
|
+
options: [
|
|
198
|
+
{ value: 'none', label: 'None', hint: '真正单页,无 Router 依赖' },
|
|
199
|
+
...routerModes.map(value => ({ value, label: value === 'hash' ? 'Hash' : 'History' })),
|
|
200
|
+
],
|
|
201
|
+
}));
|
|
202
|
+
options.visualization ??= await answer(select({
|
|
203
|
+
input,
|
|
204
|
+
message: 'Screen 可视化',
|
|
205
|
+
initialValue: 'none',
|
|
206
|
+
options: [
|
|
207
|
+
{ value: 'none', label: 'None', hint: '不安装图表或编排依赖' },
|
|
208
|
+
{ value: 'charts', label: 'Charts', hint: '按需注册 ECharts 引擎' },
|
|
209
|
+
{ value: 'datav', label: 'DataV', hint: '数字与边框独立组件,无 Cockpit' },
|
|
210
|
+
{ value: 'cockpit', label: 'Cockpit', hint: '仅 runtime,复杂编排时选择' },
|
|
211
|
+
],
|
|
212
|
+
}));
|
|
213
|
+
options.viewport ??= await answer(select({
|
|
214
|
+
input,
|
|
215
|
+
message: 'Screen 适配',
|
|
216
|
+
initialValue: 'responsive',
|
|
217
|
+
options: [
|
|
218
|
+
{ value: 'responsive', label: 'Responsive', hint: '普通响应式,无额外视口包' },
|
|
219
|
+
{ value: 'contain', label: 'Contain', hint: '完整等比缩放,可能留白' },
|
|
220
|
+
{ value: 'width', label: 'Width', hint: '按宽缩放,可能纵向滚动' },
|
|
221
|
+
{ value: 'vw', label: 'Container units', hint: '局部容器尺寸变量,不全局转换 CSS' },
|
|
222
|
+
{ value: 'disabled', label: 'Disabled', hint: '不生成适配代码' },
|
|
223
|
+
],
|
|
224
|
+
}));
|
|
225
|
+
}
|
|
226
|
+
const resolved = resolveProjectOptions({ ...options, name: options.name, targetDir: options.target });
|
|
227
|
+
note([
|
|
228
|
+
`项目名称:${resolved.name}`,
|
|
229
|
+
`目标目录:${resolve(resolved.targetDir)}`,
|
|
230
|
+
`项目类型:${resolved.template}`,
|
|
231
|
+
...('preset' in resolved
|
|
232
|
+
? [
|
|
233
|
+
`模板:${resolved.preset}`,
|
|
234
|
+
`数据源:${resolved.apiMode}`,
|
|
235
|
+
`功能模块:${resolved.features.join('、') || '无'}`,
|
|
236
|
+
]
|
|
237
|
+
: [
|
|
238
|
+
`认证:${resolved.auth}${resolved.auth === 'http' ? '(包含认证网络请求)' : ''}`,
|
|
239
|
+
`业务数据:${resolved.data}`,
|
|
240
|
+
`可视化:${resolved.visualization}`,
|
|
241
|
+
`适配:${resolved.viewport}`,
|
|
242
|
+
]),
|
|
243
|
+
`路由:${resolved.routerMode}`,
|
|
244
|
+
].join('\n'), '配置摘要');
|
|
245
|
+
if (!await answer(confirm({ input, message: '确认创建项目?', active: '创建', inactive: '取消' })))
|
|
246
|
+
throw new PromptCancelled();
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
if (!(error instanceof PromptCancelled))
|
|
250
|
+
throw error;
|
|
251
|
+
cancel('已取消,未创建任何文件。');
|
|
252
|
+
return;
|
|
81
253
|
}
|
|
82
254
|
finally {
|
|
83
|
-
|
|
255
|
+
process.stdin.unpipe(input);
|
|
256
|
+
input.destroy();
|
|
257
|
+
process.stdin.setRawMode(previousRawMode);
|
|
258
|
+
process.stdin.pause();
|
|
84
259
|
}
|
|
85
260
|
}
|
|
86
261
|
const targetDir = resolve(options.target ?? 'lumal-admin');
|
|
87
|
-
const
|
|
88
|
-
|
|
262
|
+
const controller = new AbortController();
|
|
263
|
+
const abort = () => controller.abort(new Error('用户取消创建'));
|
|
264
|
+
const progress = interactive ? spinner({ onCancel: abort }) : undefined;
|
|
265
|
+
process.once('SIGINT', abort);
|
|
266
|
+
progress?.start('正在校验模板并创建文件');
|
|
267
|
+
let result;
|
|
268
|
+
try {
|
|
269
|
+
result = await createLumalProject({ ...options, name: options.name ?? basename(targetDir), targetDir, signal: controller.signal });
|
|
270
|
+
progress?.stop('项目文件创建完成');
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
progress?.error('创建失败,本次拥有的文件已执行安全回滚');
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
finally {
|
|
277
|
+
process.off('SIGINT', abort);
|
|
278
|
+
}
|
|
279
|
+
const summary = 'preset' in result
|
|
280
|
+
? `${result.preset} / ${result.apiMode} / ${result.routerMode}`
|
|
281
|
+
: `${result.template} / ${result.data} / ${result.routerMode}`;
|
|
282
|
+
console.log(`已创建 ${summary} 项目:${result.targetDir}`);
|
|
89
283
|
console.log(`下一步:\n cd ${JSON.stringify(result.targetDir)}\n pnpm install\n pnpm dev`);
|
|
90
|
-
if (result.apiMode === 'http')
|
|
284
|
+
if (('apiMode' in result && result.apiMode === 'http') || ('data' in result && (result.data === 'http' || result.auth === 'http')))
|
|
91
285
|
console.log('请先配置 .env.development 中的 VITE_API_BASE_URL,契约见 API-CONTRACT.md。');
|
|
286
|
+
if (interactive)
|
|
287
|
+
outro('创建成功');
|
|
288
|
+
}
|
|
289
|
+
class PromptCancelled extends Error {
|
|
290
|
+
}
|
|
291
|
+
async function answer(result) {
|
|
292
|
+
const value = await result;
|
|
293
|
+
if (isCancel(value))
|
|
294
|
+
throw new PromptCancelled();
|
|
295
|
+
return value;
|
|
296
|
+
}
|
|
297
|
+
async function validation(check) {
|
|
298
|
+
try {
|
|
299
|
+
await check();
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
return error instanceof Error ? error.message : String(error);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
export function canInteract() {
|
|
306
|
+
return Boolean(process.stdin.isTTY && process.stdout.isTTY
|
|
307
|
+
&& typeof process.stdin.setRawMode === 'function'
|
|
308
|
+
&& !process.env.CI && process.env.TERM !== 'dumb');
|
|
92
309
|
}
|
|
93
310
|
// npm/pnpm 的 node_modules 链接路径与模块真实路径可能不同。
|
|
94
311
|
if (process.argv[1] && import.meta.url === pathToFileURL(realpathSync(resolve(process.argv[1]))).href) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/create.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
-
import type { CreateLumalAdminProjectOptions, CreateLumalAdminProjectResult } from './types.js';
|
|
1
|
+
import type { CreateLumalAdminProjectOptions, CreateLumalAdminProjectResult, TemplateFile } from './types.js';
|
|
2
|
+
export declare function assertTargetDirectory(input: string): Promise<void>;
|
|
2
3
|
export declare function createLumalAdminProject(input: CreateLumalAdminProjectOptions): Promise<CreateLumalAdminProjectResult>;
|
|
4
|
+
/** 所有项目复用同一套目录校验、文件所有权与取消回滚。 */
|
|
5
|
+
export declare function writeProjectFiles(input: {
|
|
6
|
+
targetDir: string;
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
}, files: TemplateFile[]): Promise<{
|
|
9
|
+
targetDir: string;
|
|
10
|
+
createdFiles: string[];
|
|
11
|
+
}>;
|
|
3
12
|
//# sourceMappingURL=create.d.ts.map
|
package/dist/create.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM7G,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBxE;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,6BAA6B,CAAC,CAIxC;AAED,gCAAgC;AAChC,wBAAsB,iBAAiB,CACrC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,EAClD,KAAK,EAAE,YAAY,EAAE,GACpB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA8DxD"}
|
package/dist/create.js
CHANGED
|
@@ -2,9 +2,10 @@ import { lstat, mkdir, open, readdir, rmdir, unlink } from 'node:fs/promises';
|
|
|
2
2
|
import { dirname, join, parse, resolve } from 'node:path';
|
|
3
3
|
import { resolveOptions } from './presets.js';
|
|
4
4
|
import { composeTemplates } from './templates.js';
|
|
5
|
-
export async function
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export async function assertTargetDirectory(input) {
|
|
6
|
+
if (!input.trim() || /\p{Cc}/u.test(input))
|
|
7
|
+
throw new Error('目标目录不能为空或包含控制字符');
|
|
8
|
+
const targetDir = resolve(input);
|
|
8
9
|
if (targetDir === parse(targetDir).root)
|
|
9
10
|
throw new Error('不能在文件系统根目录创建项目');
|
|
10
11
|
const stat = await lstat(targetDir).catch((error) => {
|
|
@@ -26,8 +27,18 @@ export async function createLumalAdminProject(input) {
|
|
|
26
27
|
if (parent?.isSymbolicLink())
|
|
27
28
|
throw new Error('目标祖先目录不能包含符号链接');
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
+
}
|
|
31
|
+
export async function createLumalAdminProject(input) {
|
|
32
|
+
const options = resolveOptions(input);
|
|
30
33
|
const files = await composeTemplates(options);
|
|
34
|
+
return { ...options, ...await writeProjectFiles(options, files) };
|
|
35
|
+
}
|
|
36
|
+
/** 所有项目复用同一套目录校验、文件所有权与取消回滚。 */
|
|
37
|
+
export async function writeProjectFiles(input, files) {
|
|
38
|
+
const targetDir = resolve(input.targetDir);
|
|
39
|
+
await assertTargetDirectory(targetDir);
|
|
40
|
+
input.signal?.throwIfAborted();
|
|
41
|
+
// 先读取、校验全部发布资源,再开始写入。回滚从不递归删除目标目录。
|
|
31
42
|
const ownedFiles = [];
|
|
32
43
|
const ownedDirectories = [];
|
|
33
44
|
async function ensureDirectory(directory) {
|
|
@@ -54,6 +65,7 @@ export async function createLumalAdminProject(input) {
|
|
|
54
65
|
try {
|
|
55
66
|
await ensureDirectory(targetDir);
|
|
56
67
|
for (const file of files) {
|
|
68
|
+
input.signal?.throwIfAborted();
|
|
57
69
|
const filePath = join(targetDir, file.path);
|
|
58
70
|
await ensureDirectory(dirname(filePath));
|
|
59
71
|
const handle = await open(filePath, 'wx');
|
|
@@ -65,6 +77,7 @@ export async function createLumalAdminProject(input) {
|
|
|
65
77
|
await handle.close();
|
|
66
78
|
}
|
|
67
79
|
}
|
|
80
|
+
input.signal?.throwIfAborted();
|
|
68
81
|
}
|
|
69
82
|
catch (error) {
|
|
70
83
|
const cleanupErrors = [];
|
|
@@ -81,6 +94,6 @@ export async function createLumalAdminProject(input) {
|
|
|
81
94
|
throw new AggregateError([error, ...cleanupErrors], '创建失败,部分文件清理失败,请检查目标目录');
|
|
82
95
|
throw error;
|
|
83
96
|
}
|
|
84
|
-
return {
|
|
97
|
+
return { targetDir, createdFiles: files.map(file => file.path) };
|
|
85
98
|
}
|
|
86
99
|
//# sourceMappingURL=create.js.map
|
package/dist/create.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,MAAM,CAAC,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { createLumalAdminProject, } from './create.js';
|
|
2
|
-
export
|
|
2
|
+
export { createLumalProject } from './projects.js';
|
|
3
|
+
export type { AdminFeature, AdminPreset, ApiMode, CreateLumalAdminProjectOptions, CreateLumalAdminProjectResult, CreateLumalProjectOptions, CreateLumalProjectResult, ProjectRouterMode, ProjectTemplate, RouterMode, ScreenAuth, ScreenData, ScreenViewport, ScreenVisualization, } from './types.js';
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GACxB,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,OAAO,EACP,8BAA8B,EAC9B,6BAA6B,EAC7B,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,OAAO,EACP,8BAA8B,EAC9B,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GACxB,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA"}
|