@vonosan/cli 0.2.0 → 0.2.6
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/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +291 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoWH;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C1D"}
|
package/dist/commands/add.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { execSync } from 'node:child_process';
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, cpSync } from 'node:fs';
|
|
12
|
-
import { join } from 'node:path';
|
|
12
|
+
import { join, dirname } from 'node:path';
|
|
13
13
|
const green = (s) => `\x1b[32m${s}\x1b[0m`;
|
|
14
14
|
const red = (s) => `\x1b[31m${s}\x1b[0m`;
|
|
15
15
|
const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
|
|
@@ -29,6 +29,287 @@ const KNOWN_MODULES = {
|
|
|
29
29
|
function run(cmd) {
|
|
30
30
|
execSync(cmd, { stdio: 'inherit', cwd: process.cwd() });
|
|
31
31
|
}
|
|
32
|
+
function addFrontendScaffold() {
|
|
33
|
+
const cwd = process.cwd();
|
|
34
|
+
const pkgPath = join(cwd, 'package.json');
|
|
35
|
+
if (!existsSync(pkgPath)) {
|
|
36
|
+
process.stderr.write(red('Cannot add frontend: package.json not found in current directory.\n'));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
const rawPkg = readFileSync(pkgPath, 'utf8');
|
|
40
|
+
const pkg = JSON.parse(rawPkg);
|
|
41
|
+
const projectName = pkg.name ?? 'vonosan-app';
|
|
42
|
+
const files = {
|
|
43
|
+
'index.html': `<!DOCTYPE html>
|
|
44
|
+
<html lang="en" class="h-full">
|
|
45
|
+
<head>
|
|
46
|
+
<meta charset="UTF-8" />
|
|
47
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
48
|
+
<title>${projectName}</title>
|
|
49
|
+
</head>
|
|
50
|
+
<body class="h-full">
|
|
51
|
+
<div id="app" class="isolate"><!--ssr-outlet--></div>
|
|
52
|
+
<script type="module" src="/src/main.ts"></script>
|
|
53
|
+
</body>
|
|
54
|
+
</html>
|
|
55
|
+
`,
|
|
56
|
+
'vite.config.ts': `import { defineConfig, loadEnv } from 'vite'
|
|
57
|
+
import vue from '@vitejs/plugin-vue'
|
|
58
|
+
import { vonosan } from 'vonosan/vite'
|
|
59
|
+
import vonoConfig from './vonosan.config.js'
|
|
60
|
+
|
|
61
|
+
export default defineConfig(({ mode }) => {
|
|
62
|
+
const env = loadEnv(mode, process.cwd(), '')
|
|
63
|
+
const port = Number(env.PORT ?? '4000')
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
plugins: [vue(), ...vonosan(vonoConfig)],
|
|
67
|
+
server: {
|
|
68
|
+
host: '0.0.0.0',
|
|
69
|
+
port,
|
|
70
|
+
},
|
|
71
|
+
preview: {
|
|
72
|
+
host: '0.0.0.0',
|
|
73
|
+
port,
|
|
74
|
+
},
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
`,
|
|
78
|
+
'src/App.vue': `<template>
|
|
79
|
+
<UApp>
|
|
80
|
+
<RouterView />
|
|
81
|
+
</UApp>
|
|
82
|
+
</template>
|
|
83
|
+
`,
|
|
84
|
+
'src/main.ts': `import { createSSRApp } from 'vue'
|
|
85
|
+
import { createPinia } from 'pinia'
|
|
86
|
+
import { createUnhead } from '@unhead/vue'
|
|
87
|
+
import App from './App.vue'
|
|
88
|
+
import { createRouter } from './router.js'
|
|
89
|
+
|
|
90
|
+
export function createApp() {
|
|
91
|
+
const app = createSSRApp(App)
|
|
92
|
+
const pinia = createPinia()
|
|
93
|
+
const head = createUnhead()
|
|
94
|
+
const router = createRouter()
|
|
95
|
+
|
|
96
|
+
app.use(pinia)
|
|
97
|
+
app.use(head)
|
|
98
|
+
app.use(router)
|
|
99
|
+
|
|
100
|
+
return { app, pinia, head, router }
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (!import.meta.env.SSR) {
|
|
104
|
+
const { app, router } = createApp()
|
|
105
|
+
router.isReady().then(() => {
|
|
106
|
+
app.mount('#app')
|
|
107
|
+
})
|
|
108
|
+
}
|
|
109
|
+
`,
|
|
110
|
+
'src/router.ts': `import { createRouter as _createRouter, createWebHistory, createMemoryHistory } from 'vue-router'
|
|
111
|
+
|
|
112
|
+
const routes = [
|
|
113
|
+
{
|
|
114
|
+
path: '/',
|
|
115
|
+
component: () => import('./modules/home/index.page.vue'),
|
|
116
|
+
},
|
|
117
|
+
]
|
|
118
|
+
|
|
119
|
+
export function createRouter() {
|
|
120
|
+
return _createRouter({
|
|
121
|
+
history: import.meta.env.SSR ? createMemoryHistory() : createWebHistory(),
|
|
122
|
+
routes,
|
|
123
|
+
})
|
|
124
|
+
}
|
|
125
|
+
`,
|
|
126
|
+
'src/modules/home/index.page.vue': `<template>
|
|
127
|
+
<div class="landing">
|
|
128
|
+
<header class="topbar">
|
|
129
|
+
<p class="brand">${projectName}</p>
|
|
130
|
+
<nav class="menu">
|
|
131
|
+
<a href="#features">Features</a>
|
|
132
|
+
<a href="#about">About</a>
|
|
133
|
+
</nav>
|
|
134
|
+
</header>
|
|
135
|
+
|
|
136
|
+
<section class="hero">
|
|
137
|
+
<p class="eyebrow">Welcome to Vonosan</p>
|
|
138
|
+
<h1>Build fast apps for every age and every audience.</h1>
|
|
139
|
+
<p class="subtext">
|
|
140
|
+
This starter gives you a clear structure, friendly defaults, and room to grow from MVP to production.
|
|
141
|
+
</p>
|
|
142
|
+
</section>
|
|
143
|
+
|
|
144
|
+
<section class="features" id="features">
|
|
145
|
+
<article class="card">
|
|
146
|
+
<h2>Fast Setup</h2>
|
|
147
|
+
<p>Vue + Vite + typed full-stack conventions so you can ship features quickly.</p>
|
|
148
|
+
</article>
|
|
149
|
+
<article class="card">
|
|
150
|
+
<h2>Clean Modules</h2>
|
|
151
|
+
<p>Organize pages and APIs by module for better teamwork and maintainability.</p>
|
|
152
|
+
</article>
|
|
153
|
+
<article class="card">
|
|
154
|
+
<h2>Production Ready</h2>
|
|
155
|
+
<p>Built-in route rules, health routes, and straightforward deployment flow.</p>
|
|
156
|
+
</article>
|
|
157
|
+
</section>
|
|
158
|
+
|
|
159
|
+
<footer class="footer" id="about">
|
|
160
|
+
<p>Made with Vonosan</p>
|
|
161
|
+
<small>Start from src/modules and make it yours.</small>
|
|
162
|
+
</footer>
|
|
163
|
+
</div>
|
|
164
|
+
</template>
|
|
165
|
+
|
|
166
|
+
<style scoped>
|
|
167
|
+
.landing {
|
|
168
|
+
min-height: 100vh;
|
|
169
|
+
padding: 1.25rem;
|
|
170
|
+
color: #10243e;
|
|
171
|
+
font-family: "Space Grotesk", "Nunito", "Segoe UI", sans-serif;
|
|
172
|
+
background:
|
|
173
|
+
radial-gradient(1000px 400px at 90% -10%, rgba(11, 109, 246, 0.18), transparent 60%),
|
|
174
|
+
linear-gradient(180deg, #f8fafc, #eef6ff);
|
|
175
|
+
}
|
|
176
|
+
.topbar {
|
|
177
|
+
max-width: 1080px;
|
|
178
|
+
margin: 0 auto;
|
|
179
|
+
display: flex;
|
|
180
|
+
justify-content: space-between;
|
|
181
|
+
align-items: center;
|
|
182
|
+
}
|
|
183
|
+
.brand {
|
|
184
|
+
margin: 0;
|
|
185
|
+
font-weight: 700;
|
|
186
|
+
}
|
|
187
|
+
.menu {
|
|
188
|
+
display: flex;
|
|
189
|
+
gap: 0.8rem;
|
|
190
|
+
}
|
|
191
|
+
.menu a {
|
|
192
|
+
text-decoration: none;
|
|
193
|
+
color: #4a5f7a;
|
|
194
|
+
font-weight: 600;
|
|
195
|
+
}
|
|
196
|
+
.hero {
|
|
197
|
+
max-width: 1080px;
|
|
198
|
+
margin: 3rem auto 0;
|
|
199
|
+
}
|
|
200
|
+
.eyebrow {
|
|
201
|
+
margin: 0;
|
|
202
|
+
color: #0b6df6;
|
|
203
|
+
font-size: 0.8rem;
|
|
204
|
+
font-weight: 700;
|
|
205
|
+
text-transform: uppercase;
|
|
206
|
+
}
|
|
207
|
+
.hero h1 {
|
|
208
|
+
margin: 0.6rem 0 0;
|
|
209
|
+
font-size: clamp(1.9rem, 4vw, 3rem);
|
|
210
|
+
}
|
|
211
|
+
.subtext {
|
|
212
|
+
max-width: 60ch;
|
|
213
|
+
color: #4a5f7a;
|
|
214
|
+
line-height: 1.6;
|
|
215
|
+
}
|
|
216
|
+
.features {
|
|
217
|
+
max-width: 1080px;
|
|
218
|
+
margin: 1.2rem auto 0;
|
|
219
|
+
display: grid;
|
|
220
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
221
|
+
gap: 0.8rem;
|
|
222
|
+
}
|
|
223
|
+
.card {
|
|
224
|
+
background: #fff;
|
|
225
|
+
border: 1px solid rgba(16, 36, 62, 0.1);
|
|
226
|
+
border-radius: 16px;
|
|
227
|
+
padding: 1rem;
|
|
228
|
+
}
|
|
229
|
+
.card h2 {
|
|
230
|
+
margin: 0;
|
|
231
|
+
}
|
|
232
|
+
.card p {
|
|
233
|
+
margin: 0.5rem 0 0;
|
|
234
|
+
color: #4a5f7a;
|
|
235
|
+
line-height: 1.5;
|
|
236
|
+
}
|
|
237
|
+
.footer {
|
|
238
|
+
max-width: 1080px;
|
|
239
|
+
margin: 1.4rem auto 0;
|
|
240
|
+
color: #4a5f7a;
|
|
241
|
+
}
|
|
242
|
+
.footer p {
|
|
243
|
+
margin: 0;
|
|
244
|
+
color: #10243e;
|
|
245
|
+
font-weight: 700;
|
|
246
|
+
}
|
|
247
|
+
@media (max-width: 900px) {
|
|
248
|
+
.features {
|
|
249
|
+
grid-template-columns: 1fr;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
</style>
|
|
253
|
+
`,
|
|
254
|
+
'src/modules/health/health.routes.ts': `import { Hono } from 'hono'
|
|
255
|
+
|
|
256
|
+
const healthRouter = new Hono()
|
|
257
|
+
|
|
258
|
+
healthRouter.get('/', (c) => {
|
|
259
|
+
return c.json({
|
|
260
|
+
ok: true,
|
|
261
|
+
service: '${projectName}',
|
|
262
|
+
timestamp: new Date().toISOString(),
|
|
263
|
+
})
|
|
264
|
+
})
|
|
265
|
+
|
|
266
|
+
export default healthRouter
|
|
267
|
+
`,
|
|
268
|
+
'src/route-rules.ts': `import type { RouteRules } from 'vonosan/server/route-rules'
|
|
269
|
+
|
|
270
|
+
export const routeRules: RouteRules = {
|
|
271
|
+
'/': { mode: 'ssr', cache: 3600 },
|
|
272
|
+
'/dashboard/**': { mode: 'spa' },
|
|
273
|
+
'/admin/**': { mode: 'spa' },
|
|
274
|
+
}
|
|
275
|
+
`,
|
|
276
|
+
'src/env.d.ts': `/// <reference types="vite/client" />
|
|
277
|
+
|
|
278
|
+
declare module '*.vue' {
|
|
279
|
+
import type { DefineComponent } from 'vue'
|
|
280
|
+
const component: DefineComponent<{}, {}, unknown>
|
|
281
|
+
export default component
|
|
282
|
+
}
|
|
283
|
+
`,
|
|
284
|
+
};
|
|
285
|
+
for (const [relPath, content] of Object.entries(files)) {
|
|
286
|
+
const absPath = join(cwd, relPath);
|
|
287
|
+
if (existsSync(absPath)) {
|
|
288
|
+
process.stdout.write(yellow(` Skipped ${relPath} (already exists)\n`));
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
mkdirSync(dirname(absPath), { recursive: true });
|
|
292
|
+
writeFileSync(absPath, content, 'utf8');
|
|
293
|
+
process.stdout.write(green(` Created ${relPath}\n`));
|
|
294
|
+
}
|
|
295
|
+
pkg.scripts = pkg.scripts ?? {};
|
|
296
|
+
pkg.scripts.dev = 'vite';
|
|
297
|
+
pkg.scripts.build = 'vite build';
|
|
298
|
+
pkg.scripts.preview = 'vite preview';
|
|
299
|
+
writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`, 'utf8');
|
|
300
|
+
process.stdout.write(green(' Updated package.json scripts for frontend runtime\n'));
|
|
301
|
+
try {
|
|
302
|
+
run('bun add vue vue-router pinia @unhead/vue @unhead/ssr @nuxt/ui');
|
|
303
|
+
run('bun add -d vite @vitejs/plugin-vue');
|
|
304
|
+
process.stdout.write(green('✔ Frontend dependencies installed\n'));
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
process.stdout.write(yellow('⚠ Could not install frontend dependencies automatically. Install them manually.\n'));
|
|
308
|
+
}
|
|
309
|
+
process.stdout.write(green('✔ Frontend scaffold added. Run bun run dev\n'));
|
|
310
|
+
process.stdout.write(green('✔ Health route scaffold added at src/modules/health/health.routes.ts\n'));
|
|
311
|
+
process.stdout.write(green(' Health endpoint: /api/v1/health/\n'));
|
|
312
|
+
}
|
|
32
313
|
/**
|
|
33
314
|
* Reads vonosan.config.ts and appends the module to the `modules` array.
|
|
34
315
|
* This is a best-effort text manipulation — for a production implementation
|
|
@@ -70,6 +351,15 @@ export async function runAdd(args) {
|
|
|
70
351
|
process.stderr.write(` Known modules: ${Object.keys(KNOWN_MODULES).join(', ')}\n`);
|
|
71
352
|
process.exit(1);
|
|
72
353
|
}
|
|
354
|
+
if (moduleName === 'frontend') {
|
|
355
|
+
if (eject) {
|
|
356
|
+
process.stderr.write(red('`vonosan add frontend --eject` is not supported.\n'));
|
|
357
|
+
process.exit(1);
|
|
358
|
+
}
|
|
359
|
+
process.stdout.write(bold('Adding frontend scaffold (Vue + Vite) …\n'));
|
|
360
|
+
addFrontendScaffold();
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
73
363
|
const packageName = KNOWN_MODULES[moduleName] ?? `@vonosan/${moduleName}`;
|
|
74
364
|
process.stdout.write(bold(`Adding module "${moduleName}" (${packageName}) …\n`));
|
|
75
365
|
if (eject) {
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -150,6 +150,7 @@ function printHelp() {
|
|
|
150
150
|
\x1b[33mModule Installer:\x1b[0m
|
|
151
151
|
vonosan add <module> Install @vonosan/<module> and update config
|
|
152
152
|
vonosan add <module> --eject Copy module source into src/modules/<module>/
|
|
153
|
+
vonosan add frontend Scaffold Vue + Vite frontend into API-only app
|
|
153
154
|
|
|
154
155
|
\x1b[33mJobs:\x1b[0m
|
|
155
156
|
vonosan jobs:run <name> Execute a named cron job immediately
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vonosan/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Vono Artisan-style scaffolding CLI",
|
|
6
6
|
"repository": {
|
|
@@ -16,8 +16,7 @@
|
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
|
-
"dist"
|
|
20
|
-
"templates"
|
|
19
|
+
"dist"
|
|
21
20
|
],
|
|
22
21
|
"scripts": {
|
|
23
22
|
"build": "tsc -p tsconfig.json",
|
|
@@ -38,6 +37,6 @@
|
|
|
38
37
|
"@types/node": "25.5.2",
|
|
39
38
|
"fast-check": "4.6.0",
|
|
40
39
|
"typescript": "5.8.3",
|
|
41
|
-
"vonosan": "
|
|
40
|
+
"vonosan": "0.2.5"
|
|
42
41
|
}
|
|
43
42
|
}
|