@jogak/cli 0.1.0-alpha.1 → 0.1.0-alpha.10.2
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/CHANGELOG.md +112 -0
- package/dist/cli.js +150 -35
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.d.ts +4 -0
- package/dist/commands/build.js +3 -0
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/dev.d.ts +16 -11
- package/dist/commands/dev.js +67 -32
- package/dist/commands/dev.js.map +1 -1
- package/dist/config-loader.d.ts +34 -0
- package/dist/config-loader.js +103 -0
- package/dist/config-loader.js.map +1 -0
- package/dist/load-adapter.d.ts +12 -0
- package/dist/load-adapter.js +60 -0
- package/dist/load-adapter.js.map +1 -0
- package/package.json +8 -5
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,118 @@ All notable changes to Jogak packages are documented here. The repository follow
|
|
|
5
5
|
|
|
6
6
|
Version numbers apply to all packages in the workspace (synchronized release).
|
|
7
7
|
|
|
8
|
+
## [0.1.0-alpha.10.2] — 2026-05-09
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **vitest.workspace.ts**: 알파.10에서 7개 패키지 디렉토리를 삭제했지만 `vitest.workspace.ts`가 여전히 `packages/react`, `packages/next`, `packages/web-components`를 참조해 `pnpm test` 시 startup error. core/ui/cli 3개로 정리.
|
|
13
|
+
|
|
14
|
+
기타 패키지: source 변경 없음, synchronized release 유지를 위해 버전만 bump.
|
|
15
|
+
|
|
16
|
+
## [0.1.0-alpha.10.1] — 2026-05-09
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **CI typecheck**: 알파.10에서 root `tsconfig.json` references에 `packages/cli`를 추가했으나, `tsc -b`가 cli typecheck 시점에 ui의 `dist/host/index.d.ts` (실제 파일은 없음 — ui는 `noEmit: true`)를 찾으려 해 `Cannot find module '@jogak/ui/host'` 에러 발생. 알파.9 이전처럼 cli는 root references에서 제외 — cli는 자기 `pnpm build` 단계의 `tsc -p tsconfig.json`에서 typecheck됨 (그 시점엔 ui dist가 이미 빌드돼 있음).
|
|
21
|
+
|
|
22
|
+
기타 패키지: source 변경 없음, synchronized release 유지를 위해 버전만 bump.
|
|
23
|
+
|
|
24
|
+
## [0.1.0-alpha.10] — 2026-05-09
|
|
25
|
+
|
|
26
|
+
### Architectural unification — 10 packages → 3 packages
|
|
27
|
+
|
|
28
|
+
알파.9.x에서 분리됐던 4개 빌더 어댑터(`@jogak/vite-adapter`, `@jogak/next-adapter`, `@jogak/webpack-adapter`, `@jogak/standalone-adapter`)와 3개 프레임워크 렌더러(`@jogak/react`, `@jogak/next`, `@jogak/web-components`)를 모두 `@jogak/core`로 통합. 이들의 본질은 build-tool / runtime 통합 코드이며 별도 패키지로 격리할 만한 런타임 substance가 없다는 판단.
|
|
29
|
+
|
|
30
|
+
이제 publish되는 패키지는 `@jogak/core`, `@jogak/ui`, `@jogak/cli` 3개로 축소. 기능은 모두 유지되며 사용자 install도 단순화 (vite/next/webpack peer deps는 모두 `peerDependenciesMeta.optional` 처리 — 사용자가 실제로 쓰는 빌더만 install).
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- **`@jogak/core/adapters/{vite,next,webpack,standalone}`**: 4개 builder adapter subpath. `@jogak/${name}-adapter` 패키지를 흡수.
|
|
35
|
+
- **`@jogak/core/renderers/{react,next,web-components}`**: 3개 framework renderer subpath. 동명 별도 패키지를 흡수.
|
|
36
|
+
- **`@jogak/core/vite-plugin`**: 알파.9.x의 `@jogak/core/vite`를 정식 명명. 기존 `@jogak/core/vite`는 backward-compat alias로 유지.
|
|
37
|
+
- **CLI `loadAdapter`**: 사용자 cwd의 `@jogak/core` exports를 직접 lookup해서 adapter dynamic import. 별도 어댑터 패키지 install 불필요.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- **import 경로 마이그레이션** (사용자 영향):
|
|
42
|
+
- `import ... from '@jogak/react'` → `import ... from '@jogak/core/renderers/react'`
|
|
43
|
+
- `import ... from '@jogak/next'` → `import ... from '@jogak/core/renderers/next'`
|
|
44
|
+
- `import ... from '@jogak/web-components'` → `import ... from '@jogak/core/renderers/web-components'`
|
|
45
|
+
- `import { jogak } from '@jogak/core/vite'` → `import { jogak } from '@jogak/core/vite-plugin'` (구 경로도 동작하지만 deprecated)
|
|
46
|
+
- **`@jogak/core` peer deps 확장**: react/react-dom/next/webpack/webpack-dev-server/webpack-merge/html-webpack-plugin 추가 (모두 optional). 사용자가 쓰는 빌더만 설치.
|
|
47
|
+
- **iframe scaffold 코드** (next-adapter, webpack-adapter): 생성되는 page.tsx/preview-entry.tsx가 `@jogak/core/renderers/react`를 import (이전 `@jogak/react`).
|
|
48
|
+
|
|
49
|
+
### Removed
|
|
50
|
+
|
|
51
|
+
- 7개 패키지 디렉토리 + npm registry deprecate notice:
|
|
52
|
+
- `@jogak/react`, `@jogak/next`, `@jogak/web-components`
|
|
53
|
+
- `@jogak/vite-adapter`, `@jogak/next-adapter`, `@jogak/webpack-adapter`, `@jogak/standalone-adapter`
|
|
54
|
+
- 알파.9.x 사용자는 `npm view @jogak/<pkg> deprecated` 메시지로 마이그레이션 안내 받음.
|
|
55
|
+
|
|
56
|
+
### CI
|
|
57
|
+
|
|
58
|
+
- `release.yml`: pack/publish 목록을 `core/ui/cli` 3개로 축소. Trusted Publisher 신규 등록 zero (3개 모두 알파.9 시점 등록 완료).
|
|
59
|
+
|
|
60
|
+
## [0.1.0-alpha.9.2] — 2026-05-09
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- **CI**: `release.yml`의 publish 단계가 `jogak-next-*.tgz` 글로브 패턴을 사용해 `next` 패키지 publish 시 `next-adapter` tarball까지 매치되어 npm publish가 EUSAGE(다중 tarball)으로 실패. 이로 인해 알파.9.1에서 `core/react/ui/web-components`만 publish되고 `next/cli` 및 4개 어댑터는 publish 안 됨. 정확한 파일명(`jogak-${pkg}-${VERSION}.tgz`)으로 변경.
|
|
65
|
+
|
|
66
|
+
기타 패키지: source 변경 없음, synchronized release 유지를 위해 버전만 bump.
|
|
67
|
+
|
|
68
|
+
## [0.1.0-alpha.9.1] — 2026-05-09
|
|
69
|
+
|
|
70
|
+
### Fixed
|
|
71
|
+
|
|
72
|
+
- **CI**: `release.yml`의 pack 단계가 `core/react/ui/web-components/next/cli`만 포함했고 알파.9에서 신규 추가된 4개 어댑터(`vite-adapter` / `next-adapter` / `webpack-adapter` / `standalone-adapter`)를 누락. v0.1.0-alpha.9 태그로 부분 publish됐으나 어댑터들이 npm에 올라가지 않아 사용자가 import 불가. 4개 어댑터를 pack 목록에 추가 후 alpha.9.1로 재발행.
|
|
73
|
+
|
|
74
|
+
기타 패키지: source 변경 없음, synchronized release 유지를 위해 버전만 bump.
|
|
75
|
+
|
|
76
|
+
## [0.1.0-alpha.9] — 2026-05-09
|
|
77
|
+
|
|
78
|
+
### Added
|
|
79
|
+
|
|
80
|
+
- **`@jogak/vite-adapter`**, **`@jogak/next-adapter`**, **`@jogak/webpack-adapter`**, **`@jogak/standalone-adapter`**: 새 builder-agnostic adapter 패키지군. CLI가 사용자 cwd의 빌더(`next.config`, `vite.config`, `webpack.config`)를 감지하여 해당 adapter를 dynamic import한다. 사용자 컴포넌트는 사용자의 정상 빌더 client에서 평가되므로 utility class compiler(Tailwind v4 등)이 자연스럽게 동작한다.
|
|
81
|
+
- **`@jogak/core`**: `BuilderAdapter` ABI(`adapter.ts`), 빌더 자동 감지(`detectBuilder`, `@jogak/core/server`), preview entry 공통 source(`renderPreviewEntrySource`), postMessage 프로토콜(`@jogak/core/preview-entry/protocol`).
|
|
82
|
+
- **`JogakPluginOptions.userPreviewUrl` / `previewEntryPath`**: adapter dispatch 결과를 host UI iframe src로 주입하는 통로. (`userViteUrl`은 alpha.8 호환을 위해 alias로 유지)
|
|
83
|
+
- **`@jogak/next-adapter`**: Next 14+ App Router에 `<userRoot>/app/jogak-preview/page.tsx` scaffold(`.gitignore` 자동, shutdown cleanup). `next dev` child process spawn + HTTP poll ready 감지. CLI가 사전 생성한 `.jogak/registry.ts`의 entries를 import하여 모듈 평가 시점에 등록.
|
|
84
|
+
- **`@jogak/webpack-adapter`**: `<userRoot>/.jogak/webpack-preview/preview-entry.tsx` scaffold + `webpack-dev-server` programmatic API + `webpack-merge`로 사용자 webpack.config 통합.
|
|
85
|
+
|
|
86
|
+
### Changed
|
|
87
|
+
|
|
88
|
+
- **`@jogak/core`**: `fs`/`path`를 사용하는 server-only utility(`detectBuilder`, `resolveGlobalCssPaths`, `detectUserGlobalCss`)를 `@jogak/core/server` subpath로 분리. client bundle에 Node 모듈이 leak되는 문제를 차단.
|
|
89
|
+
- **`@jogak/core`**, **`@jogak/ui`**, all adapters: CJS 산출물 확장자를 `.js` → `.cjs`로 변경. `"type": "module"` 환경에서 `.js`가 ESM으로 해석되어 발생하던 `exports is not defined in ES module scope` 오류를 해소.
|
|
90
|
+
- **`previewIsolation`** default: `'shadow'` → `'iframe'`. shadow DOM 모드는 일부 portal 라이브러리(Radix 등)와 호환성 이슈가 있어 iframe 격리를 표준으로.
|
|
91
|
+
- **`@jogak/ui`** preview-frame: 기존 `__jogak_setProps__` 직접 호출 프로토콜 → postMessage(`jogak:setProps` / `jogak:rendered` / `jogak:error`)로 통일. 모든 어댑터의 iframe entry가 동일 프로토콜을 따른다.
|
|
92
|
+
- **`@jogak/cli`**: `jogak dev`가 registry 생성 완료를 대기한 뒤 어댑터를 spawn (이전: fire-and-forget). non-vite 어댑터의 scaffold가 비어있는 registry를 import하던 race condition 해소.
|
|
93
|
+
|
|
94
|
+
### Fixed
|
|
95
|
+
|
|
96
|
+
- **`@jogak/cli`**: 어댑터 dynamic import 시 `import.meta.resolve`/`createRequire`가 cli/dist 기준으로 해석돼 사용자 cwd의 어댑터 패키지를 찾지 못하던 문제. `<cwd>/node_modules/@jogak/${name}-adapter/package.json`을 직접 읽어 `exports['.'].import` 경로로 해석하도록 변경.
|
|
97
|
+
- **`@jogak/next-adapter`**: 이전 시도의 `__jogak_preview__` 경로는 Next App Router의 private folder convention(`_`로 시작하는 폴더는 라우팅 제외)과 충돌해 404. `jogak-preview`로 변경.
|
|
98
|
+
|
|
99
|
+
## [0.1.0-alpha.3] — 2026-05-07
|
|
100
|
+
|
|
101
|
+
### Added
|
|
102
|
+
|
|
103
|
+
- **`@jogak/core`**: Vite plugin now auto-detects user `tsconfig.json` (and `tsconfig.app.json` for the Vite scaffold-default split-references layout) and converts `compilerOptions.paths` into `vite resolve.alias`. This makes `runHost`-driven dev/build work zero-config for projects that use path aliases (shadcn/ui's `@/lib/utils` etc.). Without this, `runHost` ignored the user's `vite.config.ts` (`configFile: false`) and any `@/...` import inside a user component failed to resolve.
|
|
104
|
+
- **`JogakPluginOptions.resolveAlias`**: explicit user-provided alias map for cases the auto-extraction can't handle (extends chains, complex glob patterns). Explicit entries override auto-extracted ones. Relative paths are resolved against the user root.
|
|
105
|
+
|
|
106
|
+
### Fixed
|
|
107
|
+
|
|
108
|
+
- Path aliases declared in user `tsconfig` are now respected during `jogak dev` and `jogak build`. Previously, every `*.jogak.tsx` that imported a component using `@/`-style imports would fail with `Failed to resolve import "@/..."` in the browser dev overlay.
|
|
109
|
+
|
|
110
|
+
Other packages: no source changes; version bumped to keep the workspace synchronized.
|
|
111
|
+
|
|
112
|
+
## [0.1.0-alpha.2] — 2026-05-07
|
|
113
|
+
|
|
114
|
+
### Fixed
|
|
115
|
+
|
|
116
|
+
- **`@jogak/ui`**: Published package was missing `src/app/main.tsx` (referenced by `index.html` as the SPA entry), causing `jogak dev` to 404 on the entry script and `jogak build` to fail with `Failed to resolve /src/app/main.tsx`. The `files` field in `package.json` only included `dist/`, but `runHost` uses the package's `index.html` as the Vite root and resolves `/src/app/main.tsx` from source. Added `src/app`, `src/components`, `src/hooks`, `src/index.ts`, `src/vite-env.d.ts` to `files`. Internal `src/host` and `src/examples` remain excluded (host is consumed via the published `dist/host` build; examples are repository-only demos).
|
|
117
|
+
|
|
118
|
+
Other packages: no source changes; version bumped to keep the workspace synchronized.
|
|
119
|
+
|
|
8
120
|
## [0.1.0-alpha.1] — 2026-05-07
|
|
9
121
|
|
|
10
122
|
### Changed
|
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
|
-
|
|
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
|
-
|
|
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,53 @@ function parseBoolFlag(v, fallback) {
|
|
|
100
97
|
return fallback;
|
|
101
98
|
}
|
|
102
99
|
function parseBaseFlag(v) {
|
|
103
|
-
|
|
104
|
-
|
|
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
|
|
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
|
+
* 알파.8: `--preview-isolation` 플래그 normalizer.
|
|
125
|
+
* - 미지정 → fileValue ?? 'iframe' (알파.8 default 변경, 사용자 vite 통합)
|
|
126
|
+
* - 'none'|'shadow'|'iframe' → 그대로
|
|
127
|
+
* - 그 외 → exit 1
|
|
128
|
+
*
|
|
129
|
+
* 'shadow'/'none'은 deprecated — warning 출력.
|
|
130
|
+
*/
|
|
131
|
+
function parsePreviewIsolationFlag(v, fileValue) {
|
|
132
|
+
if (v === undefined || v === true) {
|
|
133
|
+
const resolved = fileValue ?? 'iframe';
|
|
134
|
+
if (resolved === 'shadow' || resolved === 'none') {
|
|
135
|
+
process.stderr.write(`[jogak] previewIsolation '${resolved}' is deprecated in alpha.8 (사용자 utility 미적용 한계). 'iframe' 권장.\n`);
|
|
136
|
+
}
|
|
137
|
+
return resolved;
|
|
138
|
+
}
|
|
139
|
+
if (v === 'none' || v === 'shadow' || v === 'iframe') {
|
|
140
|
+
if (v === 'shadow' || v === 'none') {
|
|
141
|
+
process.stderr.write(`[jogak] previewIsolation '${v}' is deprecated in alpha.8. 'iframe' 권장.\n`);
|
|
142
|
+
}
|
|
143
|
+
return v;
|
|
144
|
+
}
|
|
145
|
+
process.stderr.write(`[jogak] invalid --preview-isolation: ${v} (expected none|shadow|iframe)\n`);
|
|
146
|
+
process.exit(1);
|
|
108
147
|
}
|
|
109
148
|
function help() {
|
|
110
149
|
process.stdout.write(`jogak — component showcase
|
|
@@ -115,10 +154,13 @@ USAGE
|
|
|
115
154
|
jogak build [options] 쇼케이스 정적 빌드
|
|
116
155
|
|
|
117
156
|
COMMON OPTIONS
|
|
157
|
+
--config <path> jogak.config 경로 (기본: '<cwd>/jogak.config.{ts,mts,mjs,js,json}' 자동 감지)
|
|
118
158
|
--patterns <glob[,glob...]> 쇼케이스 파일 글롭 (기본: 'src/**/*.jogak.ts,src/**/*.jogak.tsx')
|
|
119
159
|
--cwd <path> 사용자 프로젝트 루트 (기본: process.cwd())
|
|
120
160
|
--ts-config <path> tsconfig 경로 (기본: '<cwd>/tsconfig.json' 자동 감지)
|
|
121
161
|
--code-theme <name> prism 테마 (기본: 'vsDark')
|
|
162
|
+
--global-css [true|false|path] 사용자 globalCss 적용 (알파.7, 기본: jogak.config 또는 false)
|
|
163
|
+
--preview-isolation <mode> preview 격리 (none|shadow|iframe, 알파.7, 기본: 'none')
|
|
122
164
|
--help 도움말 출력
|
|
123
165
|
|
|
124
166
|
generate OPTIONS
|
|
@@ -138,11 +180,17 @@ build OPTIONS
|
|
|
138
180
|
--emit-registry build 도중 .jogak/registry.ts도 생성 (기본: false)
|
|
139
181
|
`);
|
|
140
182
|
}
|
|
141
|
-
async function runGenerate(args) {
|
|
183
|
+
async function runGenerate(args, fileConfig) {
|
|
142
184
|
const cwd = resolve(asString(args.flags['cwd'], process.cwd()));
|
|
143
|
-
const
|
|
185
|
+
const cliPatterns = args.flags['patterns'];
|
|
186
|
+
const patterns = cliPatterns !== undefined
|
|
187
|
+
? parsePatterns(cliPatterns)
|
|
188
|
+
: fileConfig.patterns ?? ['src/**/*.jogak.ts', 'src/**/*.jogak.tsx'];
|
|
144
189
|
const outFile = asString(args.flags['out'], '.jogak/registry.ts');
|
|
145
|
-
const
|
|
190
|
+
const tsConfigFlag = args.flags['ts-config'];
|
|
191
|
+
const tsConfigFilePath = typeof tsConfigFlag === 'string'
|
|
192
|
+
? resolveTsConfig(cwd, tsConfigFlag)
|
|
193
|
+
: fileConfig.tsConfigFilePath ?? resolveTsConfig(cwd, undefined);
|
|
146
194
|
const start = Date.now();
|
|
147
195
|
const result = await generateRegistryFile(tsConfigFilePath !== undefined
|
|
148
196
|
? { patterns, cwd, outFile, tsConfigFilePath }
|
|
@@ -150,37 +198,97 @@ async function runGenerate(args) {
|
|
|
150
198
|
const elapsed = Date.now() - start;
|
|
151
199
|
process.stdout.write(`[jogak] generated ${result.outFile} (${result.fileCount.toString()} files, ${elapsed.toString()}ms)\n`);
|
|
152
200
|
}
|
|
153
|
-
function parseDevArgs(parsed) {
|
|
201
|
+
function parseDevArgs(parsed, fileConfig) {
|
|
154
202
|
const cwd = resolve(asString(parsed.flags['cwd'], process.cwd()));
|
|
155
|
-
const
|
|
156
|
-
const
|
|
203
|
+
const cliPatterns = parsed.flags['patterns'];
|
|
204
|
+
const patterns = cliPatterns !== undefined
|
|
205
|
+
? parsePatterns(cliPatterns)
|
|
206
|
+
: fileConfig.patterns ?? ['src/**/*.jogak.ts', 'src/**/*.jogak.tsx'];
|
|
207
|
+
const tsConfigFlag = parsed.flags['ts-config'];
|
|
208
|
+
const tsConfigFilePath = typeof tsConfigFlag === 'string'
|
|
209
|
+
? resolveTsConfig(cwd, tsConfigFlag)
|
|
210
|
+
: fileConfig.tsConfigFilePath ?? resolveTsConfig(cwd, undefined);
|
|
211
|
+
const portFlag = parsed.flags['port'];
|
|
212
|
+
const port = typeof portFlag === 'string'
|
|
213
|
+
? parsePortFlag(portFlag)
|
|
214
|
+
: fileConfig.port ?? 5173;
|
|
215
|
+
const hostFlag = parsed.flags['host'];
|
|
216
|
+
const host = hostFlag !== undefined
|
|
217
|
+
? parseHostFlag(hostFlag)
|
|
218
|
+
: fileConfig.host ?? 'localhost';
|
|
219
|
+
const openFlag = parsed.flags['open'];
|
|
220
|
+
const open = openFlag !== undefined
|
|
221
|
+
? parseOpenFlag(openFlag)
|
|
222
|
+
: fileConfig.open ?? false;
|
|
223
|
+
const codeThemeFlag = parsed.flags['code-theme'];
|
|
224
|
+
const codeTheme = typeof codeThemeFlag === 'string'
|
|
225
|
+
? codeThemeFlag
|
|
226
|
+
: fileConfig.codeTheme ?? 'vsDark';
|
|
227
|
+
const globalCss = parseGlobalCssFlag(parsed.flags['global-css'], fileConfig.globalCss);
|
|
157
228
|
return {
|
|
158
229
|
patterns,
|
|
159
|
-
port
|
|
160
|
-
host
|
|
161
|
-
open
|
|
230
|
+
port,
|
|
231
|
+
host,
|
|
232
|
+
open,
|
|
162
233
|
cwd,
|
|
163
234
|
tsConfigFilePath,
|
|
164
|
-
codeTheme
|
|
235
|
+
codeTheme,
|
|
165
236
|
noGenerate: parseBoolFlag(parsed.flags['no-generate'], false),
|
|
237
|
+
// exactOptionalPropertyTypes 컨벤션: undefined는 spread로 분기.
|
|
238
|
+
...(globalCss !== undefined ? { globalCss } : {}),
|
|
239
|
+
previewIsolation: parsePreviewIsolationFlag(parsed.flags['preview-isolation'], fileConfig.previewIsolation),
|
|
240
|
+
// 알파.8 alias (deprecated): userVite — jogak.config.ts에만 노출.
|
|
241
|
+
...(fileConfig.userVite !== undefined ? { userVite: fileConfig.userVite } : {}),
|
|
242
|
+
// 알파.9: builder/builderOptions — jogak.config.ts에만 노출 (CLI flag 미노출).
|
|
243
|
+
...(fileConfig.builder !== undefined ? { builder: fileConfig.builder } : {}),
|
|
244
|
+
...(fileConfig.builderOptions !== undefined ? { builderOptions: fileConfig.builderOptions } : {}),
|
|
166
245
|
};
|
|
167
246
|
}
|
|
168
|
-
function parseBuildArgs(parsed) {
|
|
247
|
+
function parseBuildArgs(parsed, fileConfig) {
|
|
169
248
|
const cwd = resolve(asString(parsed.flags['cwd'], process.cwd()));
|
|
170
|
-
const
|
|
171
|
-
const
|
|
172
|
-
|
|
249
|
+
const cliPatterns = parsed.flags['patterns'];
|
|
250
|
+
const patterns = cliPatterns !== undefined
|
|
251
|
+
? parsePatterns(cliPatterns)
|
|
252
|
+
: fileConfig.patterns ?? ['src/**/*.jogak.ts', 'src/**/*.jogak.tsx'];
|
|
253
|
+
const tsConfigFlag = parsed.flags['ts-config'];
|
|
254
|
+
const tsConfigFilePath = typeof tsConfigFlag === 'string'
|
|
255
|
+
? resolveTsConfig(cwd, tsConfigFlag)
|
|
256
|
+
: fileConfig.tsConfigFilePath ?? resolveTsConfig(cwd, undefined);
|
|
257
|
+
const outDirFlag = parsed.flags['out-dir'];
|
|
258
|
+
const outDirRaw = typeof outDirFlag === 'string'
|
|
259
|
+
? outDirFlag
|
|
260
|
+
: fileConfig.outDir ?? 'jogak-static';
|
|
173
261
|
const outDir = resolve(cwd, outDirRaw);
|
|
262
|
+
const baseFlag = parsed.flags['base'];
|
|
263
|
+
const base = typeof baseFlag === 'string'
|
|
264
|
+
? parseBaseFlag(baseFlag)
|
|
265
|
+
: fileConfig.base ?? './';
|
|
266
|
+
const minifyFlag = parsed.flags['minify'];
|
|
267
|
+
const minify = minifyFlag !== undefined
|
|
268
|
+
? parseMinifyFlag(minifyFlag)
|
|
269
|
+
: fileConfig.minify ?? 'esbuild';
|
|
270
|
+
const sourcemapFlag = parsed.flags['sourcemap'];
|
|
271
|
+
const sourcemap = sourcemapFlag !== undefined
|
|
272
|
+
? parseBoolFlag(sourcemapFlag, false)
|
|
273
|
+
: fileConfig.sourcemap ?? false;
|
|
274
|
+
const codeThemeFlag = parsed.flags['code-theme'];
|
|
275
|
+
const codeTheme = typeof codeThemeFlag === 'string'
|
|
276
|
+
? codeThemeFlag
|
|
277
|
+
: fileConfig.codeTheme ?? 'vsDark';
|
|
278
|
+
const globalCss = parseGlobalCssFlag(parsed.flags['global-css'], fileConfig.globalCss);
|
|
174
279
|
return {
|
|
175
280
|
patterns,
|
|
176
281
|
outDir,
|
|
177
|
-
base
|
|
282
|
+
base,
|
|
178
283
|
cwd,
|
|
179
284
|
tsConfigFilePath,
|
|
180
|
-
codeTheme
|
|
181
|
-
minify
|
|
182
|
-
sourcemap
|
|
285
|
+
codeTheme,
|
|
286
|
+
minify,
|
|
287
|
+
sourcemap,
|
|
183
288
|
emitRegistry: parseBoolFlag(parsed.flags['emit-registry'], false),
|
|
289
|
+
// exactOptionalPropertyTypes 컨벤션: undefined는 spread로 분기.
|
|
290
|
+
...(globalCss !== undefined ? { globalCss } : {}),
|
|
291
|
+
previewIsolation: parsePreviewIsolationFlag(parsed.flags['preview-isolation'], fileConfig.previewIsolation),
|
|
184
292
|
};
|
|
185
293
|
}
|
|
186
294
|
async function main() {
|
|
@@ -192,16 +300,23 @@ async function main() {
|
|
|
192
300
|
const command = argv[0];
|
|
193
301
|
const rest = argv.slice(1);
|
|
194
302
|
const parsed = parseArgs(rest);
|
|
303
|
+
// 알파.7: jogak.config.* 자동 발견 + 로드. CLI 플래그가 override.
|
|
304
|
+
const cwd = resolve(asString(parsed.flags['cwd'], process.cwd()));
|
|
305
|
+
const explicitConfig = typeof parsed.flags['config'] === 'string' ? parsed.flags['config'] : undefined;
|
|
306
|
+
const { path: configPath, config: fileConfig } = await loadJogakConfig(cwd, explicitConfig);
|
|
307
|
+
if (configPath !== undefined) {
|
|
308
|
+
process.stdout.write(`[jogak] config loaded: ${configPath}\n`);
|
|
309
|
+
}
|
|
195
310
|
if (command === 'generate' || command === 'gen') {
|
|
196
|
-
await runGenerate(parsed);
|
|
311
|
+
await runGenerate(parsed, fileConfig);
|
|
197
312
|
return;
|
|
198
313
|
}
|
|
199
314
|
if (command === 'dev') {
|
|
200
|
-
await runDevCommand(parseDevArgs(parsed));
|
|
315
|
+
await runDevCommand(parseDevArgs(parsed, fileConfig));
|
|
201
316
|
return;
|
|
202
317
|
}
|
|
203
318
|
if (command === 'build') {
|
|
204
|
-
await runBuildCommand(parseBuildArgs(parsed));
|
|
319
|
+
await runBuildCommand(parseBuildArgs(parsed, fileConfig));
|
|
205
320
|
return;
|
|
206
321
|
}
|
|
207
322
|
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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"}
|
package/dist/commands/build.d.ts
CHANGED
|
@@ -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>;
|
package/dist/commands/build.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/commands/dev.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `jogak dev` 명령 구현.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* 알파.9: builder-agnostic adapter dispatch.
|
|
5
|
+
* 1. detectBuilder로 사용자 cwd의 빌더 감지 (또는 명시 옵션)
|
|
6
|
+
* 2. loadAdapter로 해당 어댑터 dynamic import
|
|
7
|
+
* 3. adapter.spawnDev로 사용자 빌더의 dev server 시작
|
|
8
|
+
* 4. runHost로 jogak SPA 시작 (adapter dev URL을 iframe src base로)
|
|
7
9
|
*/
|
|
10
|
+
import type { BuilderName, UserViteOptions } from '@jogak/core';
|
|
8
11
|
export interface DevCliArgs {
|
|
9
12
|
readonly patterns: readonly string[];
|
|
10
13
|
readonly port: number;
|
|
@@ -14,13 +17,15 @@ export interface DevCliArgs {
|
|
|
14
17
|
readonly tsConfigFilePath: string | undefined;
|
|
15
18
|
readonly codeTheme: string;
|
|
16
19
|
readonly noGenerate: boolean;
|
|
20
|
+
/** 알파.7: 사용자 globalCss 옵션. */
|
|
21
|
+
readonly globalCss?: boolean | string | readonly string[];
|
|
22
|
+
/** 알파.7: preview 격리 모드. */
|
|
23
|
+
readonly previewIsolation: 'none' | 'shadow' | 'iframe';
|
|
24
|
+
/** @deprecated 알파.8 alias. 알파.9에서는 builder/builderOptions로 마이그. */
|
|
25
|
+
readonly userVite?: UserViteOptions;
|
|
26
|
+
/** 알파.9: 빌더 명시 (자동 감지가 default). */
|
|
27
|
+
readonly builder?: BuilderName | undefined;
|
|
28
|
+
/** 알파.9: 어댑터별 추가 옵션. */
|
|
29
|
+
readonly builderOptions?: Readonly<Record<string, unknown>>;
|
|
17
30
|
}
|
|
18
|
-
/**
|
|
19
|
-
* dev 모드 실행.
|
|
20
|
-
*
|
|
21
|
-
* 1. `--no-generate`가 아니면 `generateRegistryFile`을 fire-and-forget으로 시작.
|
|
22
|
-
* 실패해도 dev 진행 (가상 모듈로 작동하므로).
|
|
23
|
-
* 2. `runHost`에 dev 옵션 위임.
|
|
24
|
-
* 3. `printUrls()` 출력 후 SIGINT/SIGTERM 핸들러 등록.
|
|
25
|
-
*/
|
|
26
31
|
export declare function runDevCommand(args: DevCliArgs): Promise<void>;
|
package/dist/commands/dev.js
CHANGED
|
@@ -1,46 +1,75 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `jogak dev` 명령 구현.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* 알파.9: builder-agnostic adapter dispatch.
|
|
5
|
+
* 1. detectBuilder로 사용자 cwd의 빌더 감지 (또는 명시 옵션)
|
|
6
|
+
* 2. loadAdapter로 해당 어댑터 dynamic import
|
|
7
|
+
* 3. adapter.spawnDev로 사용자 빌더의 dev server 시작
|
|
8
|
+
* 4. runHost로 jogak SPA 시작 (adapter dev URL을 iframe src base로)
|
|
7
9
|
*/
|
|
8
10
|
import { generateRegistryFile } from '@jogak/core/build';
|
|
11
|
+
import { detectBuilder } from '@jogak/core/server';
|
|
9
12
|
import { runHost } from '@jogak/ui/host';
|
|
10
|
-
|
|
11
|
-
* dev 모드 실행.
|
|
12
|
-
*
|
|
13
|
-
* 1. `--no-generate`가 아니면 `generateRegistryFile`을 fire-and-forget으로 시작.
|
|
14
|
-
* 실패해도 dev 진행 (가상 모듈로 작동하므로).
|
|
15
|
-
* 2. `runHost`에 dev 옵션 위임.
|
|
16
|
-
* 3. `printUrls()` 출력 후 SIGINT/SIGTERM 핸들러 등록.
|
|
17
|
-
*/
|
|
13
|
+
import { loadAdapter } from '../load-adapter.js';
|
|
18
14
|
export async function runDevCommand(args) {
|
|
19
|
-
// dev는 가상 모듈로 처리되므로 generate는 IDE 타입체크용 안전망일 뿐.
|
|
20
|
-
// blocking으로 두면 큰 카탈로그(500+)에서 cold start 지연 → fire-and-forget으로 둠.
|
|
21
15
|
if (!args.noGenerate) {
|
|
22
16
|
const generateStart = Date.now();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
17
|
+
try {
|
|
18
|
+
const result = await generateRegistryFile(args.tsConfigFilePath !== undefined
|
|
19
|
+
? {
|
|
20
|
+
patterns: args.patterns,
|
|
21
|
+
cwd: args.cwd,
|
|
22
|
+
outFile: '.jogak/registry.ts',
|
|
23
|
+
tsConfigFilePath: args.tsConfigFilePath,
|
|
24
|
+
}
|
|
25
|
+
: {
|
|
26
|
+
patterns: args.patterns,
|
|
27
|
+
cwd: args.cwd,
|
|
28
|
+
outFile: '.jogak/registry.ts',
|
|
29
|
+
});
|
|
36
30
|
const elapsedMs = Date.now() - generateStart;
|
|
37
31
|
process.stdout.write(`[jogak] registry regenerated (${result.fileCount.toString()} files, ${elapsedMs.toString()}ms)\n`);
|
|
38
|
-
}
|
|
39
|
-
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
// 생성 실패해도 host는 띄울 수 있게 하되, non-vite 어댑터는 빈 registry로 동작.
|
|
40
35
|
const message = err instanceof Error ? err.message : String(err);
|
|
41
36
|
process.stderr.write(`[jogak] generate skipped: ${message}\n`);
|
|
42
|
-
}
|
|
37
|
+
}
|
|
43
38
|
}
|
|
39
|
+
// 알파.9: 빌더 감지 + 어댑터 dispatch
|
|
40
|
+
const builderName = args.builder !== undefined && args.builder !== 'custom'
|
|
41
|
+
? args.builder
|
|
42
|
+
: detectBuilder(args.cwd).name;
|
|
43
|
+
process.stdout.write(`[jogak] builder detected: ${builderName}\n`);
|
|
44
|
+
// 알파.8 userVite alias → builderOptions 변환
|
|
45
|
+
const builderOptions = args.builderOptions ??
|
|
46
|
+
(args.userVite !== undefined && builderName === 'vite'
|
|
47
|
+
? args.userVite
|
|
48
|
+
: undefined);
|
|
49
|
+
// previewIsolation === 'iframe'(default)에서만 어댑터 spawn.
|
|
50
|
+
// standalone은 spawn 자체를 throw하므로 catch + fallback.
|
|
51
|
+
let adapter;
|
|
52
|
+
let adapterHandle;
|
|
53
|
+
if (args.previewIsolation === 'iframe' && builderName !== 'standalone') {
|
|
54
|
+
try {
|
|
55
|
+
adapter = await loadAdapter(builderName, args.cwd);
|
|
56
|
+
adapterHandle = await adapter.spawnDev({
|
|
57
|
+
cwd: args.cwd,
|
|
58
|
+
...(args.globalCss !== undefined ? { globalCss: args.globalCss } : {}),
|
|
59
|
+
...(builderOptions !== undefined ? { extra: builderOptions } : {}),
|
|
60
|
+
});
|
|
61
|
+
process.stdout.write(`[jogak] ${builderName} adapter dev: ${adapterHandle.url}\n`);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
65
|
+
process.stderr.write(`[jogak] adapter '${builderName}' spawn failed: ${message}\n` +
|
|
66
|
+
`[jogak] fallback: jogak SPA만 시작 (사용자 utility 미컴파일).\n`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (builderName === 'standalone') {
|
|
70
|
+
process.stdout.write(`[jogak] standalone mode: 사용자 utility는 사용자가 사전 빌드한 css에 한정.\n`);
|
|
71
|
+
}
|
|
72
|
+
const previewEntryPath = adapter?.previewEntryMeta.devEntryPath ?? '/preview-frame.html';
|
|
44
73
|
const devOptions = {
|
|
45
74
|
mode: 'dev',
|
|
46
75
|
userRoot: args.cwd,
|
|
@@ -52,17 +81,23 @@ export async function runDevCommand(args) {
|
|
|
52
81
|
...(args.tsConfigFilePath !== undefined
|
|
53
82
|
? { tsConfigFilePath: args.tsConfigFilePath }
|
|
54
83
|
: {}),
|
|
84
|
+
...(args.globalCss !== undefined ? { globalCss: args.globalCss } : {}),
|
|
85
|
+
previewIsolation: args.previewIsolation,
|
|
86
|
+
...(adapterHandle !== undefined
|
|
87
|
+
? { userPreviewUrl: adapterHandle.url, previewEntryPath }
|
|
88
|
+
: {}),
|
|
55
89
|
};
|
|
56
90
|
const handle = await runHost(devOptions);
|
|
57
91
|
handle.printUrls();
|
|
58
|
-
// 종료 핸들러 — close()는 멱등이지만 한 번만 호출되도록 가드.
|
|
59
92
|
let shuttingDown = false;
|
|
60
93
|
const shutdown = () => {
|
|
61
94
|
if (shuttingDown)
|
|
62
95
|
return;
|
|
63
96
|
shuttingDown = true;
|
|
64
|
-
|
|
65
|
-
.close()
|
|
97
|
+
Promise.all([
|
|
98
|
+
handle.close(),
|
|
99
|
+
adapterHandle !== undefined ? adapterHandle.close() : Promise.resolve(),
|
|
100
|
+
])
|
|
66
101
|
.catch((err) => {
|
|
67
102
|
const message = err instanceof Error ? err.message : String(err);
|
|
68
103
|
process.stderr.write(`[jogak] dev close error: ${message}\n`);
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA
|
|
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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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BuilderAdapter, BuilderName } from '@jogak/core';
|
|
2
|
+
/**
|
|
3
|
+
* 알파.10: 빌더 이름으로 어댑터 dynamic import.
|
|
4
|
+
*
|
|
5
|
+
* 어댑터는 모두 `@jogak/core/adapters/${name}` subpath로 통합됐다 (알파.9의 별도
|
|
6
|
+
* `@jogak/${name}-adapter` 패키지는 deprecate). 사용자 cwd의 `@jogak/core` 패키지를
|
|
7
|
+
* 찾아 `exports['./adapters/${name}'].import` 경로를 직접 import.
|
|
8
|
+
*
|
|
9
|
+
* `import.meta.resolve`의 parentURL 인자가 Node 22 이전에서 unstable이고, 또한 cli/dist
|
|
10
|
+
* 기준으로 해석되어 사용자 cwd가 아닌 곳을 가리키므로 수동 lookup.
|
|
11
|
+
*/
|
|
12
|
+
export declare function loadAdapter(name: Exclude<BuilderName, 'custom'>, cwd: string): Promise<BuilderAdapter>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
/**
|
|
5
|
+
* 알파.10: 빌더 이름으로 어댑터 dynamic import.
|
|
6
|
+
*
|
|
7
|
+
* 어댑터는 모두 `@jogak/core/adapters/${name}` subpath로 통합됐다 (알파.9의 별도
|
|
8
|
+
* `@jogak/${name}-adapter` 패키지는 deprecate). 사용자 cwd의 `@jogak/core` 패키지를
|
|
9
|
+
* 찾아 `exports['./adapters/${name}'].import` 경로를 직접 import.
|
|
10
|
+
*
|
|
11
|
+
* `import.meta.resolve`의 parentURL 인자가 Node 22 이전에서 unstable이고, 또한 cli/dist
|
|
12
|
+
* 기준으로 해석되어 사용자 cwd가 아닌 곳을 가리키므로 수동 lookup.
|
|
13
|
+
*/
|
|
14
|
+
export async function loadAdapter(name, cwd) {
|
|
15
|
+
const corePkgRoot = resolve(cwd, 'node_modules', '@jogak', 'core');
|
|
16
|
+
const corePkgJsonPath = resolve(corePkgRoot, 'package.json');
|
|
17
|
+
if (!existsSync(corePkgJsonPath)) {
|
|
18
|
+
throw new Error(`[jogak] @jogak/core not found in '${cwd}'. install it first.`);
|
|
19
|
+
}
|
|
20
|
+
let manifest;
|
|
21
|
+
try {
|
|
22
|
+
manifest = JSON.parse(readFileSync(corePkgJsonPath, 'utf-8'));
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
26
|
+
throw new Error(`[jogak] @jogak/core package.json read failed: ${message}`);
|
|
27
|
+
}
|
|
28
|
+
const subpath = `./adapters/${name}`;
|
|
29
|
+
const entryRel = resolveEsmEntry(manifest, subpath);
|
|
30
|
+
if (entryRel === undefined) {
|
|
31
|
+
throw new Error(`[jogak] @jogak/core has no ESM entry for '${subpath}'. ` +
|
|
32
|
+
`expected exports['${subpath}'].import in @jogak/core@>=0.1.0-alpha.10.`);
|
|
33
|
+
}
|
|
34
|
+
const entryAbs = resolve(corePkgRoot, entryRel);
|
|
35
|
+
const entryUrl = pathToFileURL(entryAbs).toString();
|
|
36
|
+
try {
|
|
37
|
+
const mod = (await import(entryUrl));
|
|
38
|
+
return mod.default;
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
42
|
+
throw new Error(`[jogak] adapter '${subpath}' import failed.\n` + `original: ${message}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function resolveEsmEntry(manifest, subpath) {
|
|
46
|
+
const exportsField = manifest.exports;
|
|
47
|
+
if (exportsField !== undefined) {
|
|
48
|
+
const entry = exportsField[subpath];
|
|
49
|
+
if (typeof entry === 'string')
|
|
50
|
+
return entry;
|
|
51
|
+
if (entry !== undefined) {
|
|
52
|
+
if (entry.import !== undefined)
|
|
53
|
+
return entry.import;
|
|
54
|
+
if (entry.default !== undefined)
|
|
55
|
+
return entry.default;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=load-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-adapter.js","sourceRoot":"","sources":["../src/load-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAoC,EACpC,GAAW;IAEX,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAClE,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;IAE5D,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,qCAAqC,GAAG,sBAAsB,CAC/D,CAAA;IACH,CAAC;IAED,IAAI,QAA6B,CAAA;IACjC,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAwB,CAAA;IACtF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,MAAM,IAAI,KAAK,CAAC,iDAAiD,OAAO,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,IAAI,EAAE,CAAA;IACpC,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,6CAA6C,OAAO,KAAK;YACvD,qBAAqB,OAAO,4CAA4C,CAC3E,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAgC,CAAA;QACnE,OAAO,GAAG,CAAC,OAAO,CAAA;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,MAAM,IAAI,KAAK,CACb,oBAAoB,OAAO,oBAAoB,GAAG,aAAa,OAAO,EAAE,CACzE,CAAA;IACH,CAAC;AACH,CAAC;AAaD,SAAS,eAAe,CACtB,QAA6B,EAC7B,OAAe;IAEf,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAA;IACrC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC,MAAM,CAAA;YACnD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC,OAAO,CAAA;QACvD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jogak/cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.10.2",
|
|
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/ui": "0.1.0-alpha.
|
|
47
|
-
"@jogak/core": "0.1.0-alpha.
|
|
46
|
+
"@jogak/ui": "0.1.0-alpha.10.2",
|
|
47
|
+
"@jogak/core": "0.1.0-alpha.10.2"
|
|
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
|
}
|