cabloy 5.1.59 → 5.1.60
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/.claude/skills/cabloy-contract-loop/SKILL.md +16 -0
- package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +26 -0
- package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +144 -0
- package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +18 -0
- package/.claude/skills/cabloy-resource-field-update/SKILL.md +267 -0
- package/.claude/skills/cabloy-resource-field-update/evals/evals.json +53 -0
- package/.claude/skills/cabloy-resource-field-update/references/custom-renderer-demo-checklist.md +102 -0
- package/.claude/skills/cabloy-resource-field-update/references/field-update-decision-tree.md +120 -0
- package/.claude/skills/cabloy-resource-field-update/references/follow-up-checklist.md +80 -0
- package/.claude/skills/cabloy-resource-field-update/references/verification-checklist.md +97 -0
- package/.github/workflows/docs-pages.yml +2 -0
- package/.github/workflows/vona-cov-pg.yml +2 -0
- package/.github/workflows/vona-test-crud.yml +4 -2
- package/.github/workflows/vona-test-mysql.yml +2 -0
- package/.github/workflows/vona-test-pg.yml +2 -0
- package/.github/workflows/vona-test-sqlite3.yml +2 -0
- package/.github/workflows/vona-tsc.yml +2 -0
- package/.github/workflows/zova-ui.yml +2 -0
- package/.gitignore +0 -4
- package/CHANGELOG.md +30 -0
- package/CLAUDE.md +2 -0
- package/README.md +15 -0
- package/cabloy-docs/.vitepress/config.mjs +43 -0
- package/cabloy-docs/ai/class-placement-rule.md +2 -0
- package/cabloy-docs/ai/cli-to-skill-map.md +7 -0
- package/cabloy-docs/ai/future-skill-roadmap.md +17 -2
- package/cabloy-docs/backend/bean-scene-authoring.md +350 -0
- package/cabloy-docs/backend/cli.md +26 -1
- package/cabloy-docs/backend/foundation.md +28 -3
- package/cabloy-docs/backend/introduction.md +8 -0
- package/cabloy-docs/backend/service-guide.md +2 -0
- package/cabloy-docs/backend/websocket-call-flow.md +435 -0
- package/cabloy-docs/backend/websocket-guide.md +455 -0
- package/cabloy-docs/backend/websocket-protocol-guide.md +381 -0
- package/cabloy-docs/backend/websocket-usage-guide.md +356 -0
- package/cabloy-docs/frontend/bean-scene-authoring.md +372 -0
- package/cabloy-docs/frontend/behavior-guide.md +449 -0
- package/cabloy-docs/frontend/cli.md +12 -0
- package/cabloy-docs/frontend/introduction.md +5 -0
- package/cabloy-docs/frontend/ioc-and-beans.md +10 -9
- package/cabloy-docs/frontend/router-tabs-admin-web-comparison.md +206 -0
- package/cabloy-docs/frontend/router-tabs-introduction.md +106 -0
- package/cabloy-docs/frontend/router-tabs-mechanism.md +469 -0
- package/cabloy-docs/frontend/router-tabs-overview.md +227 -0
- package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +343 -0
- package/cabloy-docs/frontend/ssr-architecture-overview.md +211 -0
- package/cabloy-docs/frontend/ssr-build-deploy-guide.md +308 -0
- package/cabloy-docs/frontend/ssr-review-checklist.md +184 -0
- package/cabloy-docs/frontend/ssr-troubleshooting-guide.md +301 -0
- package/cabloy-docs/fullstack/framework-performance.md +3 -3
- package/cabloy-docs/fullstack/introduction.md +29 -0
- package/cabloy-docs/fullstack/quickstart.md +7 -1
- package/cabloy-docs/fullstack/tutorial-1-first-module.md +111 -0
- package/cabloy-docs/fullstack/tutorial-2-first-crud.md +122 -0
- package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +131 -0
- package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +119 -0
- package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +144 -0
- package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +168 -0
- package/cabloy-docs/fullstack/tutorials-overview.md +179 -0
- package/cabloy-docs/index.md +4 -3
- package/cabloy-docs/reference/bean-scene-boilerplates.md +73 -0
- package/cabloy-docs/reference/cli-reference.md +2 -0
- package/package.json +6 -2
- package/scripts/init.ts +18 -2
- package/vona/packages-cli/cabloy-cli/package.json +2 -2
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/package.json +1 -1
- package/vona/packages-cli/cli-set-api/src/lib/bean/cli.create.module.ts +4 -0
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/pnpm-lock.yaml +133 -1088
- package/vona/pnpm-workspace.yaml +0 -1
- package/vona/src/suite-vendor/a-vona/modules/a-core/assets/static/img/vona.svg +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/package.original.json +1 -1
- package/zova/packages-cli/cli/package.json +3 -3
- package/zova/packages-cli/cli-set-front/cli/templates/init/icon/boilerplate/icons/default/zova.svg +1 -1
- package/zova/packages-cli/cli-set-front/package.json +3 -3
- package/zova/packages-cli/cli-set-front/src/lib/bean/cli.create.module.ts +4 -0
- package/zova/packages-cli/cli-set-front/src/lib/command/create.bean.ts +5 -1
- package/zova/packages-utils/zova-vite/package.json +2 -2
- package/zova/packages-zova/zova/package.json +2 -2
- package/zova/pnpm-lock.yaml +284 -1313
- package/zova/pnpm-workspace.yaml +0 -1
- package/zova/src/suite/a-home/modules/home-icon/icons/social/cabloy.svg +1 -1
- package/zova/src/suite/a-home/modules/home-icon/icons/social/vona.svg +1 -1
- package/zova/src/suite/a-home/modules/home-icon/icons/social/zova.svg +1 -1
- package/zova/src/suite/a-home/modules/home-icon/src/.metadata/icons/groups/social.svg +3 -3
- package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +9 -0
- package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +1 -1
- package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/model/resource.ts +66 -16
- package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-routertabs/src/model/tabs.ts +60 -18
- package/zova/src/suite-vendor/a-zova/modules/a-table/cli/tableActionRow/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +6 -1
- package/zova/src/suite-vendor/a-zova/modules/a-table/cli/tableCell/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +6 -1
- package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/package.json +4 -4
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# Fullstack Quick Start Tutorials
|
|
2
|
+
|
|
3
|
+
<Badge type="info" text="Basic" />
|
|
4
|
+
|
|
5
|
+
This six-part tutorial series gives you one connected, AI-guided path into Cabloy fullstack development.
|
|
6
|
+
|
|
7
|
+
## Why this series exists
|
|
8
|
+
|
|
9
|
+
Cabloy already has strong reference guides for CRUD, OpenAPI, DTO and entity contracts, schema-driven frontend rendering, and serialization. This series packages those capabilities into one simple workflow: each page gives you one focused prompt, AI completes the next increment, and you use the result to understand the framework model behind it.
|
|
10
|
+
|
|
11
|
+
The core rhythm is:
|
|
12
|
+
|
|
13
|
+
1. each page provides one focused prompt
|
|
14
|
+
2. AI completes the tutorial-sized increment
|
|
15
|
+
3. the generated or affected files become the next teaching surface
|
|
16
|
+
4. the result is verified in the running app or generated contract output
|
|
17
|
+
5. deeper reference docs remain available when more background is needed
|
|
18
|
+
|
|
19
|
+
That makes the series practical as a guided, interactive workflow: each tutorial reduces the user action to one prompt, while the generated result becomes the teaching material for the next step.
|
|
20
|
+
|
|
21
|
+
## The business scenario
|
|
22
|
+
|
|
23
|
+
Throughout the series, you will build and refine a small **Student Training Center** example.
|
|
24
|
+
|
|
25
|
+
The main business object is `student`, and the teaching fields are:
|
|
26
|
+
|
|
27
|
+
- `name`
|
|
28
|
+
- `description`
|
|
29
|
+
- `level`
|
|
30
|
+
- `mobile`
|
|
31
|
+
|
|
32
|
+
Why these fields?
|
|
33
|
+
|
|
34
|
+
- `level` is a good field for schema-driven form and table rendering
|
|
35
|
+
- `mobile` is a good field for validation, OpenAPI output, and serialization or masking
|
|
36
|
+
|
|
37
|
+
This keeps the storyline small enough for beginners while still showing Cabloy’s fullstack contract model.
|
|
38
|
+
|
|
39
|
+
At the beginning of the series, the `demo-student` module does not exist yet. The tutorials build it step by step.
|
|
40
|
+
|
|
41
|
+
## What you should prepare first
|
|
42
|
+
|
|
43
|
+
Before starting this tutorial series, make sure you already know:
|
|
44
|
+
|
|
45
|
+
- how to bootstrap a Cabloy Basic project
|
|
46
|
+
- how to run the repo from the root
|
|
47
|
+
- how to discover command families through `npm run vona` and `npm run zova`
|
|
48
|
+
|
|
49
|
+
Read these pages first:
|
|
50
|
+
|
|
51
|
+
- [Fullstack Quickstart](/fullstack/quickstart)
|
|
52
|
+
- [Fullstack CLI](/fullstack/cli)
|
|
53
|
+
- [CLI Reference](/reference/cli-reference)
|
|
54
|
+
|
|
55
|
+
Those pages explain the repo entrypoints and the CLI-first workflow model that the tutorial prompts will reuse throughout this series.
|
|
56
|
+
|
|
57
|
+
## The learning path
|
|
58
|
+
|
|
59
|
+
### Phase 1: Create the module and CRUD thread
|
|
60
|
+
|
|
61
|
+
- [Tutorial 1: Create Your First Module](/fullstack/tutorial-1-first-module)
|
|
62
|
+
- [Tutorial 2: Create Your First CRUD](/fullstack/tutorial-2-first-crud)
|
|
63
|
+
|
|
64
|
+
### Phase 2: Share frontend rendering metadata through the backend contract
|
|
65
|
+
|
|
66
|
+
- [Tutorial 3: Frontend Metadata Sharing](/fullstack/tutorial-3-frontend-metadata-sharing)
|
|
67
|
+
- [Tutorial 4: Custom Form/Table Renderers for Level](/fullstack/tutorial-4-custom-level-renderers)
|
|
68
|
+
|
|
69
|
+
### Phase 3: Share backend contracts forward into frontend consumption
|
|
70
|
+
|
|
71
|
+
- [Tutorial 5: Backend Contract Sharing](/fullstack/tutorial-5-backend-contract-sharing)
|
|
72
|
+
|
|
73
|
+
### Phase 4: Understand one contract surface through one field story
|
|
74
|
+
|
|
75
|
+
- [Tutorial 6: One Contract Surface, Four Uses](/fullstack/tutorial-6-one-contract-four-uses)
|
|
76
|
+
|
|
77
|
+
## The standard tutorial structure
|
|
78
|
+
|
|
79
|
+
All six tutorials in this series follow the same learning structure:
|
|
80
|
+
|
|
81
|
+
1. `Goal`
|
|
82
|
+
2. `AI Prompt`
|
|
83
|
+
3. `Why this step matters`
|
|
84
|
+
4. `CLI commands to inspect/use`
|
|
85
|
+
5. `Generated or affected files`
|
|
86
|
+
6. `What those files mean in the business thread`
|
|
87
|
+
7. `Verification`
|
|
88
|
+
8. `Read more`
|
|
89
|
+
9. `Next step`
|
|
90
|
+
|
|
91
|
+
This makes the series easier to execute one page at a time: each page gives AI one clear increment, and the resulting output teaches why that step fits the Cabloy architecture.
|
|
92
|
+
|
|
93
|
+
## How to use this series with AI
|
|
94
|
+
|
|
95
|
+
Keep this series simple.
|
|
96
|
+
|
|
97
|
+
In each tutorial, your main job is to copy the prompt from the page and give it to AI.
|
|
98
|
+
|
|
99
|
+
That prompt already tells AI how to work in the Cabloy way, including things like:
|
|
100
|
+
|
|
101
|
+
- inspect the CLI first
|
|
102
|
+
- perform only the current tutorial increment
|
|
103
|
+
- explain the commands it used
|
|
104
|
+
- explain the business meaning of the generated or changed files
|
|
105
|
+
- tell you what to verify next
|
|
106
|
+
|
|
107
|
+
So for the user, the workflow is intentionally lightweight:
|
|
108
|
+
|
|
109
|
+
1. open the current tutorial
|
|
110
|
+
2. copy the prompt
|
|
111
|
+
3. send it to AI
|
|
112
|
+
4. review the result and continue to the next tutorial when ready
|
|
113
|
+
|
|
114
|
+
## CLI-first rule
|
|
115
|
+
|
|
116
|
+
This series assumes that AI should follow Cabloy’s CLI-first workflow before attempting manual scaffolding.
|
|
117
|
+
|
|
118
|
+
In practice, the tutorial prompt should push AI to follow this rule:
|
|
119
|
+
|
|
120
|
+
1. inspect the existing CLI family
|
|
121
|
+
2. run the matching generator or tooling command
|
|
122
|
+
3. inspect the generated result
|
|
123
|
+
4. make only the minimal manual follow-up changes that the business case still needs
|
|
124
|
+
|
|
125
|
+
Shared discovery commands from the repo root:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npm run vona :
|
|
129
|
+
npm run vona :create
|
|
130
|
+
npm run vona :tools
|
|
131
|
+
|
|
132
|
+
npm run zova :
|
|
133
|
+
npm run zova :create
|
|
134
|
+
npm run zova :openapi
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
This is one of the most important Cabloy rules for AI-driven development in this series.
|
|
138
|
+
|
|
139
|
+
## Suggested reading rhythm
|
|
140
|
+
|
|
141
|
+
This series is designed to progress one prompt at a time.
|
|
142
|
+
|
|
143
|
+
Each tutorial assumes that the previous result remains in place, so the workflow should stay incremental:
|
|
144
|
+
|
|
145
|
+
1. complete the current tutorial prompt
|
|
146
|
+
2. keep the generated result
|
|
147
|
+
3. continue to the next tutorial on top of that result
|
|
148
|
+
|
|
149
|
+
If a tutorial creates a new module, the local dev workflow may need `npm run dev` again so the new module is picked up before the next step.
|
|
150
|
+
|
|
151
|
+
Do not jump directly to SDK generation or custom renderers before the module and CRUD thread are in place.
|
|
152
|
+
|
|
153
|
+
## What you will understand by the end
|
|
154
|
+
|
|
155
|
+
After the six tutorials, the completed workflow should make these Cabloy ideas clear:
|
|
156
|
+
|
|
157
|
+
- when to use Vona and when to use Zova
|
|
158
|
+
- why CRUD generation usually comes before hand-written backend boilerplate
|
|
159
|
+
- how backend field metadata can reuse frontend render resources
|
|
160
|
+
- how to evolve from built-in renderers to custom renderers
|
|
161
|
+
- how backend OpenAPI contracts regenerate frontend SDKs and model helpers
|
|
162
|
+
- how validation, rendering, OpenAPI, and serialization fit into one field-oriented contract model
|
|
163
|
+
|
|
164
|
+
## Read together with
|
|
165
|
+
|
|
166
|
+
The deeper reference guides behind this workflow include:
|
|
167
|
+
|
|
168
|
+
- [CRUD Workflow](/backend/crud-workflow)
|
|
169
|
+
- [Entity Guide](/backend/entity-guide)
|
|
170
|
+
- [DTO Guide](/backend/dto-guide)
|
|
171
|
+
- [Validation Guide](/backend/validation-guide)
|
|
172
|
+
- [OpenAPI Guide](/backend/openapi-guide)
|
|
173
|
+
- [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
|
|
174
|
+
- [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
|
|
175
|
+
- [OpenAPI SDK Guide](/frontend/openapi-sdk-guide)
|
|
176
|
+
- [API Schema Guide](/frontend/api-schema-guide)
|
|
177
|
+
- [Serialization Guide](/backend/serialization-guide)
|
|
178
|
+
|
|
179
|
+
This series is not meant to replace those guides. It is meant to help you move through them in one practical, task-driven order.
|
package/cabloy-docs/index.md
CHANGED
|
@@ -51,9 +51,10 @@ Start here to learn the shared Cabloy architecture, see how Vona and Zova fit to
|
|
|
51
51
|
### For getting started
|
|
52
52
|
|
|
53
53
|
1. [Fullstack Quickstart](/fullstack/quickstart)
|
|
54
|
-
2. [
|
|
55
|
-
3. [
|
|
56
|
-
4. [
|
|
54
|
+
2. [Fullstack Quick Start Tutorials](/fullstack/tutorials-overview)
|
|
55
|
+
3. [Editions Overview](/editions/overview)
|
|
56
|
+
4. [Choosing Between Cabloy Basic and Cabloy Start](/editions/choosing-between-basic-and-start)
|
|
57
|
+
5. [Fullstack Introduction](/fullstack/introduction)
|
|
57
58
|
|
|
58
59
|
### For contributors and AI vibe coding workflows
|
|
59
60
|
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Bean Scene Boilerplate Variants
|
|
2
|
+
|
|
3
|
+
This page is the fast lookup surface for backend Vona and frontend Zova bean scenes that expose more than one CLI scaffold template.
|
|
4
|
+
|
|
5
|
+
Use it when you need to answer questions such as:
|
|
6
|
+
|
|
7
|
+
- does this bean scene support `--boilerplate=...`
|
|
8
|
+
- which variant names are currently defined
|
|
9
|
+
- where is the source module metadata for that scene
|
|
10
|
+
|
|
11
|
+
## Shared rule
|
|
12
|
+
|
|
13
|
+
Vona and Zova follow the same practical lookup rule for bean-scene boilerplate variants:
|
|
14
|
+
|
|
15
|
+
- `boilerplate` provides the default template
|
|
16
|
+
- `--boilerplate=web` maps to `boilerplateWeb`
|
|
17
|
+
- more generally, `--boilerplate=name` maps to `boilerplateName`
|
|
18
|
+
|
|
19
|
+
That means the available variants are scene-defined metadata, not a universal list shared by every scene.
|
|
20
|
+
|
|
21
|
+
A practical contributor rule is:
|
|
22
|
+
|
|
23
|
+
1. use the default template unless you know the scene exposes a named variant
|
|
24
|
+
2. check this page first for current built-in examples
|
|
25
|
+
3. if needed, verify the owning module `package.json` metadata before assuming a variant exists
|
|
26
|
+
|
|
27
|
+
## Backend Vona
|
|
28
|
+
|
|
29
|
+
### Current built-in scenes with variants
|
|
30
|
+
|
|
31
|
+
| Scene | Default metadata key | Named variant keys | Example command | Source module |
|
|
32
|
+
| -------------- | -------------------- | ------------------- | --------------------------------------------------------------------------------------------- | ---------------------- |
|
|
33
|
+
| `filter` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean filter log -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
|
|
34
|
+
| `pipe` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean pipe log -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
|
|
35
|
+
| `interceptor` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean interceptor log -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
|
|
36
|
+
| `guard` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean guard auth -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
|
|
37
|
+
| `middleware` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean middleware trace -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
|
|
38
|
+
| `ssrMenu` | `boilerplate` | `boilerplateWeb` | `npm run vona :create:bean ssrMenu menuTest -- --module=demo-student --boilerplate=web` | `vona-module-a-ssr` |
|
|
39
|
+
| `ssrMenuGroup` | `boilerplate` | `boilerplateWeb` | `npm run vona :create:bean ssrMenuGroup groupTest -- --module=demo-student --boilerplate=web` | `vona-module-a-ssr` |
|
|
40
|
+
|
|
41
|
+
These backend entries come from the current `vonaModule.onions` metadata in `a-aspect` and `a-ssr`.
|
|
42
|
+
|
|
43
|
+
## Frontend Zova
|
|
44
|
+
|
|
45
|
+
### Current built-in scenes with variants
|
|
46
|
+
|
|
47
|
+
| Scene | Default metadata key | Named variant keys | Example command pattern | Source module |
|
|
48
|
+
| ----------- | -------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------- |
|
|
49
|
+
| `command` | `boilerplate` | `boilerplateCommandBulk`, `boilerplateCommandRow` | `npm run zova :create:bean command test -- --module=demo-student --boilerplate=commandRow` | `zova-module-a-command` |
|
|
50
|
+
| `tableCell` | `boilerplate` | `boilerplateTableActionRow` | `npm run zova :create:bean tableCell test -- --module=demo-student --boilerplate=tableActionRow` | `zova-module-a-table` |
|
|
51
|
+
|
|
52
|
+
These frontend entries come from the current `zovaModule.onions` metadata in `a-command` and `a-table`.
|
|
53
|
+
|
|
54
|
+
## Guidance for AI-assisted development
|
|
55
|
+
|
|
56
|
+
Do not assume every bean scene supports named variants.
|
|
57
|
+
|
|
58
|
+
For reliable AI-assisted workflow selection:
|
|
59
|
+
|
|
60
|
+
1. choose `npm run vona` for backend bean scenes and `npm run zova` for frontend bean scenes
|
|
61
|
+
2. check whether the current scene is listed on this page
|
|
62
|
+
3. if it is not listed, verify the owning module metadata before recommending `--boilerplate=...`
|
|
63
|
+
4. treat this page as a current built-in lookup surface, not as a promise that all future scenes will follow the same naming set
|
|
64
|
+
|
|
65
|
+
## Related guides
|
|
66
|
+
|
|
67
|
+
Use this page together with:
|
|
68
|
+
|
|
69
|
+
- [Backend CLI](/backend/cli)
|
|
70
|
+
- [Frontend CLI](/frontend/cli)
|
|
71
|
+
- [Backend Bean Scene Authoring](/backend/bean-scene-authoring)
|
|
72
|
+
- [Frontend Bean Scene Authoring](/frontend/bean-scene-authoring)
|
|
73
|
+
- [CLI Reference](/reference/cli-reference)
|
|
@@ -81,6 +81,8 @@ Representative command modules:
|
|
|
81
81
|
- `vona/packages-cli/cli-set-api/src/lib/command/bin.play.ts`
|
|
82
82
|
- `zova/packages-cli/cli-set-front/src/lib/command/tools.metadata.ts`
|
|
83
83
|
|
|
84
|
+
When a `:create:bean` workflow depends on scene-specific boilerplate variants, also see [Bean Scene Boilerplate Variants](/reference/bean-scene-boilerplates).
|
|
85
|
+
|
|
84
86
|
This is the preferred path for both humans and AI agents because it follows the real registration flow instead of relying on scattered examples.
|
|
85
87
|
|
|
86
88
|
## Related guides
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cabloy",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.60",
|
|
4
4
|
"gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
|
|
5
5
|
"description": "A Node.js fullstack framework",
|
|
6
6
|
"keywords": [
|
|
@@ -32,11 +32,15 @@
|
|
|
32
32
|
"build": "npm run build:zova && pnpm --dir vona run build",
|
|
33
33
|
"build:docker": "npm run build:zova && pnpm --dir vona run build:docker",
|
|
34
34
|
"build:zova": "pnpm --dir zova run build:ssr:cabloyBasicBatch",
|
|
35
|
+
"build:zova:admin": "pnpm --dir zova run build:ssr:cabloyBasicAdmin && pnpm --dir zova run build:rest:cabloyBasicAdmin",
|
|
36
|
+
"build:zova:web": "pnpm --dir zova run build:ssr:cabloyBasicWeb && pnpm --dir zova run build:rest:cabloyBasicWeb",
|
|
35
37
|
"start": "cd vona && npm run start",
|
|
36
38
|
"start:one": "cd vona && npm run start:one",
|
|
37
39
|
"test": "cd vona && npm run test",
|
|
38
40
|
"tsc": "npm run tsc:zova && pnpm --dir vona run tsc",
|
|
39
41
|
"tsc:zova": "pnpm --dir zova run tsc",
|
|
42
|
+
"deps:vona": "pnpm --dir vona run vona :tools:deps",
|
|
43
|
+
"deps:zova": "pnpm --dir zova run zova :tools:deps",
|
|
40
44
|
"format": "oxfmt --check",
|
|
41
45
|
"format:fix": "oxfmt --write",
|
|
42
46
|
"lint": "oxlint",
|
|
@@ -66,7 +70,7 @@
|
|
|
66
70
|
"minimist": "^1.2.8",
|
|
67
71
|
"oxfmt": "^0.45.0",
|
|
68
72
|
"oxlint": "^1.65.0",
|
|
69
|
-
"tar": "^7.5.
|
|
73
|
+
"tar": "^7.5.16",
|
|
70
74
|
"textlint": "^15.7.0",
|
|
71
75
|
"textlint-rule-en-no-mixed-period": "^3.0.2",
|
|
72
76
|
"textlint-rule-ja-no-mixed-period": "^3.0.2",
|
package/scripts/init.ts
CHANGED
|
@@ -247,7 +247,22 @@ function buildSsrCabloyBasicStartBatch(): void {
|
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
-
// --- Step F:
|
|
250
|
+
// --- Step F: initTestData ---
|
|
251
|
+
|
|
252
|
+
function initTestData(): void {
|
|
253
|
+
// eslint-disable-next-line
|
|
254
|
+
console.log('[init] Initializing test data via npm run test...');
|
|
255
|
+
try {
|
|
256
|
+
exec('npm run test');
|
|
257
|
+
} catch {
|
|
258
|
+
// eslint-disable-next-line
|
|
259
|
+
console.warn(
|
|
260
|
+
'[init] npm run test failed after init completed; Redis may be unavailable, skipping test data initialization',
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// --- Step G: cleanupWorkspaceYaml ---
|
|
251
266
|
|
|
252
267
|
function cleanupWorkspaceYaml(): void {
|
|
253
268
|
const subProjects = ['vona', 'zova'];
|
|
@@ -268,7 +283,7 @@ function cleanupWorkspaceYaml(): void {
|
|
|
268
283
|
}
|
|
269
284
|
}
|
|
270
285
|
|
|
271
|
-
// --- Step
|
|
286
|
+
// --- Step H: init:cabloy-docs ---
|
|
272
287
|
|
|
273
288
|
function initCabloyDocs(): void {
|
|
274
289
|
const pkgPath = resolve(CABLOY_DOCS_DIR, 'package.json');
|
|
@@ -291,5 +306,6 @@ initZova();
|
|
|
291
306
|
initCabloyDocs();
|
|
292
307
|
buildSsrCabloyBasicStartBatch();
|
|
293
308
|
writeVersionMarker();
|
|
309
|
+
initTestData();
|
|
294
310
|
// eslint-disable-next-line
|
|
295
311
|
console.log('[init] Done!');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cabloy/cli",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.18",
|
|
4
4
|
"gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
|
|
5
5
|
"description": "@cabloy/cli",
|
|
6
6
|
"keywords": [
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"is-type-of": "^2.2.0",
|
|
56
56
|
"istextorbinary": "^3.3.0",
|
|
57
57
|
"semver": "^7.7.4",
|
|
58
|
-
"tmp": "^0.2.
|
|
58
|
+
"tmp": "^0.2.7",
|
|
59
59
|
"urllib": "^4.9.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
@@ -81,5 +81,9 @@ export class CliCreateModule extends BeanCliBase {
|
|
|
81
81
|
if (!argv.vscode && !argv.ci) {
|
|
82
82
|
await this.helper.pnpmInstall();
|
|
83
83
|
}
|
|
84
|
+
// tools.metadata
|
|
85
|
+
if (!argv.nometadata) {
|
|
86
|
+
await this.helper.invokeCli([':tools:metadata', moduleName], { cwd: argv.projectPath });
|
|
87
|
+
}
|
|
84
88
|
}
|
|
85
89
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vona",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.48",
|
|
4
4
|
"gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
|
|
5
5
|
"description": "Vona is an intuitive, elegant and powerful Node.js framework for rapidly developing enterprise applications of any size",
|
|
6
6
|
"keywords": [
|