@moriajs/cli 0.1.1 → 0.2.0
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/.turbo/turbo-build.log +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -9
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
- package/src/index.ts +96 -9
package/.turbo/turbo-build.log
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,eAAO,MAAM,GAAG,mBAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,8 +6,31 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { cac } from 'cac';
|
|
8
8
|
import pc from 'picocolors';
|
|
9
|
-
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import { pathToFileURL } from 'node:url';
|
|
11
|
+
import fs from 'node:fs';
|
|
12
|
+
const VERSION = '0.1.1';
|
|
10
13
|
export const cli = cac('moria');
|
|
14
|
+
/**
|
|
15
|
+
* Attempt to load moria.config.ts from the current working directory.
|
|
16
|
+
*/
|
|
17
|
+
async function loadConfig() {
|
|
18
|
+
const cwd = process.cwd();
|
|
19
|
+
const configFiles = ['moria.config.ts', 'moria.config.js', 'moria.config.mjs'];
|
|
20
|
+
for (const file of configFiles) {
|
|
21
|
+
const configPath = path.resolve(cwd, file);
|
|
22
|
+
if (fs.existsSync(configPath)) {
|
|
23
|
+
try {
|
|
24
|
+
const mod = await import(pathToFileURL(configPath).href);
|
|
25
|
+
return mod.default ?? mod;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Config load failed, continue
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
11
34
|
// ─── dev ────────────────────────────────────────────
|
|
12
35
|
cli
|
|
13
36
|
.command('dev', 'Start the development server with HMR')
|
|
@@ -16,10 +39,33 @@ cli
|
|
|
16
39
|
.action(async (options) => {
|
|
17
40
|
console.log(pc.cyan('🏔️ MoriaJS') + pc.dim(` v${VERSION}`));
|
|
18
41
|
console.log(pc.green('Starting dev server...'));
|
|
19
|
-
console.log(pc.dim(` → http://${options.host}:${options.port}`));
|
|
20
42
|
console.log();
|
|
21
|
-
|
|
22
|
-
|
|
43
|
+
try {
|
|
44
|
+
const { createApp } = await import('@moriajs/core');
|
|
45
|
+
const userConfig = await loadConfig();
|
|
46
|
+
const app = await createApp({
|
|
47
|
+
config: {
|
|
48
|
+
...userConfig,
|
|
49
|
+
mode: 'development',
|
|
50
|
+
rootDir: process.cwd(),
|
|
51
|
+
server: {
|
|
52
|
+
...(userConfig.server ?? {}),
|
|
53
|
+
port: Number(options.port),
|
|
54
|
+
host: options.host,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
const address = await app.listen();
|
|
59
|
+
console.log();
|
|
60
|
+
console.log(pc.green(' ✓ ') + pc.bold('Dev server ready'));
|
|
61
|
+
console.log(pc.dim(` → ${address}`));
|
|
62
|
+
console.log(pc.dim(' → HMR enabled via Vite'));
|
|
63
|
+
console.log();
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
console.error(pc.red('Failed to start dev server:'), err);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
23
69
|
});
|
|
24
70
|
// ─── build ──────────────────────────────────────────
|
|
25
71
|
cli
|
|
@@ -28,8 +74,25 @@ cli
|
|
|
28
74
|
console.log(pc.cyan('🏔️ MoriaJS') + pc.dim(` v${VERSION}`));
|
|
29
75
|
console.log(pc.green('Building for production...'));
|
|
30
76
|
console.log();
|
|
31
|
-
|
|
32
|
-
|
|
77
|
+
try {
|
|
78
|
+
const { build } = await import('vite');
|
|
79
|
+
// Client build
|
|
80
|
+
console.log(pc.dim(' → Building client bundle...'));
|
|
81
|
+
await build({
|
|
82
|
+
root: process.cwd(),
|
|
83
|
+
build: {
|
|
84
|
+
outDir: 'dist/client',
|
|
85
|
+
emptyOutDir: true,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
console.log(pc.green(' ✓ ') + 'Client build complete');
|
|
89
|
+
console.log();
|
|
90
|
+
console.log(pc.green(' ✓ ') + pc.bold('Build complete'));
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
console.error(pc.red('Build failed:'), err);
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
33
96
|
});
|
|
34
97
|
// ─── start ──────────────────────────────────────────
|
|
35
98
|
cli
|
|
@@ -38,10 +101,29 @@ cli
|
|
|
38
101
|
.action(async (options) => {
|
|
39
102
|
console.log(pc.cyan('🏔️ MoriaJS') + pc.dim(` v${VERSION}`));
|
|
40
103
|
console.log(pc.green('Starting production server...'));
|
|
41
|
-
console.log(pc.dim(` → port ${options.port}`));
|
|
42
104
|
console.log();
|
|
43
|
-
|
|
44
|
-
|
|
105
|
+
try {
|
|
106
|
+
const { createApp } = await import('@moriajs/core');
|
|
107
|
+
const userConfig = await loadConfig();
|
|
108
|
+
const app = await createApp({
|
|
109
|
+
config: {
|
|
110
|
+
...userConfig,
|
|
111
|
+
mode: 'production',
|
|
112
|
+
rootDir: process.cwd(),
|
|
113
|
+
server: {
|
|
114
|
+
...(userConfig.server ?? {}),
|
|
115
|
+
port: Number(options.port),
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
const address = await app.listen();
|
|
120
|
+
console.log(pc.green(' ✓ ') + pc.bold('Production server running'));
|
|
121
|
+
console.log(pc.dim(` → ${address}`));
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
console.error(pc.red('Failed to start server:'), err);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
45
127
|
});
|
|
46
128
|
// ─── generate ───────────────────────────────────────
|
|
47
129
|
cli
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
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": "@moriajs/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MoriaJS CLI — dev, build, and generate commands",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"cac": "^6.7.0",
|
|
19
|
-
"picocolors": "^1.1.0"
|
|
19
|
+
"picocolors": "^1.1.0",
|
|
20
|
+
"vite": "^6.0.0",
|
|
21
|
+
"@moriajs/core": "0.2.0"
|
|
20
22
|
},
|
|
21
23
|
"devDependencies": {
|
|
22
24
|
"typescript": "^5.7.0",
|
package/src/index.ts
CHANGED
|
@@ -7,11 +7,36 @@
|
|
|
7
7
|
|
|
8
8
|
import { cac } from 'cac';
|
|
9
9
|
import pc from 'picocolors';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import { pathToFileURL } from 'node:url';
|
|
12
|
+
import fs from 'node:fs';
|
|
10
13
|
|
|
11
|
-
const VERSION = '0.
|
|
14
|
+
const VERSION = '0.1.1';
|
|
12
15
|
|
|
13
16
|
export const cli = cac('moria');
|
|
14
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Attempt to load moria.config.ts from the current working directory.
|
|
20
|
+
*/
|
|
21
|
+
async function loadConfig(): Promise<Record<string, unknown>> {
|
|
22
|
+
const cwd = process.cwd();
|
|
23
|
+
const configFiles = ['moria.config.ts', 'moria.config.js', 'moria.config.mjs'];
|
|
24
|
+
|
|
25
|
+
for (const file of configFiles) {
|
|
26
|
+
const configPath = path.resolve(cwd, file);
|
|
27
|
+
if (fs.existsSync(configPath)) {
|
|
28
|
+
try {
|
|
29
|
+
const mod = await import(pathToFileURL(configPath).href);
|
|
30
|
+
return mod.default ?? mod;
|
|
31
|
+
} catch {
|
|
32
|
+
// Config load failed, continue
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return {};
|
|
38
|
+
}
|
|
39
|
+
|
|
15
40
|
// ─── dev ────────────────────────────────────────────
|
|
16
41
|
cli
|
|
17
42
|
.command('dev', 'Start the development server with HMR')
|
|
@@ -20,11 +45,35 @@ cli
|
|
|
20
45
|
.action(async (options) => {
|
|
21
46
|
console.log(pc.cyan('🏔️ MoriaJS') + pc.dim(` v${VERSION}`));
|
|
22
47
|
console.log(pc.green('Starting dev server...'));
|
|
23
|
-
console.log(pc.dim(` → http://${options.host}:${options.port}`));
|
|
24
48
|
console.log();
|
|
25
49
|
|
|
26
|
-
|
|
27
|
-
|
|
50
|
+
try {
|
|
51
|
+
const { createApp } = await import('@moriajs/core');
|
|
52
|
+
const userConfig = await loadConfig();
|
|
53
|
+
|
|
54
|
+
const app = await createApp({
|
|
55
|
+
config: {
|
|
56
|
+
...userConfig,
|
|
57
|
+
mode: 'development',
|
|
58
|
+
rootDir: process.cwd(),
|
|
59
|
+
server: {
|
|
60
|
+
...(userConfig.server as Record<string, unknown> ?? {}),
|
|
61
|
+
port: Number(options.port),
|
|
62
|
+
host: options.host,
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const address = await app.listen();
|
|
68
|
+
console.log();
|
|
69
|
+
console.log(pc.green(' ✓ ') + pc.bold('Dev server ready'));
|
|
70
|
+
console.log(pc.dim(` → ${address}`));
|
|
71
|
+
console.log(pc.dim(' → HMR enabled via Vite'));
|
|
72
|
+
console.log();
|
|
73
|
+
} catch (err) {
|
|
74
|
+
console.error(pc.red('Failed to start dev server:'), err);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
28
77
|
});
|
|
29
78
|
|
|
30
79
|
// ─── build ──────────────────────────────────────────
|
|
@@ -35,8 +84,26 @@ cli
|
|
|
35
84
|
console.log(pc.green('Building for production...'));
|
|
36
85
|
console.log();
|
|
37
86
|
|
|
38
|
-
|
|
39
|
-
|
|
87
|
+
try {
|
|
88
|
+
const { build } = await import('vite');
|
|
89
|
+
|
|
90
|
+
// Client build
|
|
91
|
+
console.log(pc.dim(' → Building client bundle...'));
|
|
92
|
+
await build({
|
|
93
|
+
root: process.cwd(),
|
|
94
|
+
build: {
|
|
95
|
+
outDir: 'dist/client',
|
|
96
|
+
emptyOutDir: true,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
console.log(pc.green(' ✓ ') + 'Client build complete');
|
|
100
|
+
|
|
101
|
+
console.log();
|
|
102
|
+
console.log(pc.green(' ✓ ') + pc.bold('Build complete'));
|
|
103
|
+
} catch (err) {
|
|
104
|
+
console.error(pc.red('Build failed:'), err);
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
40
107
|
});
|
|
41
108
|
|
|
42
109
|
// ─── start ──────────────────────────────────────────
|
|
@@ -46,11 +113,31 @@ cli
|
|
|
46
113
|
.action(async (options) => {
|
|
47
114
|
console.log(pc.cyan('🏔️ MoriaJS') + pc.dim(` v${VERSION}`));
|
|
48
115
|
console.log(pc.green('Starting production server...'));
|
|
49
|
-
console.log(pc.dim(` → port ${options.port}`));
|
|
50
116
|
console.log();
|
|
51
117
|
|
|
52
|
-
|
|
53
|
-
|
|
118
|
+
try {
|
|
119
|
+
const { createApp } = await import('@moriajs/core');
|
|
120
|
+
const userConfig = await loadConfig();
|
|
121
|
+
|
|
122
|
+
const app = await createApp({
|
|
123
|
+
config: {
|
|
124
|
+
...userConfig,
|
|
125
|
+
mode: 'production',
|
|
126
|
+
rootDir: process.cwd(),
|
|
127
|
+
server: {
|
|
128
|
+
...(userConfig.server as Record<string, unknown> ?? {}),
|
|
129
|
+
port: Number(options.port),
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
const address = await app.listen();
|
|
135
|
+
console.log(pc.green(' ✓ ') + pc.bold('Production server running'));
|
|
136
|
+
console.log(pc.dim(` → ${address}`));
|
|
137
|
+
} catch (err) {
|
|
138
|
+
console.error(pc.red('Failed to start server:'), err);
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
54
141
|
});
|
|
55
142
|
|
|
56
143
|
// ─── generate ───────────────────────────────────────
|