@jogak/cli 0.1.0-alpha.6 → 0.1.0-alpha.7

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/cli.js CHANGED
@@ -4,6 +4,7 @@ import { existsSync } from 'node:fs';
4
4
  import { generateRegistryFile } from '@jogak/core/build';
5
5
  import { runDevCommand } from './commands/dev.js';
6
6
  import { runBuildCommand } from './commands/build.js';
7
+ import { loadJogakConfig } from './config-loader.js';
7
8
  function parseArgs(argv) {
8
9
  const positional = [];
9
10
  const flags = {};
@@ -43,30 +44,28 @@ function resolveTsConfig(cwd, v) {
43
44
  return existsSync(candidate) ? candidate : undefined;
44
45
  }
45
46
  function parseHostFlag(v) {
46
- if (v === undefined)
47
- return 'localhost';
48
47
  if (v === true)
49
48
  return true; // bare --host → enable
50
49
  if (v === 'true')
51
50
  return true;
52
51
  if (v === 'false')
53
52
  return false;
54
- return v;
53
+ if (typeof v === 'string')
54
+ return v;
55
+ return 'localhost';
55
56
  }
56
57
  function parseOpenFlag(v) {
57
- if (v === undefined)
58
- return false;
59
58
  if (v === true)
60
59
  return true;
61
60
  if (v === 'true')
62
61
  return true;
63
62
  if (v === 'false')
64
63
  return false;
65
- return v;
64
+ if (typeof v === 'string')
65
+ return v;
66
+ return false;
66
67
  }
67
68
  function parsePortFlag(v) {
68
- if (typeof v !== 'string')
69
- return 5173;
70
69
  const n = Number(v);
71
70
  if (!Number.isFinite(n)) {
72
71
  process.stderr.write(`[jogak] invalid --port: ${v}\n`);
@@ -75,8 +74,6 @@ function parsePortFlag(v) {
75
74
  return n;
76
75
  }
77
76
  function parseMinifyFlag(v) {
78
- if (v === undefined)
79
- return 'esbuild';
80
77
  if (v === true)
81
78
  return true;
82
79
  if (v === 'true')
@@ -100,11 +97,42 @@ function parseBoolFlag(v, fallback) {
100
97
  return fallback;
101
98
  }
102
99
  function parseBaseFlag(v) {
103
- const raw = asString(v, './');
104
- if (!raw.startsWith('/') && raw !== './' && !raw.startsWith('./')) {
105
- process.stderr.write(`[jogak] warning: --base "${raw}" does not start with '/' or './' — typo?\n`);
100
+ if (!v.startsWith('/') && v !== './' && !v.startsWith('./')) {
101
+ process.stderr.write(`[jogak] warning: --base "${v}" does not start with '/' or './' — typo?\n`);
106
102
  }
107
- return raw;
103
+ return v;
104
+ }
105
+ /**
106
+ * 알파.7: `--global-css` 플래그 normalizer.
107
+ * - 미지정 → fileValue 그대로 (config 또는 undefined)
108
+ * - bare `--global-css` 또는 `--global-css true` → true
109
+ * - `--global-css false` → false
110
+ * - `--global-css <path>` → 명시 경로 (string 1개)
111
+ */
112
+ function parseGlobalCssFlag(v, fileValue) {
113
+ if (v === undefined)
114
+ return fileValue;
115
+ if (v === true)
116
+ return true;
117
+ if (v === 'true')
118
+ return true;
119
+ if (v === 'false')
120
+ return false;
121
+ return v;
122
+ }
123
+ /**
124
+ * 알파.7: `--preview-isolation` 플래그 normalizer.
125
+ * - 미지정 → fileValue ?? 'none'
126
+ * - 'none'|'shadow'|'iframe' → 그대로
127
+ * - 그 외 → exit 1
128
+ */
129
+ function parsePreviewIsolationFlag(v, fileValue) {
130
+ if (v === undefined || v === true)
131
+ return fileValue ?? 'none';
132
+ if (v === 'none' || v === 'shadow' || v === 'iframe')
133
+ return v;
134
+ process.stderr.write(`[jogak] invalid --preview-isolation: ${v} (expected none|shadow|iframe)\n`);
135
+ process.exit(1);
108
136
  }
109
137
  function help() {
110
138
  process.stdout.write(`jogak — component showcase
@@ -115,10 +143,13 @@ USAGE
115
143
  jogak build [options] 쇼케이스 정적 빌드
116
144
 
117
145
  COMMON OPTIONS
146
+ --config <path> jogak.config 경로 (기본: '<cwd>/jogak.config.{ts,mts,mjs,js,json}' 자동 감지)
118
147
  --patterns <glob[,glob...]> 쇼케이스 파일 글롭 (기본: 'src/**/*.jogak.ts,src/**/*.jogak.tsx')
119
148
  --cwd <path> 사용자 프로젝트 루트 (기본: process.cwd())
120
149
  --ts-config <path> tsconfig 경로 (기본: '<cwd>/tsconfig.json' 자동 감지)
121
150
  --code-theme <name> prism 테마 (기본: 'vsDark')
151
+ --global-css [true|false|path] 사용자 globalCss 적용 (알파.7, 기본: jogak.config 또는 false)
152
+ --preview-isolation <mode> preview 격리 (none|shadow|iframe, 알파.7, 기본: 'none')
122
153
  --help 도움말 출력
123
154
 
124
155
  generate OPTIONS
@@ -138,11 +169,17 @@ build OPTIONS
138
169
  --emit-registry build 도중 .jogak/registry.ts도 생성 (기본: false)
139
170
  `);
140
171
  }
141
- async function runGenerate(args) {
172
+ async function runGenerate(args, fileConfig) {
142
173
  const cwd = resolve(asString(args.flags['cwd'], process.cwd()));
143
- const patterns = parsePatterns(args.flags['patterns']);
174
+ const cliPatterns = args.flags['patterns'];
175
+ const patterns = cliPatterns !== undefined
176
+ ? parsePatterns(cliPatterns)
177
+ : fileConfig.patterns ?? ['src/**/*.jogak.ts', 'src/**/*.jogak.tsx'];
144
178
  const outFile = asString(args.flags['out'], '.jogak/registry.ts');
145
- const tsConfigFilePath = resolveTsConfig(cwd, args.flags['ts-config']);
179
+ const tsConfigFlag = args.flags['ts-config'];
180
+ const tsConfigFilePath = typeof tsConfigFlag === 'string'
181
+ ? resolveTsConfig(cwd, tsConfigFlag)
182
+ : fileConfig.tsConfigFilePath ?? resolveTsConfig(cwd, undefined);
146
183
  const start = Date.now();
147
184
  const result = await generateRegistryFile(tsConfigFilePath !== undefined
148
185
  ? { patterns, cwd, outFile, tsConfigFilePath }
@@ -150,37 +187,92 @@ async function runGenerate(args) {
150
187
  const elapsed = Date.now() - start;
151
188
  process.stdout.write(`[jogak] generated ${result.outFile} (${result.fileCount.toString()} files, ${elapsed.toString()}ms)\n`);
152
189
  }
153
- function parseDevArgs(parsed) {
190
+ function parseDevArgs(parsed, fileConfig) {
154
191
  const cwd = resolve(asString(parsed.flags['cwd'], process.cwd()));
155
- const patterns = parsePatterns(parsed.flags['patterns']);
156
- const tsConfigFilePath = resolveTsConfig(cwd, parsed.flags['ts-config']);
192
+ const cliPatterns = parsed.flags['patterns'];
193
+ const patterns = cliPatterns !== undefined
194
+ ? parsePatterns(cliPatterns)
195
+ : fileConfig.patterns ?? ['src/**/*.jogak.ts', 'src/**/*.jogak.tsx'];
196
+ const tsConfigFlag = parsed.flags['ts-config'];
197
+ const tsConfigFilePath = typeof tsConfigFlag === 'string'
198
+ ? resolveTsConfig(cwd, tsConfigFlag)
199
+ : fileConfig.tsConfigFilePath ?? resolveTsConfig(cwd, undefined);
200
+ const portFlag = parsed.flags['port'];
201
+ const port = typeof portFlag === 'string'
202
+ ? parsePortFlag(portFlag)
203
+ : fileConfig.port ?? 5173;
204
+ const hostFlag = parsed.flags['host'];
205
+ const host = hostFlag !== undefined
206
+ ? parseHostFlag(hostFlag)
207
+ : fileConfig.host ?? 'localhost';
208
+ const openFlag = parsed.flags['open'];
209
+ const open = openFlag !== undefined
210
+ ? parseOpenFlag(openFlag)
211
+ : fileConfig.open ?? false;
212
+ const codeThemeFlag = parsed.flags['code-theme'];
213
+ const codeTheme = typeof codeThemeFlag === 'string'
214
+ ? codeThemeFlag
215
+ : fileConfig.codeTheme ?? 'vsDark';
216
+ const globalCss = parseGlobalCssFlag(parsed.flags['global-css'], fileConfig.globalCss);
157
217
  return {
158
218
  patterns,
159
- port: parsePortFlag(parsed.flags['port']),
160
- host: parseHostFlag(parsed.flags['host']),
161
- open: parseOpenFlag(parsed.flags['open']),
219
+ port,
220
+ host,
221
+ open,
162
222
  cwd,
163
223
  tsConfigFilePath,
164
- codeTheme: asString(parsed.flags['code-theme'], 'vsDark'),
224
+ codeTheme,
165
225
  noGenerate: parseBoolFlag(parsed.flags['no-generate'], false),
226
+ // exactOptionalPropertyTypes 컨벤션: undefined는 spread로 분기.
227
+ ...(globalCss !== undefined ? { globalCss } : {}),
228
+ previewIsolation: parsePreviewIsolationFlag(parsed.flags['preview-isolation'], fileConfig.previewIsolation),
166
229
  };
167
230
  }
168
- function parseBuildArgs(parsed) {
231
+ function parseBuildArgs(parsed, fileConfig) {
169
232
  const cwd = resolve(asString(parsed.flags['cwd'], process.cwd()));
170
- const patterns = parsePatterns(parsed.flags['patterns']);
171
- const tsConfigFilePath = resolveTsConfig(cwd, parsed.flags['ts-config']);
172
- const outDirRaw = asString(parsed.flags['out-dir'], 'jogak-static');
233
+ const cliPatterns = parsed.flags['patterns'];
234
+ const patterns = cliPatterns !== undefined
235
+ ? parsePatterns(cliPatterns)
236
+ : fileConfig.patterns ?? ['src/**/*.jogak.ts', 'src/**/*.jogak.tsx'];
237
+ const tsConfigFlag = parsed.flags['ts-config'];
238
+ const tsConfigFilePath = typeof tsConfigFlag === 'string'
239
+ ? resolveTsConfig(cwd, tsConfigFlag)
240
+ : fileConfig.tsConfigFilePath ?? resolveTsConfig(cwd, undefined);
241
+ const outDirFlag = parsed.flags['out-dir'];
242
+ const outDirRaw = typeof outDirFlag === 'string'
243
+ ? outDirFlag
244
+ : fileConfig.outDir ?? 'jogak-static';
173
245
  const outDir = resolve(cwd, outDirRaw);
246
+ const baseFlag = parsed.flags['base'];
247
+ const base = typeof baseFlag === 'string'
248
+ ? parseBaseFlag(baseFlag)
249
+ : fileConfig.base ?? './';
250
+ const minifyFlag = parsed.flags['minify'];
251
+ const minify = minifyFlag !== undefined
252
+ ? parseMinifyFlag(minifyFlag)
253
+ : fileConfig.minify ?? 'esbuild';
254
+ const sourcemapFlag = parsed.flags['sourcemap'];
255
+ const sourcemap = sourcemapFlag !== undefined
256
+ ? parseBoolFlag(sourcemapFlag, false)
257
+ : fileConfig.sourcemap ?? false;
258
+ const codeThemeFlag = parsed.flags['code-theme'];
259
+ const codeTheme = typeof codeThemeFlag === 'string'
260
+ ? codeThemeFlag
261
+ : fileConfig.codeTheme ?? 'vsDark';
262
+ const globalCss = parseGlobalCssFlag(parsed.flags['global-css'], fileConfig.globalCss);
174
263
  return {
175
264
  patterns,
176
265
  outDir,
177
- base: parseBaseFlag(parsed.flags['base']),
266
+ base,
178
267
  cwd,
179
268
  tsConfigFilePath,
180
- codeTheme: asString(parsed.flags['code-theme'], 'vsDark'),
181
- minify: parseMinifyFlag(parsed.flags['minify']),
182
- sourcemap: parseBoolFlag(parsed.flags['sourcemap'], false),
269
+ codeTheme,
270
+ minify,
271
+ sourcemap,
183
272
  emitRegistry: parseBoolFlag(parsed.flags['emit-registry'], false),
273
+ // exactOptionalPropertyTypes 컨벤션: undefined는 spread로 분기.
274
+ ...(globalCss !== undefined ? { globalCss } : {}),
275
+ previewIsolation: parsePreviewIsolationFlag(parsed.flags['preview-isolation'], fileConfig.previewIsolation),
184
276
  };
185
277
  }
186
278
  async function main() {
@@ -192,16 +284,23 @@ async function main() {
192
284
  const command = argv[0];
193
285
  const rest = argv.slice(1);
194
286
  const parsed = parseArgs(rest);
287
+ // 알파.7: jogak.config.* 자동 발견 + 로드. CLI 플래그가 override.
288
+ const cwd = resolve(asString(parsed.flags['cwd'], process.cwd()));
289
+ const explicitConfig = typeof parsed.flags['config'] === 'string' ? parsed.flags['config'] : undefined;
290
+ const { path: configPath, config: fileConfig } = await loadJogakConfig(cwd, explicitConfig);
291
+ if (configPath !== undefined) {
292
+ process.stdout.write(`[jogak] config loaded: ${configPath}\n`);
293
+ }
195
294
  if (command === 'generate' || command === 'gen') {
196
- await runGenerate(parsed);
295
+ await runGenerate(parsed, fileConfig);
197
296
  return;
198
297
  }
199
298
  if (command === 'dev') {
200
- await runDevCommand(parseDevArgs(parsed));
299
+ await runDevCommand(parseDevArgs(parsed, fileConfig));
201
300
  return;
202
301
  }
203
302
  if (command === 'build') {
204
- await runBuildCommand(parseBuildArgs(parsed));
303
+ await runBuildCommand(parseBuildArgs(parsed, fileConfig));
205
304
  return;
206
305
  }
207
306
  process.stderr.write(`Unknown command: ${command ?? ''}\n\n`);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,9 @@ export interface BuildCliArgs {
14
14
  readonly minify: boolean | 'esbuild' | 'terser';
15
15
  readonly sourcemap: boolean;
16
16
  readonly emitRegistry: boolean;
17
+ /** 알파.7: 사용자 globalCss 옵션 (config 또는 CLI flag로 결정). */
18
+ readonly globalCss?: boolean | string | readonly string[];
19
+ /** 알파.7: preview 격리 모드. */
20
+ readonly previewIsolation: 'none' | 'shadow' | 'iframe';
17
21
  }
18
22
  export declare function runBuildCommand(args: BuildCliArgs): Promise<void>;
@@ -33,6 +33,9 @@ export async function runBuildCommand(args) {
33
33
  ...(args.tsConfigFilePath !== undefined
34
34
  ? { tsConfigFilePath: args.tsConfigFilePath }
35
35
  : {}),
36
+ // 알파.7: host 통로로 plugin 옵션 전달.
37
+ ...(args.globalCss !== undefined ? { globalCss: args.globalCss } : {}),
38
+ previewIsolation: args.previewIsolation,
36
39
  };
37
40
  const result = await runHost(buildOptions);
38
41
  process.stdout.write(`[jogak] build done — ${result.outDir} (${result.assetCount.toString()} files, ${result.totalBytes.toString()} bytes, ${result.elapsedMs.toString()}ms)\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAKxD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAcxC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAkB;IACtD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,oBAAoB,CACxB,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACjC,CAAC,CAAC;gBACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,oBAAoB;gBAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aACxC;YACH,CAAC,CAAC;gBACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,oBAAoB;aAC9B,CACN,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAsB;QACtC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,GAAG;QAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC7C,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;IAED,MAAM,MAAM,GAAgB,MAAM,OAAO,CAAC,YAAY,CAAC,CAAA;IAEvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAC3J,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAKxD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAkBxC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAkB;IACtD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,oBAAoB,CACxB,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACjC,CAAC,CAAC;gBACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,oBAAoB;gBAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aACxC;YACH,CAAC,CAAC;gBACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,oBAAoB;aAC9B,CACN,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAsB;QACtC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,GAAG;QAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC7C,CAAC,CAAC,EAAE,CAAC;QACP,+BAA+B;QAC/B,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAA;IAED,MAAM,MAAM,GAAgB,MAAM,OAAO,CAAC,YAAY,CAAC,CAAA;IAEvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAC3J,CAAA;AACH,CAAC"}
@@ -14,6 +14,10 @@ export interface DevCliArgs {
14
14
  readonly tsConfigFilePath: string | undefined;
15
15
  readonly codeTheme: string;
16
16
  readonly noGenerate: boolean;
17
+ /** 알파.7: 사용자 globalCss 옵션 (config 또는 CLI flag로 결정). */
18
+ readonly globalCss?: boolean | string | readonly string[];
19
+ /** 알파.7: preview 격리 모드. */
20
+ readonly previewIsolation: 'none' | 'shadow' | 'iframe';
17
21
  }
18
22
  /**
19
23
  * dev 모드 실행.
@@ -52,6 +52,9 @@ export async function runDevCommand(args) {
52
52
  ...(args.tsConfigFilePath !== undefined
53
53
  ? { tsConfigFilePath: args.tsConfigFilePath }
54
54
  : {}),
55
+ // 알파.7: host 통로로 plugin 옵션 전달.
56
+ ...(args.globalCss !== undefined ? { globalCss: args.globalCss } : {}),
57
+ previewIsolation: args.previewIsolation,
55
58
  };
56
59
  const handle = await runHost(devOptions);
57
60
  handle.printUrls();
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `jogak.config.{ts,mts,mjs,js,json}` loader.
3
+ *
4
+ * spec: `_workspace/01_arch/api-contracts.md` §4 — Vite의 `loadConfigFromFile`
5
+ * (esbuild 기반 transpile + dynamic import)을 그대로 활용해 zero-dep로 ts/mjs/js/
6
+ * json 모두 처리한다.
7
+ *
8
+ * 발견 우선순위 (cwd 기준):
9
+ * 1. `explicitPath` (CLI `--config <path>`) — 절대 또는 cwd 상대
10
+ * 2. cwd/jogak.config.ts
11
+ * 3. cwd/jogak.config.mts
12
+ * 4. cwd/jogak.config.mjs
13
+ * 5. cwd/jogak.config.js
14
+ * 6. cwd/jogak.config.json
15
+ *
16
+ * 미발견 시 `{ path: undefined, config: {} }`를 반환 — CLI 플래그만으로 동작.
17
+ */
18
+ import type { JogakConfig } from '@jogak/core';
19
+ export interface LoadedJogakConfig {
20
+ /** 로드된 config 절대 경로. 미발견 시 undefined. */
21
+ readonly path: string | undefined;
22
+ /** 사용자 config 객체. 미발견 시 빈 객체 `{}`. */
23
+ readonly config: JogakConfig;
24
+ }
25
+ /**
26
+ * `jogak.config.{ts,mts,mjs,js,json}`을 자동 발견 + 로드.
27
+ *
28
+ * Vite의 `loadConfigFromFile`을 사용해 esbuild 기반 transpile + dynamic import로
29
+ * ts/mjs를 native 처리. user `defineJogakConfig({ ... })`의 default export를 반환.
30
+ *
31
+ * Loader 실패 시(예: 사용자 config 파일에 syntax error) 예외를 throw — main에서
32
+ * exit code 1로 전파.
33
+ */
34
+ export declare function loadJogakConfig(cwd: string, explicitPath: string | undefined): Promise<LoadedJogakConfig>;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * `jogak.config.{ts,mts,mjs,js,json}` loader.
3
+ *
4
+ * spec: `_workspace/01_arch/api-contracts.md` §4 — Vite의 `loadConfigFromFile`
5
+ * (esbuild 기반 transpile + dynamic import)을 그대로 활용해 zero-dep로 ts/mjs/js/
6
+ * json 모두 처리한다.
7
+ *
8
+ * 발견 우선순위 (cwd 기준):
9
+ * 1. `explicitPath` (CLI `--config <path>`) — 절대 또는 cwd 상대
10
+ * 2. cwd/jogak.config.ts
11
+ * 3. cwd/jogak.config.mts
12
+ * 4. cwd/jogak.config.mjs
13
+ * 5. cwd/jogak.config.js
14
+ * 6. cwd/jogak.config.json
15
+ *
16
+ * 미발견 시 `{ path: undefined, config: {} }`를 반환 — CLI 플래그만으로 동작.
17
+ */
18
+ import { existsSync, readFileSync } from 'node:fs';
19
+ import { extname, resolve } from 'node:path';
20
+ const CANDIDATE_FILES = [
21
+ 'jogak.config.ts',
22
+ 'jogak.config.mts',
23
+ 'jogak.config.mjs',
24
+ 'jogak.config.js',
25
+ 'jogak.config.json',
26
+ ];
27
+ /**
28
+ * `jogak.config.{ts,mts,mjs,js,json}`을 자동 발견 + 로드.
29
+ *
30
+ * Vite의 `loadConfigFromFile`을 사용해 esbuild 기반 transpile + dynamic import로
31
+ * ts/mjs를 native 처리. user `defineJogakConfig({ ... })`의 default export를 반환.
32
+ *
33
+ * Loader 실패 시(예: 사용자 config 파일에 syntax error) 예외를 throw — main에서
34
+ * exit code 1로 전파.
35
+ */
36
+ export async function loadJogakConfig(cwd, explicitPath) {
37
+ // 1. 명시 path 우선
38
+ let resolvedPath;
39
+ if (explicitPath !== undefined) {
40
+ resolvedPath = resolve(cwd, explicitPath);
41
+ if (!existsSync(resolvedPath)) {
42
+ throw new Error(`[jogak] --config path not found: ${resolvedPath}`);
43
+ }
44
+ }
45
+ else {
46
+ // 2. 자동 발견 — 첫 hit만 사용
47
+ for (const candidate of CANDIDATE_FILES) {
48
+ const abs = resolve(cwd, candidate);
49
+ if (existsSync(abs)) {
50
+ resolvedPath = abs;
51
+ break;
52
+ }
53
+ }
54
+ }
55
+ // 3. 미발견 → 빈 config (CLI 플래그만으로 동작)
56
+ if (resolvedPath === undefined) {
57
+ return { path: undefined, config: {} };
58
+ }
59
+ // 3a. JSON은 vite의 loadConfigFromFile이 처리하지 않으므로 직접 파싱.
60
+ if (extname(resolvedPath) === '.json') {
61
+ const raw = readFileSync(resolvedPath, 'utf8');
62
+ let parsed;
63
+ try {
64
+ parsed = JSON.parse(raw);
65
+ }
66
+ catch (err) {
67
+ const m = err instanceof Error ? err.message : String(err);
68
+ throw new Error(`[jogak] failed to parse JSON config ${resolvedPath}: ${m}`);
69
+ }
70
+ if (typeof parsed !== 'object' || parsed === null) {
71
+ throw new Error(`[jogak] config file ${resolvedPath} default export is not an object`);
72
+ }
73
+ return { path: resolvedPath, config: parsed };
74
+ }
75
+ // 3b. ts/mts/mjs/js — Vite의 loadConfigFromFile (esbuild + dynamic import).
76
+ // ConfigEnv는 jogak 명령에 따라 다르게 줘도 되지만, 본 함수는 vite UserConfig가
77
+ // 아닌 JogakConfig 형태로 export하므로 ConfigEnv를 사용자가 분기에 사용할 가능성
78
+ // 거의 없음 — vite signature 충족용으로 'build' 고정.
79
+ const vite = await import('vite');
80
+ let result;
81
+ try {
82
+ result = await vite.loadConfigFromFile({ command: 'build', mode: 'production' }, resolvedPath, cwd);
83
+ }
84
+ catch (err) {
85
+ // vite는 non-object default export 등을 자체 메시지로 throw — 메시지를 jogak
86
+ // prefix로 감싸 상위에서 일관 처리하게 한다.
87
+ const m = err instanceof Error ? err.message : String(err);
88
+ throw new Error(`[jogak] failed to load config ${resolvedPath}: ${m}`);
89
+ }
90
+ if (result === null) {
91
+ // existsSync로 위에서 검증했는데 vite가 null을 반환 — vite 측 로직 변경 시
92
+ // safe fallback. 빈 config 반환.
93
+ return { path: resolvedPath, config: {} };
94
+ }
95
+ // vite는 result.config를 UserConfig로 cast하지만, 실제로는 사용자 default
96
+ // export 객체가 그대로 전달됨. JogakConfig로 cast.
97
+ const rawConfig = result.config;
98
+ if (typeof rawConfig !== 'object' || rawConfig === null) {
99
+ throw new Error(`[jogak] config file ${resolvedPath} default export is not an object`);
100
+ }
101
+ return { path: resolvedPath, config: rawConfig };
102
+ }
103
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jogak/cli",
3
- "version": "0.1.0-alpha.6",
3
+ "version": "0.1.0-alpha.7",
4
4
  "description": "jogak dev / build / generate — CLI for the Jogak component showcase.",
5
5
  "keywords": [
6
6
  "jogak",
@@ -43,15 +43,18 @@
43
43
  "dependencies": {
44
44
  "vite": "^6.0.0",
45
45
  "@vitejs/plugin-react": "^4.3.0",
46
- "@jogak/core": "0.1.0-alpha.6",
47
- "@jogak/ui": "0.1.0-alpha.6"
46
+ "@jogak/core": "0.1.0-alpha.7",
47
+ "@jogak/ui": "0.1.0-alpha.7"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/node": "^20.14.0",
51
- "typescript": "^5.5.0"
51
+ "typescript": "^5.5.0",
52
+ "vitest": "^2.0.0"
52
53
  },
53
54
  "scripts": {
54
55
  "build": "tsc -p tsconfig.json",
55
- "typecheck": "tsc --noEmit"
56
+ "typecheck": "tsc --noEmit",
57
+ "test": "vitest run",
58
+ "test:watch": "vitest"
56
59
  }
57
60
  }