create-lumal-admin 0.0.4-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 +25 -0
- package/README.md +98 -12
- package/dist/cli.d.ts +18 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +308 -28
- package/dist/cli.js.map +1 -1
- package/dist/create.d.ts +11 -1
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +98 -2
- 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 +41 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +58 -0
- package/dist/presets.js.map +1 -0
- 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/scaffold.d.ts +2 -11
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +2 -1602
- package/dist/scaffold.js.map +1 -1
- package/dist/templates.d.ts +7 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +91 -0
- package/dist/templates.js.map +1 -0
- package/dist/types.d.ts +64 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +13 -4
- package/templates/base/.env.example +4 -0
- package/templates/base/API-CONTRACT.md +84 -0
- package/templates/base/README.md +59 -0
- package/templates/base/index.html +12 -0
- package/templates/base/package.json +38 -0
- package/templates/base/src/App.vue +206 -0
- package/templates/base/src/app/components/AppHeaderActions.vue +46 -0
- package/templates/base/src/app/components/AppSettingsDrawer.vue +37 -0
- 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/app/services/access.ts +2 -0
- 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/app/services/preferences.ts +41 -0
- package/templates/base/src/app/services/session-runtime.ts +186 -0
- package/templates/base/src/app/services/session.ts +14 -0
- package/templates/base/src/app/stored-menus.ts +72 -0
- package/templates/base/src/app/views/SafeIframeView.vue +34 -0
- package/templates/base/src/app/views/auth/LoginView.vue +75 -0
- package/templates/base/src/app/views/error/ForbiddenView.vue +20 -0
- package/templates/base/src/app/views/error/NotFoundView.vue +16 -0
- package/templates/base/src/main.ts +40 -0
- package/templates/base/src/modules/business/README.md +33 -0
- package/templates/base/src/modules/dashboard/DashboardView.vue +27 -0
- 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 +173 -0
- package/templates/base/tests/menu-policy.test.ts.template +89 -0
- package/templates/base/tests/session.test.ts.template +45 -0
- package/templates/base/vite.config.ts +54 -0
- 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/common/_gitignore +7 -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/common/tsconfig.json +19 -0
- package/templates/common/vitest.config.ts +3 -0
- package/templates/features/examples/src/modules/examples/CrudExampleView.vue +51 -0
- package/templates/features/examples/src/modules/examples/FormExampleView.vue +32 -0
- 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 +218 -0
- 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 +132 -0
- 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 +30 -0
- package/templates/vben-compatible/src/modules/vben-migration/VbenFormView.vue +11 -0
- package/templates/vben-compatible/src/modules/vben-migration/VbenUsersView.vue +12 -0
- package/templates/vben-compatible/src/modules/vben-migration/components/VbenFormExample.vue +64 -0
- package/templates/vben-compatible/src/modules/vben-migration/components/VbenUsers.vue +144 -0
- 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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
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
|
+
|
|
16
|
+
## 0.0.5-beta (2026-10-20)
|
|
17
|
+
|
|
18
|
+
### Minor Changes
|
|
19
|
+
|
|
20
|
+
- 拆分真实模板资源与 CLI/创建器,支持 minimal、standard、vben-compatible,
|
|
21
|
+
交互及非 TTY、Local/HTTP、Hash/History、可选业务层和安全失败回滚。
|
|
22
|
+
- 生成真实 HTTP 登录、刷新、用户权限菜单、退出及 CRUD 服务,防止旧会话响应回填。
|
|
23
|
+
- standard 增加基础管理模块、Schema/CRUD、标签缓存和偏好;兼容模板增加 V5 迁移页面。
|
|
24
|
+
- 显式加载 Element Plus 深色变量,以真实背景色断言保护主题切换,不只检查状态 class。
|
|
25
|
+
- 通过真实 tarball 的十二种独立消费者组合验证安装、类型、测试、Lint、生产构建与 Chromium。
|
|
26
|
+
- 生成项目依赖精确同步为 0.0.5-beta,不引用 Monorepo 私有源码。
|
|
27
|
+
|
|
3
28
|
## 0.0.4-beta (2026-10-20)
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,17 +1,62 @@
|
|
|
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
|
|
30
|
+
环境要求:Node.js `>=22.12.0`、pnpm `10.33.0`。以下命令面向 `0.0.6-beta`,
|
|
31
|
+
显式指定版本,不依赖 npm 的 `latest`。源码开发时以真实 tarball 验证独立消费者,
|
|
32
|
+
不使用旧版 CLI 代替新版模板能力。
|
|
33
|
+
在线文档:https://lumal.cuteyuchen.top/packages/create-lumal-admin。
|
|
8
34
|
|
|
9
35
|
```bash
|
|
10
|
-
pnpm create lumal-admin@0.0.
|
|
11
|
-
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
|
|
12
38
|
```
|
|
13
39
|
|
|
14
|
-
|
|
40
|
+
本版模块化向导不会覆盖历史发布版本,不能用旧 CLI 代替本地构建或候选 tarball 验收。
|
|
41
|
+
|
|
42
|
+
在 TTY 中依次选择目录、npm 名称、预设、数据源、路由和业务模块。单选使用上下方向键和
|
|
43
|
+
Enter,多选使用 Space,最后展示摘要并确认,确认前不写文件。Ctrl+C / Escape 取消不残留文件。默认
|
|
44
|
+
`standard / local / hash`。CI、非 TTY 或 `--no-interactive` 均使用确定性默认值,不等待输入。
|
|
45
|
+
|
|
46
|
+
```bash
|
|
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
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
| 参数 | 取值 |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| `--preset` | `minimal`、`standard`、`vben-compatible` |
|
|
55
|
+
| `--api-mode` | `local`、`http` |
|
|
56
|
+
| `--router-mode` | `hash`、`history` |
|
|
57
|
+
| `--features` | `system,examples`、单个模块或 `none`;minimal 不接受业务模块 |
|
|
58
|
+
| `--name` | 合法 npm 包名,可与目录不同 |
|
|
59
|
+
| `--help` / `--version` | 帮助 / tarball 自身版本 |
|
|
15
60
|
|
|
16
61
|
生成后执行:
|
|
17
62
|
|
|
@@ -19,25 +64,66 @@ pnpm create lumal-admin@0.0.4-beta my-admin-http --api-mode http
|
|
|
19
64
|
cd my-admin
|
|
20
65
|
pnpm install
|
|
21
66
|
pnpm dev
|
|
67
|
+
pnpm test
|
|
68
|
+
pnpm lint
|
|
69
|
+
pnpm typecheck
|
|
70
|
+
pnpm build
|
|
71
|
+
pnpm preview
|
|
22
72
|
```
|
|
23
73
|
|
|
24
|
-
## 生成内容
|
|
74
|
+
## Admin 生成内容
|
|
25
75
|
|
|
26
76
|
- Vue 3 + TypeScript + Vite。
|
|
27
77
|
- Element Plus 作为 UI 基础。
|
|
28
78
|
- `@lumal/core/theme-chalk/index.scss`、`@lumal/core/style.css` 和 SCSS 样式入口。
|
|
29
|
-
- `@lumal/core/minimal`
|
|
79
|
+
- `@lumal/core/minimal` 启动、Router 与权限;Element Plus 组件局部导入,不注册全量 UI 插件。
|
|
30
80
|
- `LumalLayout` 后台布局壳和 `LumalRouterView` 路由出口,采用路由驱动标签模式:固定首页页签、`routeTabResolver` 动态追加、会话级持久化、按标签版本刷新、`cacheKeys` 联动关闭与缓存剔除。
|
|
31
81
|
- 登录页、会话状态、权限菜单和路由守卫。
|
|
32
|
-
-
|
|
82
|
+
- 工作台、403 与独立 404 页面。
|
|
33
83
|
- 主题切换、布局与标签偏好持久化、全局设置抽屉。
|
|
34
|
-
-
|
|
84
|
+
- 统一应用服务、真实 HTTP 认证与显式后端 adapter。
|
|
35
85
|
- Element Plus、Vue 和 Lumal 公共能力的明确 vendor 分包配置。
|
|
86
|
+
- `src/app` 基础设施、`modules` 独立业务、`shared` 共享能力;每个 module.ts 注册菜单、懒加载器与真实权限。
|
|
87
|
+
- 系统管理父路由及七个独立页面;用户批量/角色分配、独立授权树、菜单和机构树、字典关联、配置表单。
|
|
88
|
+
- standard 工作台和个人中心;examples 与 vben-migration 各有独立目录和父菜单。
|
|
36
89
|
|
|
37
90
|
脚手架生成的项目只通过 `@lumal/core`、`@lumal/icons`、`@lumal/icons-vue` 等公开包入口消费能力,不依赖 monorepo 内部源码路径。
|
|
38
91
|
|
|
39
|
-
|
|
92
|
+
| 能力 | minimal | standard | vben-compatible |
|
|
93
|
+
| --- | --- | --- | --- |
|
|
94
|
+
| 启动、布局、认证、权限、主题、请求、403/404 | 有 | 有 | 有 |
|
|
95
|
+
| 动态菜单、标签与页面缓存、系统偏好 | 有 | 有 | 有 |
|
|
96
|
+
| 用户、角色授权、菜单、机构、字典类型/项、配置 | 无 | system 可选层,默认有 | 同 standard |
|
|
97
|
+
| 原生 Schema Form / CRUD 示例 | 无 | examples 可选层,默认有 | 同 standard |
|
|
98
|
+
| Vben 5.7.0 Form / Grid / 权限迁移页面 | 无 | 无 | 有 |
|
|
99
|
+
| 图表、DataV、Cockpit、VXE、富文本、i18n | 不默认安装 | 不默认安装 | 不默认安装 |
|
|
100
|
+
|
|
101
|
+
三个基础 Lumal 包及可选兼容包均精确同步为脚手架自身版本。兼容预设只增加
|
|
102
|
+
`@lumal/vben-compat`,不安装 Vben/VXE/Zod 运行时。根及 `/legacy` 的旧契约不变;
|
|
103
|
+
Vben 5 页面显式导入 `/v5`,边界见生成项目 `MIGRATION.md`。
|
|
104
|
+
|
|
105
|
+
## 数据源与安全
|
|
106
|
+
|
|
107
|
+
Local 是开发演示,账号 `admin/guest`,密码 `lumal123`,Token 每次随机生成。
|
|
108
|
+
生产默认禁止本地演示认证;只允许演示站点显式设置 `VITE_ENABLE_LOCAL_DEMO=true`。
|
|
109
|
+
HTTP 模式不包含演示账号或固定 Token,未配置 `VITE_API_BASE_URL` 立即失败,不回退 Local。
|
|
110
|
+
|
|
111
|
+
HTTP 的登录、刷新、当前用户、角色权限、菜单、退出和 CRUD 均真实请求后端。
|
|
112
|
+
接口及 `lumal-mock` 接入说明位于生成项目 `API-CONTRACT.md`。权限状态、动态路由、
|
|
113
|
+
请求缓存、标签和页面缓存随会话清理;旧请求不能覆盖新登录身份。
|
|
114
|
+
公司包装和字段转换只写入应用 `http-adapter.ts`,不进入 Core。
|
|
115
|
+
|
|
116
|
+
不覆盖非空目录,不提供隐式 force;拒绝文件和符号链接目标。写入失败仅清理本次拥有
|
|
117
|
+
的文件与仍为空的目录,不递归删除目标。项目测试、类型、环境示例和部署说明一并生成;
|
|
118
|
+
History 部署需要服务器回退 `index.html`,不应把 API 请求回退到 HTML。
|
|
119
|
+
|
|
120
|
+
## 维护与验收
|
|
40
121
|
|
|
41
|
-
|
|
122
|
+
`src/cli.ts` 负责参数和交互,`create.ts` 负责安全写入,`templates.ts` 组合
|
|
123
|
+
`templates/base`、`modes`、`features`、`presets/standard` 和 `vben-compatible` 真实资源。
|
|
124
|
+
资源随 npm tarball 发布,不依赖工作区源码。
|
|
42
125
|
|
|
43
|
-
|
|
126
|
+
仓库运行 `pnpm build` 后执行 `pnpm test:create-consumer`:真实 tarball CLI、
|
|
127
|
+
无 UI 的 minimal/request 消费者、3 预设 × 2 数据源 × 2 路由独立安装/类型/测试/
|
|
128
|
+
Lint/生产构建及 Chromium 交互;另测可选模块体积。结果位于
|
|
129
|
+
`output/release/scaffold-report.json`,截图位于 `output/playwright/scaffold`。
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export {
|
|
2
|
+
export declare function parseCliArgs(args: string[]): {
|
|
3
|
+
target: string;
|
|
4
|
+
name: string | undefined;
|
|
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;
|
|
11
|
+
preset: "minimal" | "standard" | "vben-compatible" | undefined;
|
|
12
|
+
routerMode: "hash" | "history" | "none" | undefined;
|
|
13
|
+
features: import("./types.js").AdminFeature[] | undefined;
|
|
14
|
+
help: boolean | undefined;
|
|
15
|
+
version: boolean | undefined;
|
|
16
|
+
interactive: boolean;
|
|
17
|
+
};
|
|
18
|
+
export declare function main(args?: string[], unified?: boolean): Promise<void>;
|
|
19
|
+
export declare function canInteract(): boolean;
|
|
3
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
|
@@ -1,37 +1,317 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { realpathSync } from 'node:fs';
|
|
2
3
|
import { basename, resolve } from 'node:path';
|
|
3
4
|
import process from 'node:process';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
import { PassThrough } from 'node:stream';
|
|
6
|
+
import { pathToFileURL } from 'node:url';
|
|
7
|
+
import { parseArgs } from 'node:util';
|
|
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';
|
|
12
|
+
import { getVersion } from './templates.js';
|
|
13
|
+
export function parseCliArgs(args) {
|
|
14
|
+
const { values, positionals } = parseArgs({
|
|
15
|
+
args,
|
|
16
|
+
allowPositionals: true,
|
|
17
|
+
strict: true,
|
|
18
|
+
options: {
|
|
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' },
|
|
25
|
+
'features': { type: 'string' },
|
|
26
|
+
'help': { type: 'boolean', short: 'h' },
|
|
27
|
+
'name': { type: 'string' },
|
|
28
|
+
'no-interactive': { type: 'boolean' },
|
|
29
|
+
'preset': { type: 'string' },
|
|
30
|
+
'router-mode': { type: 'string' },
|
|
31
|
+
'version': { type: 'boolean', short: 'v' },
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
if (positionals.length > 1)
|
|
35
|
+
throw new Error('只能指定一个目标目录');
|
|
36
|
+
function choice(name, value, choices) {
|
|
37
|
+
if (value !== undefined && !choices.includes(value))
|
|
38
|
+
throw new Error(`--${name} 仅支持 ${choices.join('、')}`);
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
const selected = values.features === undefined
|
|
42
|
+
? undefined
|
|
43
|
+
: values.features === 'none' ? [] : values.features.split(',').map(value => choice('features', value, features));
|
|
44
|
+
return {
|
|
45
|
+
target: positionals[0],
|
|
46
|
+
name: values.name,
|
|
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),
|
|
53
|
+
preset: choice('preset', values.preset, presets),
|
|
54
|
+
routerMode: choice('router-mode', values['router-mode'], projectRouterModes),
|
|
55
|
+
features: selected,
|
|
56
|
+
help: values.help,
|
|
57
|
+
version: values.version,
|
|
58
|
+
interactive: !values['no-interactive'],
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const help = `用法:pnpm create lumal-admin [目录] [选项]
|
|
62
|
+
|
|
63
|
+
--preset minimal|standard|vben-compatible 模板(默认 standard)
|
|
64
|
+
--template admin|screen|blank 项目类型(旧入口默认 admin)
|
|
65
|
+
--api-mode local|http 数据源(默认 local)
|
|
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 别名)
|
|
72
|
+
--features system,examples|none 业务模块(标准预设默认全部)
|
|
73
|
+
--name <npm包名> 项目名称(默认目录名)
|
|
74
|
+
--no-interactive 禁用交互,CI/非 TTY 自动禁用
|
|
75
|
+
-h, --help 显示帮助
|
|
76
|
+
-v, --version 显示版本
|
|
77
|
+
|
|
78
|
+
非空目录拒绝覆盖;HTTP 模式必须自行配置后端。`;
|
|
79
|
+
export async function main(args = process.argv.slice(2), unified = false) {
|
|
80
|
+
const options = parseCliArgs(args);
|
|
81
|
+
if (!unified)
|
|
82
|
+
options.template ??= 'admin';
|
|
83
|
+
if (options.help) {
|
|
84
|
+
console.log(help);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (options.version) {
|
|
88
|
+
console.log(await getVersion());
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
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
|
+
// 每一步的取消都发生在首次文件写入之前。
|
|
102
|
+
try {
|
|
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;
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
process.stdin.unpipe(input);
|
|
256
|
+
input.destroy();
|
|
257
|
+
process.stdin.setRawMode(previousRawMode);
|
|
258
|
+
process.stdin.pause();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const targetDir = resolve(options.target ?? 'lumal-admin');
|
|
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}`);
|
|
283
|
+
console.log(`下一步:\n cd ${JSON.stringify(result.targetDir)}\n pnpm install\n pnpm dev`);
|
|
284
|
+
if (('apiMode' in result && result.apiMode === 'http') || ('data' in result && (result.data === 'http' || result.auth === 'http')))
|
|
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();
|
|
12
295
|
return value;
|
|
13
296
|
}
|
|
14
|
-
function
|
|
15
|
-
|
|
16
|
-
|
|
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');
|
|
17
309
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
name: basename(targetDir),
|
|
24
|
-
targetDir,
|
|
310
|
+
// npm/pnpm 的 node_modules 链接路径与模块真实路径可能不同。
|
|
311
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(realpathSync(resolve(process.argv[1]))).href) {
|
|
312
|
+
main().catch((error) => {
|
|
313
|
+
console.error(`创建失败:${error instanceof Error ? error.message : String(error)}`);
|
|
314
|
+
process.exitCode = 1;
|
|
25
315
|
});
|
|
26
|
-
console.log(`已创建 Lumal Admin 项目:${result.targetDir}`);
|
|
27
|
-
console.log('下一步:');
|
|
28
|
-
console.log(` cd ${result.targetDir}`);
|
|
29
|
-
console.log(' pnpm install');
|
|
30
|
-
console.log(' pnpm dev');
|
|
31
316
|
}
|
|
32
|
-
main().catch((error) => {
|
|
33
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
34
|
-
console.error(`创建失败:${message}`);
|
|
35
|
-
process.exit(1);
|
|
36
|
-
});
|
|
37
317
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD,kDAAkD;AAClD,SAAS,cAAc,CAAC,IAAc;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACvF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,OAAO,CAAA;IACzF,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO;QACvC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAChD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAA;IACxH,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,IAAI,aAAa,CAAC,CAAA;AACxD,CAAC;AAED,kDAAkD;AAClD,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC;QAC3C,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC;QACzB,SAAS;KACV,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IACrD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IACvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC7B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAC3B,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtE,OAAO,CAAC,KAAK,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAA;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/create.d.ts
CHANGED
|
@@ -1,2 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import type { CreateLumalAdminProjectOptions, CreateLumalAdminProjectResult, TemplateFile } from './types.js';
|
|
2
|
+
export declare function assertTargetDirectory(input: string): Promise<void>;
|
|
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
|
+
}>;
|
|
2
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":"
|
|
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"}
|