create-windy 0.1.2 → 0.2.1
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/README.md +31 -8
- package/dist/cli.js +892 -37
- package/package.json +3 -3
- package/template/.husky/pre-commit +15 -0
- package/template/.windy-template.json +2 -2
- package/template/AGENTS.md +28 -75
- package/template/README.md +20 -6
- package/template/_gitignore +2 -0
- package/template/package.json +5 -0
- /package/{assets/LICENSE-Apache-2.0.txt → LICENSE} +0 -0
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-windy",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "创建单组织、单租户、私有部署优先的 Windy 企业 Dashboard Starter",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"create-windy": "dist/cli.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
|
-
"
|
|
10
|
+
"LICENSE",
|
|
11
11
|
"dist",
|
|
12
12
|
"template",
|
|
13
13
|
"README.md"
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"bun",
|
|
30
30
|
"enterprise"
|
|
31
31
|
],
|
|
32
|
-
"license": "
|
|
32
|
+
"license": "Apache-2.0",
|
|
33
33
|
"publishConfig": {
|
|
34
34
|
"access": "public"
|
|
35
35
|
},
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
if [ -x "$HOME/.bun/bin/bun" ]; then
|
|
5
|
+
BUN_BIN="$HOME/.bun/bin/bun"
|
|
6
|
+
elif command -v bun >/dev/null 2>&1; then
|
|
7
|
+
BUN_BIN="$(command -v bun)"
|
|
8
|
+
else
|
|
9
|
+
echo "bun not found. Install Bun or ensure it is available at \$HOME/.bun/bin/bun." >&2
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
export PATH="$(dirname "$BUN_BIN"):$PATH"
|
|
14
|
+
|
|
15
|
+
"$BUN_BIN" run format:staged
|
package/template/AGENTS.md
CHANGED
|
@@ -1,87 +1,40 @@
|
|
|
1
1
|
# AGENTS.md
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本文件说明项目由 create-windy 生成时的技术基线,帮助开发者和代码 Agent 快速理解
|
|
4
|
+
仓库。它不是软件供应方对下游项目的永久限制;项目所有者可以按团队需要调整技术、
|
|
5
|
+
工具和工作流,并同步更新实际脚本与文档。
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
- 当前阶段暂不支持国际化,不新增 i18n 框架、语言包或翻译抽象。
|
|
7
|
-
- 本项目是企业级 Dashboard 产品基座,不是传统 Admin Template。
|
|
7
|
+
## Runtime 与工作区
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
- Bun 1.3.14+:运行时、包管理器与脚本执行器。
|
|
10
|
+
- TypeScript 5.9:根依赖,由 Bun Workspaces 共享。
|
|
11
|
+
- Monorepo:应用位于 `apps/*`,共享能力与业务模块位于 `packages/*`。
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
- 代码检查与格式化统一使用 Oxc:Oxlint 和 Oxfmt,不使用 ESLint 或 Prettier。
|
|
13
|
-
- Oxc 是 Starter 默认提供的代码质量方案;项目生成后由项目所有者决定是否保留、替换或并行使用其它工具。
|
|
14
|
-
- TypeScript 安装在根依赖,由 Bun Workspaces 共享。
|
|
15
|
-
- 新增依赖时使用 Bun 解析最新可用版本,不手写猜测版本。
|
|
16
|
-
- 依赖必须服务于当前技术栈或明确的近期架构目标,避免无用占位包。
|
|
17
|
-
- Web UI 默认使用 shadcn-vue + Reka UI + Tailwind CSS,不再使用 Headless UI 作为主组件库。
|
|
18
|
-
- 安装 shadcn-vue 组件必须使用命令,不手写复制组件源码:`bunx --bun shadcn-vue@latest add <component>`。
|
|
19
|
-
- 常用 shadcn-vue 组件可先安装;其它组件按需安装,安装前先检查 `apps/web/src/components/ui` 是否已有。
|
|
20
|
-
- Web 图表默认使用 `@antv/g2`;不要新增 ECharts 依赖或基于 ECharts 的组件封装。
|
|
13
|
+
## Web
|
|
21
14
|
|
|
22
|
-
|
|
15
|
+
- Vue 3 + Vite + Vue Router + Pinia。
|
|
16
|
+
- shadcn-vue + Reka UI + Tailwind CSS。
|
|
17
|
+
- AntV G2 用于图表。
|
|
18
|
+
- Vitest + Vue Test Utils 用于组件和前端单元测试。
|
|
23
19
|
|
|
24
|
-
|
|
25
|
-
- 遵循 SOLID、Clean Architecture、轻量 DDD、Repository Pattern、Dependency Injection。
|
|
26
|
-
- 业务能力默认按模块拆分,保持低耦合、高内聚。
|
|
27
|
-
- 禁止跨模块直接访问 Repository;模块间通过 service、公开接口或模块注册机制协作。
|
|
28
|
-
- 新功能默认接入 RBAC、Feature Flag、License、Audit Log,不绕过基础设施。
|
|
29
|
-
- 数据访问统一通过 Repository + Drizzle;业务层不得直接依赖 PostgreSQL、MySQL、达梦或人大金仓方言。
|
|
30
|
-
- 数据库兼容层负责 SQL Dialect、Migration、类型映射、自增策略、JSON、分页和保留字差异。
|
|
31
|
-
- RuoYi-Vue 兼容能力必须做成可插拔 Adapter:新项目默认关闭,不污染平台 canonical schema,不让业务模块直接依赖旧 `sys_*` 表。
|
|
32
|
-
- 旧项目兼容目标包括一次性导入新库,以及客户单机服务器上必要时直连旧 MySQL / Redis 运行;密码可统一重置,不要求兼容旧 hash。
|
|
20
|
+
## Server 与数据
|
|
33
21
|
|
|
34
|
-
|
|
22
|
+
- Bun + Elysia 提供 HTTP 服务。
|
|
23
|
+
- Drizzle ORM 负责数据访问和迁移,默认数据库为 PostgreSQL 17。
|
|
24
|
+
- 平台能力通过 Module Manifest 组合,并提供 Feature、RBAC、Audit 与可选 License
|
|
25
|
+
边界。
|
|
35
26
|
|
|
36
|
-
|
|
37
|
-
- Feature 与权限共用同一个稳定的能力基础 Key:Feature Key 直接使用基础 Key,例如 `system.audit`;权限 Key 在同一基础 Key 后追加动作,例如 `system.audit.read`、`system.audit.manage`。
|
|
38
|
-
- 菜单、页面路由、按钮、Server API、Agent Tool 和后台任务必须引用 Manifest 中已注册的 Feature / Permission Key,并经过统一 Guard;禁止在各层维护互相漂移的手写 Key 列表。
|
|
39
|
-
- 新能力的 Manifest 注册应同时声明菜单或入口、API 权限绑定、可选 Entitlement 和审计动作,并补充注册重复、未知引用和 Guard 拒绝测试。
|
|
27
|
+
## 当前代码质量配置
|
|
40
28
|
|
|
41
|
-
|
|
29
|
+
- 生成时默认预装 Oxlint、Oxfmt、lint-staged 与 Husky。
|
|
30
|
+
- 提交前自动格式化暂存文件;lint、typecheck 和 test 保留为显式命令。
|
|
31
|
+
- 这是 Starter 的初始配置;项目所有者可按团队需要保留、替换或扩展。
|
|
32
|
+
- 实际可用命令和提交检查以当前项目的 `package.json` 与 Git hooks 为准。
|
|
42
33
|
|
|
43
|
-
|
|
44
|
-
- 优先组件化、模块化和小文件设计,避免把平台核心、业务逻辑和 UI 细节混在一起。
|
|
45
|
-
- Web 通用布局组件放在 `apps/web/src/layout/`。
|
|
46
|
-
- 非组件库提供、但可跨页面复用的业务通用组件放在 `apps/web/src/components/common/`。
|
|
47
|
-
- shadcn-vue 生成的基础 UI 组件保留在 `apps/web/src/components/ui/`,业务代码优先组合使用,不直接改造成业务组件。
|
|
48
|
-
- 组件、服务、仓储、schema、dto、permission、menu、feature 等职责清晰分离。
|
|
49
|
-
- 公共类型、DTO、校验和配置放入共享 package,避免复制粘贴。
|
|
50
|
-
- 只添加必要注释,复杂逻辑前可补充简短说明。
|
|
34
|
+
## 常用入口
|
|
51
35
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
- 未保存状态必须由当前编辑值与最近一次成功加载或保存的基线比较得出;成功保存、明确重置或重新加载后及时清除,不能只用一次输入事件永久标脏。
|
|
58
|
-
|
|
59
|
-
## Git Flow
|
|
60
|
-
|
|
61
|
-
- 当前阶段直接在 `main` 提交,除非用户要求分支、PR 或隔离工作树。
|
|
62
|
-
- 每完成一个功能、修复或文档切片,必须立即提交一个对应 commit。
|
|
63
|
-
- 每个提交保持一个小而完整的功能、修复或文档切片。
|
|
64
|
-
- 使用 Conventional Commits:`feat(scope): summary`、`fix(scope): summary`、`docs(scope): summary`、`chore(scope): summary`。
|
|
65
|
-
- 不回滚无关用户改动。
|
|
66
|
-
- 提交前检查 `git status`,确保没有把无关文件混入提交。
|
|
67
|
-
|
|
68
|
-
## 验证与测试
|
|
69
|
-
|
|
70
|
-
- 优先使用 `bun run typecheck`、`bun run build`、`bun test`。
|
|
71
|
-
- 核心模块优先补单元测试。
|
|
72
|
-
- 不使用 Playwright 或 Chrome 做自测,除非用户明确要求。
|
|
73
|
-
- 复杂功能完成后,在 `docs/` 下补充设计、行为、运维和取舍说明。
|
|
74
|
-
|
|
75
|
-
## Agent skills
|
|
76
|
-
|
|
77
|
-
### Issue tracker
|
|
78
|
-
|
|
79
|
-
Issue、PRD 与接力任务保存在仓库的 `.scratch/<feature>/`,不连接外部平台。详见 `docs/agents/issue-tracker.md`。
|
|
80
|
-
|
|
81
|
-
### Triage labels
|
|
82
|
-
|
|
83
|
-
使用 `needs-triage`、`needs-info`、`ready-for-agent`、`ready-for-human`、`wontfix` 五种标准状态。详见 `docs/agents/triage-labels.md`。
|
|
84
|
-
|
|
85
|
-
### Domain docs
|
|
86
|
-
|
|
87
|
-
采用单上下文布局:根目录 `CONTEXT.md` 与 `docs/adr/`。详见 `docs/agents/domain.md`。
|
|
36
|
+
- `bun run dev:web`:启动 Web 开发服务。
|
|
37
|
+
- `bun run dev:server`:启动 Server 开发服务。
|
|
38
|
+
- `bun run typecheck`、`bun run test`、`bun run build`:执行基础验证。
|
|
39
|
+
- `docs/README.md`:平台架构、模块接入和运维文档入口。
|
|
40
|
+
- `.windy/generation.json`:本次生成器版本、所选模块和选项记录。
|
package/template/README.md
CHANGED
|
@@ -4,8 +4,10 @@ windy-starter 是由 create-windy 生成的单组织、单租户企业应用项
|
|
|
4
4
|
`/`,平台管理控制面位于 `/admin/**`;业务功能可以按自己的产品习惯开发,不需要
|
|
5
5
|
复用 Admin 页面结构。
|
|
6
6
|
|
|
7
|
-
本项目固定使用 Bun 1.3.14
|
|
8
|
-
|
|
7
|
+
本项目固定使用 Bun 1.3.14 或更高版本,客户业务代码的当前法律许可为
|
|
8
|
+
`UNLICENSED`。Windy Starter 基座使用 Apache-2.0,正文保留在
|
|
9
|
+
`.windy/licenses/WINDY-APACHE-2.0.txt`。项目不包含软件供应方的 License Authority、
|
|
10
|
+
内部签名服务、发布密钥或私有源仓库信息。
|
|
9
11
|
创建时包含了 `work-order` 示例模块,用于演示 Module Manifest 接入;它不是生产工单产品,可以在正式开发前替换。
|
|
10
12
|
|
|
11
13
|
## 环境要求
|
|
@@ -87,8 +89,9 @@ bun run dev:web
|
|
|
87
89
|
| `system.data-governance` | 未包含 | H2 | 敏感字段、明文访问和治理导出。 |
|
|
88
90
|
| `work-order` | 未包含 | H2 | 可替换的业务模块接入示例。 |
|
|
89
91
|
|
|
90
|
-
精确生成来源和选择记录在 `.windy/generation.json
|
|
91
|
-
`module add/remove`
|
|
92
|
+
精确生成来源和选择记录在 `.windy/generation.json`。当前版本已提供可回滚的
|
|
93
|
+
`windy update`;通用 `module add/remove` 尚未交付,不要把 Feature Flag 关闭当成
|
|
94
|
+
模块已经卸载。
|
|
92
95
|
|
|
93
96
|
## 常用命令
|
|
94
97
|
|
|
@@ -98,10 +101,19 @@ bun run dev:server
|
|
|
98
101
|
bun run typecheck
|
|
99
102
|
bun run test
|
|
100
103
|
bun run build
|
|
104
|
+
bun run windy doctor
|
|
105
|
+
bun run windy update --check
|
|
106
|
+
bun run windy update --dry-run
|
|
101
107
|
bun run lint
|
|
102
108
|
bun run format
|
|
103
109
|
```
|
|
104
110
|
|
|
111
|
+
提交时 Husky 会通过 lint-staged 与 Oxfmt 格式化暂存文件,不会把未暂存内容带入提交。lint、typecheck 和 test 保留为需要时显式运行的命令。
|
|
112
|
+
|
|
113
|
+
更新前必须保持 Git 工作区干净。`--dry-run` 只生成计划,不写项目;正式更新先备份,
|
|
114
|
+
再做 package 字段级合并、共享脚手架三方合并与完整验证。任何冲突都会在写入前中止,
|
|
115
|
+
验证失败会自动回滚;中断恢复使用 `bun run windy doctor --repair`。
|
|
116
|
+
|
|
105
117
|
## 开发约束
|
|
106
118
|
|
|
107
119
|
- 新增路由默认需要登录;只有显式 public 的页面允许匿名访问。
|
|
@@ -124,5 +136,7 @@ create-windy 默认建立 `main` 分支并创建 `chore: initialize project` 首
|
|
|
124
136
|
|
|
125
137
|
## License
|
|
126
138
|
|
|
127
|
-
|
|
128
|
-
|
|
139
|
+
客户业务代码当前法律许可证为 `UNLICENSED`。项目没有附带开源许可证。Windy Starter 基座继续适用
|
|
140
|
+
`.windy/licenses/WINDY-APACHE-2.0.txt` 中的 Apache-2.0。项目法律许可证与
|
|
141
|
+
`system.license` 离线运行时授权模块是两个不同概念;更换其中一个不会自动更换
|
|
142
|
+
另一个。
|
package/template/_gitignore
CHANGED
package/template/package.json
CHANGED
|
@@ -40,13 +40,18 @@
|
|
|
40
40
|
"typecheck": "bun run --cwd apps/web typecheck && bun run --cwd apps/server typecheck && bun run --cwd apps/license typecheck && bun run --cwd apps/signing-service typecheck && bun run --cwd packages/license-sdk typecheck && bun run --cwd packages/storage typecheck && bun run --cwd packages/database typecheck && bun run --cwd packages/crud-generator typecheck && bun run --cwd packages/create-windy typecheck",
|
|
41
41
|
"lint": "oxlint .",
|
|
42
42
|
"format": "oxfmt",
|
|
43
|
+
"format:staged": "lint-staged",
|
|
43
44
|
"test": "bun test --path-ignore-patterns='packages/create-windy/template/**' && bun run --cwd apps/web test"
|
|
44
45
|
},
|
|
46
|
+
"lint-staged": {
|
|
47
|
+
"*.{cjs,css,cts,html,js,json,jsonc,jsx,less,md,mdx,mjs,mts,scss,ts,tsx,vue,yaml,yml}": "oxfmt --write"
|
|
48
|
+
},
|
|
45
49
|
"devDependencies": {
|
|
46
50
|
"@types/bun": "^1.3.14",
|
|
47
51
|
"@types/pg": "^8.20.0",
|
|
48
52
|
"drizzle-kit": "^0.31.10",
|
|
49
53
|
"husky": "^9.1.7",
|
|
54
|
+
"lint-staged": "^17.1.1",
|
|
50
55
|
"oxfmt": "^0.59.0",
|
|
51
56
|
"oxlint": "^1.74.0",
|
|
52
57
|
"typescript": "5.9.3"
|
|
File without changes
|