@simplysm/sd-claude 14.0.88 → 14.0.90
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/claude/references/sd-simplysm14/README.md +16 -17
- package/claude/references/sd-simplysm14/apis/angular/README.md +39 -43
- package/claude/references/sd-simplysm14/apis/angular/controls.md +174 -80
- package/claude/references/sd-simplysm14/apis/angular/crud.md +41 -50
- package/claude/references/sd-simplysm14/apis/angular/directives.md +60 -26
- package/claude/references/sd-simplysm14/apis/angular/features.md +109 -37
- package/claude/references/sd-simplysm14/apis/angular/infra.md +61 -44
- package/claude/references/sd-simplysm14/apis/angular/layout.md +39 -31
- package/claude/references/sd-simplysm14/apis/angular/overlay.md +73 -85
- package/claude/references/sd-simplysm14/apis/angular/routing-appstructure.md +54 -39
- package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +55 -30
- package/claude/references/sd-simplysm14/apis/angular/shared-data.md +71 -67
- package/claude/references/sd-simplysm14/apis/angular/sheet.md +82 -72
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +35 -36
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +71 -43
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +38 -30
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-usb-storage/README.md +45 -50
- package/claude/references/sd-simplysm14/apis/core-browser/README.md +42 -55
- package/claude/references/sd-simplysm14/apis/core-browser/dom-element.md +62 -0
- package/claude/references/sd-simplysm14/apis/core-browser/indexed-db.md +39 -38
- package/claude/references/sd-simplysm14/apis/core-common/README.md +95 -103
- package/claude/references/sd-simplysm14/apis/core-common/array-ext.md +59 -54
- package/claude/references/sd-simplysm14/apis/core-common/async-runtime.md +86 -0
- package/claude/references/sd-simplysm14/apis/core-common/datetime.md +57 -66
- package/claude/references/sd-simplysm14/apis/core-common/errors.md +86 -0
- package/claude/references/sd-simplysm14/apis/core-common/obj.md +60 -42
- package/claude/references/sd-simplysm14/apis/core-common/serialization.md +55 -0
- package/claude/references/sd-simplysm14/apis/core-node/README.md +10 -8
- package/claude/references/sd-simplysm14/apis/core-node/consola.md +29 -32
- package/claude/references/sd-simplysm14/apis/core-node/cpx.md +34 -22
- package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +29 -25
- package/claude/references/sd-simplysm14/apis/core-node/fsx.md +40 -53
- package/claude/references/sd-simplysm14/apis/core-node/pathx.md +22 -29
- package/claude/references/sd-simplysm14/apis/core-node/worker.md +31 -31
- package/claude/references/sd-simplysm14/apis/excel/README.md +26 -26
- package/claude/references/sd-simplysm14/apis/excel/cell.md +37 -29
- package/claude/references/sd-simplysm14/apis/excel/conditional-format.md +29 -15
- package/claude/references/sd-simplysm14/apis/excel/style.md +33 -27
- package/claude/references/sd-simplysm14/apis/excel/utils.md +29 -19
- package/claude/references/sd-simplysm14/apis/excel/workbook-worksheet.md +78 -55
- package/claude/references/sd-simplysm14/apis/excel/wrapper.md +42 -45
- package/claude/references/sd-simplysm14/apis/lint/README.md +27 -21
- package/claude/references/sd-simplysm14/apis/lint/rules.md +89 -49
- package/claude/references/sd-simplysm14/apis/orm-common/README.md +6 -62
- package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +149 -67
- package/claude/references/sd-simplysm14/apis/orm-common/expr.md +111 -99
- package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +115 -72
- package/claude/references/sd-simplysm14/apis/orm-common/schema.md +134 -92
- package/claude/references/sd-simplysm14/apis/orm-common/types.md +67 -52
- package/claude/references/sd-simplysm14/apis/orm-node/README.md +63 -26
- package/claude/references/sd-simplysm14/apis/orm-node/db-conn.md +51 -40
- package/claude/references/sd-simplysm14/apis/sd-cli/README.md +10 -12
- package/claude/references/sd-simplysm14/apis/sd-cli/SdTsCompiler.md +92 -45
- package/claude/references/sd-simplysm14/apis/sd-cli/sd-config-types.md +226 -108
- package/claude/references/sd-simplysm14/apis/service-client/README.md +90 -88
- package/claude/references/sd-simplysm14/apis/service-client/orm.md +37 -29
- package/claude/references/sd-simplysm14/apis/service-client/transport.md +45 -20
- package/claude/references/sd-simplysm14/apis/service-common/README.md +89 -40
- package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +126 -34
- package/claude/references/sd-simplysm14/apis/service-common/protocol.md +109 -54
- package/claude/references/sd-simplysm14/apis/service-server/README.md +70 -66
- package/claude/references/sd-simplysm14/apis/service-server/service-authoring.md +47 -47
- package/claude/references/sd-simplysm14/apis/service-server/transport-internals.md +71 -34
- package/claude/references/sd-simplysm14/apis/service-server/v1-legacy.md +31 -32
- package/claude/references/sd-simplysm14/apis/storage/README.md +34 -28
- package/claude/references/sd-simplysm14/manuals/client-app-structure.md +142 -140
- package/claude/references/sd-simplysm14/manuals/client-orm.md +1 -1
- package/claude/references/sd-simplysm14/manuals/client-service.md +19 -7
- package/claude/references/sd-simplysm14/manuals/client-shared-data.md +2 -2
- package/claude/references/sd-simplysm14/manuals/client-system-log.md +11 -3
- package/claude/references/sd-simplysm14/manuals/data-log.md +0 -1
- package/claude/references/sd-simplysm14/manuals/orm.md +16 -0
- package/claude/rules/sd-design-rules.md +10 -0
- package/claude/skills/sd-docs/SKILL.md +58 -46
- package/claude/skills/sd-docs/references/{doc-rules.md → subagent-prompt.md} +103 -103
- package/claude/skills/sd-impl/SKILL.md +1 -1
- package/claude/skills/sd-spec/SKILL.md +858 -858
- package/claude/skills/sd-spec/references/example-spec.md +26 -36
- package/package.json +1 -1
- package/claude/references/sd-simplysm14/apis/core-common/json-transfer.md +0 -47
- package/claude/references/sd-simplysm14/apis/orm-common/query-builder.md +0 -29
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/.specs/inventory/spec.md +0 -99
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/package.json +0 -12
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/index.ts +0 -3
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inbound/inbound.list.ts +0 -150
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inventory/inventory-master.list.ts +0 -143
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/outbound/outbound.list.ts +0 -150
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/pnpm-workspace.yaml +0 -2
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/sd.config.ts +0 -12
- package/claude/skills/sd-demo/evals/golden.jsonl +0 -1
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/package.json +0 -8
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/src/.gitkeep +0 -0
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tests/.gitkeep +0 -0
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tsconfig.json +0 -10
- package/claude/skills/sd-dev/evals/golden.jsonl +0 -1
- package/claude/skills/sd-docs/evals/fixtures/new-write/.claude/references/sd-simplysm14/README.md +0 -7
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/src/index.ts +0 -3
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/package.json +0 -6
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/src/index.ts +0 -1
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/src/index.ts +0 -8
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/README.md +0 -7
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/apis/foo/README.md +0 -3
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/src/index.ts +0 -3
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/package.json +0 -6
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/src/index.ts +0 -1
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/src/index.ts +0 -8
- package/claude/skills/sd-docs/evals/golden.jsonl +0 -2
- package/claude/skills/sd-impl/evals/fixtures/case-a-new-screen/.specs/260513120000_warehouse/spec.md +0 -101
- package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/.specs/260513120000_warehouse/spec.md +0 -101
- package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/packages/app/src/screens/box-register/box-register.view.ts +0 -46
- package/claude/skills/sd-impl/evals/fixtures/case-c-new-cross/.specs/260513120000_warehouse/spec.md +0 -89
- package/claude/skills/sd-impl/evals/fixtures/case-d-spec-modify/.specs/260513120000_warehouse/spec.md +0 -101
- package/claude/skills/sd-impl/evals/golden.jsonl +0 -4
- package/claude/skills/sd-manual/evals/fixtures/new-manual/src/notification.ts +0 -25
- package/claude/skills/sd-manual/evals/fixtures/update-manual/.claude/references/sd-simplysm14/manuals/notification.md +0 -14
- package/claude/skills/sd-manual/evals/fixtures/update-manual/src/notification.ts +0 -37
- package/claude/skills/sd-manual/evals/golden.jsonl +0 -2
- package/claude/skills/sd-review/evals/fixtures/code-review/src/foo.ts +0 -7
- package/claude/skills/sd-review/evals/fixtures/doc-review/docs/foo.md +0 -4
- package/claude/skills/sd-review/evals/golden.jsonl +0 -2
- package/claude/skills/sd-skill/evals/fixtures/existing-skill/.claude/skills/todo-format/SKILL.md +0 -14
- package/claude/skills/sd-skill/evals/fixtures/new-skill/.gitkeep +0 -0
- package/claude/skills/sd-skill/evals/golden.jsonl +0 -2
- package/claude/skills/sd-spec/evals/fixtures/case-a-split//355/232/214/354/235/230/353/241/235.md +0 -20
- package/claude/skills/sd-spec/evals/fixtures/case-b-detail/.specs/260513120000_warehouse/spec.md +0 -95
- package/claude/skills/sd-spec/evals/golden.jsonl +0 -2
- package/claude/skills/sd-unpack/evals/fixtures/eml-with-text-attachment/meeting.eml +0 -21
- package/claude/skills/sd-unpack/evals/fixtures/simple-eml/meeting.eml +0 -10
- package/claude/skills/sd-unpack/evals/golden.jsonl +0 -2
- package/claude/skills/sd-use/evals/fixtures/empty/.gitkeep +0 -0
- package/claude/skills/sd-use/evals/golden.jsonl +0 -6
|
@@ -1,70 +1,117 @@
|
|
|
1
1
|
# @simplysm/sd-cli — SdTsCompiler
|
|
2
2
|
|
|
3
|
-
패키지 디렉토리의 `.ts` 를
|
|
3
|
+
패키지 디렉토리의 `.ts` 를 TypeScript 또는 Angular AOT 로 **증분** 컴파일하는 클래스. 한 번의 `compileAsync` 호출로 직렬화된 진단 + emit 결과 + lint + SCSS 결과를 한 묶음(`ISdTsCompilerResult`)으로 반환한다. tsconfig 의 `angularCompilerOptions` 존재 여부로 Angular/일반 모드를 자동 판별. 빌드 엔진과 `sdAngularPlugin` 내부에서 사용. 진단은 worker 경계를 통과하도록 `SerializedDiagnostic` 으로 직렬화되며, 내부 크래시는 단계별로 잡아 진단으로 보고(부분 복구)한다.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## ISdTsCompilerOptions (생성자 인자)
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
interface ISdTsCompilerOptions {
|
|
9
|
+
pkgDir: string;
|
|
10
|
+
cwd: string;
|
|
11
|
+
output: { js: boolean; dts: boolean };
|
|
12
|
+
includeTests?: boolean;
|
|
13
|
+
env?: TypecheckEnv;
|
|
14
|
+
// Angular 전용 (isForAngular 시 활성)
|
|
15
|
+
sourceFileCache?: AngularSourceFileCache;
|
|
16
|
+
transformStylesheet?: (data: string, containingFile: string, stylesheetFile?: string) => Promise<string | null>;
|
|
17
|
+
externalStylesheets?: Map<string, string>;
|
|
18
|
+
compilerOptionsTransformer?: (options: ts.CompilerOptions) => ts.CompilerOptions;
|
|
19
|
+
// SCSS/lint 통합
|
|
20
|
+
lint?: boolean;
|
|
21
|
+
globalScss?: boolean;
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- pkgDir: string — 컴파일 대상 패키지 디렉토리. `<pkgDir>/tsconfig.json` 을 파싱하고 `<pkgDir>/dist` 로 emit, `<pkgDir>/.cache` 에 tsbuildinfo 를 둔다.
|
|
26
|
+
- cwd: string — 워크스페이스 루트. 진단 필터링(`isWorkspaceDiagnostic`)·경로 상대화·에러 포맷 기준점.
|
|
27
|
+
- output.js: boolean — JS emit 여부. true 면 `.js` 산출(non-Angular 은 import 에 `.js` 확장자 부착 + 경로 재작성, Angular 은 `emitResults` 로 반환).
|
|
28
|
+
- output.dts: boolean — `.d.ts` emit 여부. `js`/`dts` 조합에 따라 emit-only·declaration-only·noEmit(둘 다 false = 타입체크만) 으로 분기.
|
|
29
|
+
- includeTests?: boolean — `tests/` 파일을 rootNames 에 포함할지. 기본 false. 테스트까지 컴파일해야 하면 true(예: `sdAngularPlugin`).
|
|
30
|
+
- env?: TypecheckEnv — 타입체크 환경. 지정 시 `getCompilerOptionsForEnv()` 로 환경별 compilerOptions 를 적용하고 tsbuildinfo 파일명에 접미사를 붙임. 환경 분리 타입체크에 쓴다.
|
|
31
|
+
- sourceFileCache?: AngularSourceFileCache — Angular 증분용 SourceFile 캐시. 미제공 시 내부 생성. 여러 `compileAsync` 라운드 간 캐시를 공유하려면 외부에서 주입.
|
|
32
|
+
- transformStylesheet?: (data, containingFile, stylesheetFile?) => Promise<string|null> — 컴포넌트 스타일 변환 콜백(Angular only). `null` 반환 시 변환 안 함. 미제공이고 Angular 면 라이브러리용 SCSS 변환 콜백을 자동 생성. 클라이언트 빌드처럼 커스텀 스타일 파이프라인이 필요할 때 직접 제공.
|
|
33
|
+
- externalStylesheets?: Map<string, string> — 외부 스타일시트 맵(클라이언트 빌드용). 지정 시 비-템플릿 스타일 리소스를 해시 기반 `.css` 외부 파일명으로 매핑(`resourceNameToFileName`). 스타일을 별도 청크로 뽑을 때.
|
|
34
|
+
- compilerOptionsTransformer?: (options) => ts.CompilerOptions — 최종 compilerOptions 후처리 훅. 클라이언트의 `target`/`module`/`rootDir` 강제 등에 쓴다.
|
|
35
|
+
- lint?: boolean — true 면 `compileAsync` 가 program 기반 lint 를 함께 돌려 결과를 `result.lint` 에 담는다(affected 파일만 대상). 컴파일과 동시에 lint 하고 싶을 때.
|
|
36
|
+
- globalScss?: boolean — true 면 `scss/styles.scss` → `dist/styles.css` 글로벌 SCSS 를 컴파일하고 에러를 `result.scssErrors` 에 더한다.
|
|
37
|
+
|
|
38
|
+
## ISdTsCompilerEmitOptions (compileAsync 2번째 인자)
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
interface ISdTsCompilerEmitOptions {
|
|
42
|
+
sourceFilter?: (fileName: string) => boolean;
|
|
43
|
+
additionalTransformers?: {
|
|
44
|
+
before?: ts.TransformerFactory<ts.SourceFile>[];
|
|
45
|
+
after?: ts.TransformerFactory<ts.SourceFile>[];
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
- sourceFilter?: (fileName) => boolean — emit 결과 필터(Angular only). true 인 소스만 `emitResults` 에 남긴다. 특정 파일의 emit 만 필요할 때(예: HMR 단일 파일).
|
|
51
|
+
- additionalTransformers?.before / .after — Angular 기본 transformers 앞/뒤에 끼울 추가 TS transformer 배열(Angular only). 커스텀 코드 변환을 주입할 때.
|
|
52
|
+
|
|
53
|
+
## SdTsCompiler — 메서드
|
|
6
54
|
|
|
7
55
|
```typescript
|
|
8
56
|
class SdTsCompiler {
|
|
9
57
|
constructor(options: ISdTsCompilerOptions);
|
|
10
58
|
compileAsync(modifiedFiles?: ReadonlySet<string>, emitOptions?: ISdTsCompilerEmitOptions): Promise<ISdTsCompilerResult>;
|
|
59
|
+
get sideEffectScssRegistry(): Map<string, SideEffectScssEntry>;
|
|
11
60
|
compileSideEffectScss(): void;
|
|
12
61
|
findAffectedByScss(scssPath: string): string[];
|
|
13
|
-
get sideEffectScssRegistry(): Map<string, SideEffectScssEntry>;
|
|
14
62
|
}
|
|
15
63
|
```
|
|
16
64
|
|
|
17
|
-
- compileAsync(modifiedFiles?, emitOptions?) — 1회 증분
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
65
|
+
- compileAsync(modifiedFiles?, emitOptions?) — 1회 증분 컴파일 실행. `modifiedFiles` = 직전 변경된 파일 절대경로 집합(증분 무효화용, 미지정·빈 집합이면 캐시 그대로 사용; node_modules 포함 변경 시 packageJsonCache 클리어). `emitOptions` 는 위 emit 필터/transformer. 같은 인스턴스로 반복 호출해 증분 빌드를 이어간다.
|
|
66
|
+
- sideEffectScssRegistry (getter) — side-effect SCSS 등록부(`Map<소스, SideEffectScssEntry>`) 참조. emit 코드가 항목을 등록하는 통로.
|
|
67
|
+
- compileSideEffectScss() — 위 레지스트리의 모든 항목을 CSS 로 컴파일하고 에러/의존성을 내부 상태에 반영.
|
|
68
|
+
- findAffectedByScss(scssPath) — 주어진 SCSS 경로에 의존하는 소유자 파일 경로 배열을 반환(역방향 탐색). watch 에서 SCSS 변경 시 재컴파일 대상 산출에 쓴다.
|
|
21
69
|
|
|
22
|
-
|
|
70
|
+
사용 예:
|
|
23
71
|
|
|
24
72
|
```typescript
|
|
25
73
|
import { SdTsCompiler } from "@simplysm/sd-cli";
|
|
26
|
-
|
|
74
|
+
|
|
75
|
+
const compiler = new SdTsCompiler({
|
|
76
|
+
pkgDir: "/repo/packages/core-common",
|
|
77
|
+
cwd: "/repo",
|
|
78
|
+
output: { js: true, dts: true },
|
|
79
|
+
});
|
|
27
80
|
const result = await compiler.compileAsync();
|
|
28
81
|
if (result.errorCount > 0) console.error(result.errors);
|
|
82
|
+
// watch 라운드: 변경 파일만 넘겨 증분 컴파일
|
|
83
|
+
const next = await compiler.compileAsync(new Set(["/repo/packages/core-common/src/foo.ts"]));
|
|
29
84
|
```
|
|
30
85
|
|
|
31
|
-
##
|
|
32
|
-
|
|
33
|
-
생성자 옵션.
|
|
34
|
-
|
|
35
|
-
- pkgDir: string — 컴파일 대상 패키지 디렉토리 절대경로. rootNames·outDir·SCSS loadPath 기준.
|
|
36
|
-
- cwd: string — workspace 루트. diagnostics 필터링(워크스페이스 내부 진단만 남김)·상대경로 로깅 기준.
|
|
37
|
-
- output: { js: boolean; dts: boolean } — 출력 제어. `js` = `.js` emit 여부, `dts` = `.d.ts` emit 여부. 둘 다 false 면 noEmit(타입체크만). 조합에 따라 declaration/sourceMap/tsBuildInfoFile 이름이 달라짐.
|
|
38
|
-
- includeTests?: boolean — `tests/` 파일을 rootNames 에 포함할지. 기본 false. 테스트 AOT 컴파일(Vitest)에서 true.
|
|
39
|
-
- env?: "node" | "browser" — 타입체크 환경. 설정 시 환경별 compilerOptions 조정(`getCompilerOptionsForEnv`) 적용. 동일 패키지를 환경별로 분리 검증할 때.
|
|
40
|
-
- sourceFileCache?: AngularSourceFileCache — Angular 증분 빌드용 SourceFile 캐시. 미제공 시 내부 생성. 인스턴스 간 캐시 공유로 증분 속도 확보.
|
|
41
|
-
- transformStylesheet?: (data, containingFile, stylesheetFile?) => Promise<string | null> — 스타일시트 변환 콜백(Angular 전용). 인라인/외부 스타일을 가공해 반환, `null` 이면 미변환. 미제공 + Angular 면 라이브러리용 SCSS 변환 콜백이 자동 생성됨.
|
|
42
|
-
- externalStylesheets?: Map<string, string> — 외부 스타일시트 맵(클라이언트 빌드용). `resourceNameToFileName` 에서 비-템플릿 리소스를 해시 기반 `.css` 외부 ID 로 치환할 때 채워짐.
|
|
43
|
-
- compilerOptionsTransformer?: (options) => ts.CompilerOptions — compilerOptions 최종 후처리. 내부 구성 이후 마지막에 적용되어 target/module/rootDir 등을 강제 가능. 클라이언트·Vitest 빌드에서 사용.
|
|
44
|
-
- lint?: boolean — true 면 `compileAsync` 가 lint 를 함께 실행하고 결과를 `result.lint` 에 포함. lint runner 는 lazy init 후 인스턴스 재사용.
|
|
45
|
-
- globalScss?: boolean — true 면 `scss/styles.scss` → `dist/styles.css` 글로벌 SCSS 컴파일 수행. 글로벌 스타일 산출이 필요한 패키지에서.
|
|
46
|
-
|
|
47
|
-
## ISdTsCompilerEmitOptions
|
|
86
|
+
## ISdTsCompilerResult (compileAsync 반환)
|
|
48
87
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
88
|
+
```typescript
|
|
89
|
+
interface ISdTsCompilerResult {
|
|
90
|
+
program: ts.Program;
|
|
91
|
+
builderProgram: ts.EmitAndSemanticDiagnosticsBuilderProgram;
|
|
92
|
+
isForAngular: boolean;
|
|
93
|
+
affectedFiles: ReadonlySet<string> | undefined;
|
|
94
|
+
diagnostics: SerializedDiagnostic[];
|
|
95
|
+
errorCount: number;
|
|
96
|
+
warningCount: number;
|
|
97
|
+
errors?: string[];
|
|
98
|
+
ngtscProgram?: NgtscProgram;
|
|
99
|
+
emitResults?: EmitResult[]; // EmitResult: { filename; contents; sourceFileName }
|
|
100
|
+
lint?: LintWithProgramResult;
|
|
101
|
+
scssErrors: string[];
|
|
102
|
+
scssDependencies: ReadonlyMap<string, ReadonlySet<string>>;
|
|
103
|
+
}
|
|
104
|
+
```
|
|
57
105
|
|
|
58
|
-
- program: ts.Program —
|
|
59
|
-
- builderProgram
|
|
60
|
-
- isForAngular: boolean — Angular
|
|
61
|
-
- affectedFiles: ReadonlySet<string> | undefined — 이번 빌드에서 영향받은 파일(posix 경로). `undefined` = 전역 변경(전체 리빌드).
|
|
62
|
-
- diagnostics: SerializedDiagnostic[] — 직렬화된 진단
|
|
63
|
-
- errorCount: number — Error 카테고리 진단
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
- lint?: LintWithProgramResult — lint 결과. `lint` 옵션 활성 시에만 존재.
|
|
106
|
+
- program: ts.Program — TS Program 참조. lint·외부 도구에 넘길 때.
|
|
107
|
+
- builderProgram — 증분 BuilderProgram 참조.
|
|
108
|
+
- isForAngular: boolean — Angular 모드로 컴파일됐는지(tsconfig 의 `angularCompilerOptions` 유무로 결정). 후속 처리 분기에 쓴다.
|
|
109
|
+
- affectedFiles: ReadonlySet<string> | undefined — 이번 빌드에서 영향받은 파일(posix 경로). `undefined` = 전역 변경(전체 리빌드). 부분 재처리 범위 판단에 쓴다.
|
|
110
|
+
- diagnostics: SerializedDiagnostic[] — 직렬화된 진단 전체(worker 경계 통과용). 내부 크래시 진단도 합산됨.
|
|
111
|
+
- errorCount / warningCount: number — Error / Warning 카테고리 진단 수. 크래시는 errorCount 에 가산.
|
|
112
|
+
- errors?: string[] — Error 진단을 `"파일:줄:열: TS코드: 메시지"` 형식으로 포맷한 배열(없으면 undefined). 로그 출력에 바로 쓴다.
|
|
113
|
+
- ngtscProgram?: NgtscProgram — NgtscProgram 참조(Angular only, HMR 용). non-Angular 이면 undefined.
|
|
114
|
+
- emitResults?: EmitResult[] — Angular emit 결과 배열. 각 항목 `{ filename; contents; sourceFileName }`(sourceFileName = 원본 소스 경로). non-Angular 은 writeFile 훅으로 디스크에 직접 쓰므로 undefined. 메모리상 컴파일 결과가 필요한 플러그인이 소비.
|
|
115
|
+
- lint?: LintWithProgramResult — lint 결과(`lint: true` 일 때만).
|
|
69
116
|
- scssErrors: string[] — SCSS 컴파일 에러 목록.
|
|
70
117
|
- scssDependencies: ReadonlyMap<string, ReadonlySet<string>> — SCSS 의존성 맵(소유자 파일 → 의존 SCSS 경로 집합). watch 역방향 탐색용.
|
|
@@ -1,173 +1,291 @@
|
|
|
1
1
|
# @simplysm/sd-cli — sd.config.ts 설정 타입
|
|
2
2
|
|
|
3
|
-
프로젝트 루트 `sd.config.ts`
|
|
3
|
+
프로젝트 루트 `sd.config.ts` 작성·수정 시 함께 읽히는 타입 묶음. `sd.config.ts` 는 `SdConfigFn` 을 default export 해야 한다. 권위 소스는 `packages/sd-cli/src/sd-config.types.ts`. 모든 타입은 `import type { ... } from "@simplysm/sd-cli"` 로 가져온다.
|
|
4
4
|
|
|
5
|
-
## SdConfigFn / SdConfigParams
|
|
6
|
-
|
|
7
|
-
`sd.config.ts` 의 default export 시그니처. `SdConfig` 또는 그 Promise 를 반환.
|
|
5
|
+
## SdConfigFn / SdConfigParams / SdConfig
|
|
8
6
|
|
|
9
7
|
```typescript
|
|
10
8
|
type SdConfigFn = (params: SdConfigParams) => SdConfig | Promise<SdConfig>;
|
|
9
|
+
|
|
10
|
+
interface SdConfigParams {
|
|
11
|
+
cwd: string;
|
|
12
|
+
dev: boolean;
|
|
13
|
+
opt: string[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface SdConfig {
|
|
17
|
+
packages: Record<string, SdPackageConfig | undefined>;
|
|
18
|
+
replaceDeps?: Record<string, string>;
|
|
19
|
+
postPublish?: SdPostPublishScriptConfig[];
|
|
20
|
+
}
|
|
11
21
|
```
|
|
12
22
|
|
|
13
|
-
`SdConfigParams` (함수에
|
|
23
|
+
`SdConfigParams` (sd-cli 가 설정 함수에 주입):
|
|
24
|
+
|
|
25
|
+
- cwd: string — 현재 작업 디렉토리(워크스페이스 루트). 설정에서 경로를 절대화할 때 쓴다.
|
|
26
|
+
- dev: boolean — 개발 모드 플래그. true 면 dev 실행(watch/dev). env·publish 를 모드별로 분기할 때 쓴다.
|
|
27
|
+
- opt: string[] — CLI 의 `-o` 플래그로 넘어온 추가 옵션 배열. 임의 빌드 변형(예: 특정 환경 타겟)을 분기할 때 쓴다.
|
|
14
28
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
29
|
+
`SdConfig`:
|
|
30
|
+
|
|
31
|
+
- packages: Record<string, SdPackageConfig | undefined> — 키는 `packages/` 하위 디렉토리명(예: `"core-common"`), 값은 해당 패키지 빌드 설정. `undefined` 면 그 패키지를 빌드 대상에서 제외. 워크스페이스의 어떤 패키지를 어떤 타겟으로 빌드할지 한 곳에 모은다.
|
|
32
|
+
- replaceDeps?: Record<string, string> — 의존성 교체(심링크). 키는 node_modules 에서 찾을 패키지 glob(예: `"@simplysm/*"`), 값은 로컬 소스 디렉토리 경로로 키의 `*` 캡처가 값의 `*` 에 치환됨(예: `"../simplysm/packages/*"`). 배포된 패키지 대신 로컬 소스를 곧바로 쓰고 싶을 때.
|
|
33
|
+
- postPublish?: SdPostPublishScriptConfig[] — 배포 완료 후 순차 실행할 스크립트 목록. 배포 후 알림·태깅 등 후처리에 쓴다.
|
|
34
|
+
|
|
35
|
+
사용 예:
|
|
18
36
|
|
|
19
37
|
```typescript
|
|
20
38
|
import type { SdConfigFn } from "@simplysm/sd-cli";
|
|
39
|
+
|
|
21
40
|
const config: SdConfigFn = ({ dev }) => ({
|
|
22
41
|
packages: {
|
|
23
42
|
"core-common": { target: "neutral" },
|
|
24
|
-
"core-node": { target: "node" },
|
|
43
|
+
"core-node": { target: "node", publish: { type: "npm" } },
|
|
44
|
+
"demo-client": dev ? { target: "client", server: "demo-server" } : undefined,
|
|
25
45
|
},
|
|
26
46
|
});
|
|
27
47
|
export default config;
|
|
28
48
|
```
|
|
29
49
|
|
|
30
|
-
##
|
|
50
|
+
## SdPackageConfig (빌드 타겟 분기 유니온)
|
|
31
51
|
|
|
32
|
-
|
|
52
|
+
```typescript
|
|
53
|
+
type SdPackageConfig =
|
|
54
|
+
| SdBuildPackageConfig // target: "node" | "browser" | "neutral"
|
|
55
|
+
| SdClientPackageConfig // target: "client"
|
|
56
|
+
| SdServerPackageConfig // target: "server"
|
|
57
|
+
| SdScriptsPackageConfig; // target: "scripts"
|
|
58
|
+
```
|
|
33
59
|
|
|
34
|
-
|
|
35
|
-
- replaceDeps?: Record<string, string> — 의존성 교체. key 는 node_modules 에서 찾을 패키지 glob(예: `"@simplysm/*"`), value 는 소스 디렉토리 경로이며 key 의 `*` 캡처가 value 의 `*` 에 치환됨. node_modules 패키지를 로컬 소스로 심링크해 빌드 없이 소스 import 할 때.
|
|
36
|
-
- postPublish?: SdPostPublishScriptConfig[] — 배포 완료 후 순차 실행할 스크립트 목록. 배포 후 후처리(태깅·알림 등)에 사용.
|
|
60
|
+
판별자는 `target`. enum literal 별 의미:
|
|
37
61
|
|
|
38
|
-
|
|
62
|
+
- "node" / "browser" / "neutral" (→ `SdBuildPackageConfig`) — esbuild 라이브러리 패키지. "node" = Node.js 전용, "browser" = 브라우저 전용, "neutral" = 공용. npm 배포 라이브러리에 쓴다.
|
|
63
|
+
- "client" (→ `SdClientPackageConfig`) — Frontend 앱(Angular + Capacitor/Electron/PWA 옵션). esbuild + define 으로 env 주입.
|
|
64
|
+
- "server" (→ `SdServerPackageConfig`) — Fastify 서버 앱. esbuild banner 로 env 주입, PM2 옵션.
|
|
65
|
+
- "scripts" (→ `SdScriptsPackageConfig`) — 유틸 패키지. watch 훅이 없으면 watch/typecheck 대상에서 제외됨.
|
|
39
66
|
|
|
40
|
-
|
|
67
|
+
### SdBuildPackageConfig (node/browser/neutral)
|
|
41
68
|
|
|
42
|
-
|
|
69
|
+
```typescript
|
|
70
|
+
interface SdBuildPackageConfig {
|
|
71
|
+
target: BuildTarget; // "node" | "browser" | "neutral"
|
|
72
|
+
publish?: SdPublishConfig;
|
|
73
|
+
copySrc?: string[];
|
|
74
|
+
watch?: SdWatchHookConfig;
|
|
75
|
+
}
|
|
76
|
+
```
|
|
43
77
|
|
|
44
|
-
- target: "node"
|
|
45
|
-
- publish?: SdPublishConfig — 배포 설정. 미지정 시 배포
|
|
46
|
-
- copySrc?: string[] — `src/` 에서 `dist/` 로 그대로 복사할
|
|
47
|
-
- watch?: SdWatchHookConfig — watch
|
|
78
|
+
- target: "node"|"browser"|"neutral" — 빌드 런타임 타겟(위 풀이 참조). 라이브러리가 어느 환경에서 돌지에 맞춰 고른다.
|
|
79
|
+
- publish?: SdPublishConfig — 배포 대상 설정. 미지정 시 배포 안 함. npm 배포 라이브러리면 `{ type: "npm" }`.
|
|
80
|
+
- copySrc?: string[] — `src/` 에서 `dist/` 로 그대로 복사할 파일 glob(src 기준 상대). 컴파일 대상 아닌 정적 리소스를 산출물에 포함할 때.
|
|
81
|
+
- watch?: SdWatchHookConfig — watch 모드에서 빌드 엔진과 함께 실행할 훅. 빌드 외 부수 작업(코드 생성 등)을 watch 에 끼울 때.
|
|
48
82
|
|
|
49
|
-
### SdClientPackageConfig (
|
|
83
|
+
### SdClientPackageConfig (client)
|
|
50
84
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
85
|
+
```typescript
|
|
86
|
+
interface SdClientPackageConfig {
|
|
87
|
+
target: "client";
|
|
88
|
+
server: string | number;
|
|
89
|
+
env?: Record<string, string>;
|
|
90
|
+
publish?: SdPublishConfig;
|
|
91
|
+
capacitor?: SdCapacitorConfig;
|
|
92
|
+
electron?: SdElectronConfig;
|
|
93
|
+
configs?: Record<string, unknown>;
|
|
94
|
+
exclude?: string[];
|
|
95
|
+
browserSupport?: SdBrowserSupportConfig;
|
|
96
|
+
pwa?: false | SdPwaConfig;
|
|
97
|
+
}
|
|
98
|
+
```
|
|
61
99
|
|
|
62
|
-
|
|
100
|
+
- server: string | number — 연결할 dev 서버. string = 서버 패키지명(예: `"demo-server"`), number = 포트 직접 지정(하위 호환). 보통 같은 워크스페이스의 서버 패키지명을 준다.
|
|
101
|
+
- env?: Record<string, string> — 빌드 시 `process.env` 를 객체로 치환할 환경 변수. 프론트 코드에 빌드 타임 상수를 주입할 때.
|
|
102
|
+
- publish?: SdPublishConfig — 산출물 배포 설정.
|
|
103
|
+
- capacitor?: SdCapacitorConfig — Capacitor 모바일 앱 패키징 설정. 지정 시 Android 등으로 패키징.
|
|
104
|
+
- electron?: SdElectronConfig — Electron 데스크톱 앱 패키징 설정.
|
|
105
|
+
- configs?: Record<string, unknown> — 런타임 설정. 빌드 시 `dist/.config.json` 으로 기록되어 앱이 런타임에 읽음. 배포 환경별 가변 값.
|
|
106
|
+
- exclude?: string[] — Capacitor/Electron `package.json` 에 추가(번들 제외)할 패키지 목록.
|
|
107
|
+
- browserSupport?: SdBrowserSupportConfig — 브라우저 호환(browserslist/PostCSS/legacyModule) 설정.
|
|
108
|
+
- pwa?: false | SdPwaConfig — PWA 설정. `false` 면 비활성화, 미지정 시 기본값으로 활성화, 객체면 manifest 커스텀. PWA 가 필요 없으면 `false`.
|
|
63
109
|
|
|
64
|
-
|
|
65
|
-
- env?: Record<string, string> — 빌드 시 `process.env.KEY` 를 상수로 치환할 환경 변수.
|
|
66
|
-
- publish?: SdPublishConfig — 배포 설정.
|
|
67
|
-
- configs?: Record<string, unknown> — 런타임 설정. 빌드 시 `dist/.config.json` 으로 기록.
|
|
68
|
-
- externals?: string[] — esbuild 번들에 포함하지 않을 외부 모듈. 네이티브 모듈(binding.gyp 자동 감지분에 추가)을 번들 제외할 때.
|
|
69
|
-
- pm2?: { name?: string; ignoreWatchPaths?: string[] } — PM2 설정. 지정 시 `dist/pm2.config.cjs` 생성. `name` = 프로세스 이름(미지정 시 package.json name 기반), `ignoreWatchPaths` = PM2 watch 제외 경로.
|
|
70
|
-
- packageManager?: "volta" | "mise" — 사용할 패키지 매니저. 생성되는 mise.toml/volta 설정에 영향. 배포 환경의 런타임 관리자 선택.
|
|
110
|
+
### SdServerPackageConfig (server)
|
|
71
111
|
|
|
72
|
-
|
|
112
|
+
```typescript
|
|
113
|
+
interface SdServerPackageConfig {
|
|
114
|
+
target: "server";
|
|
115
|
+
env?: Record<string, string>;
|
|
116
|
+
publish?: SdPublishConfig;
|
|
117
|
+
configs?: Record<string, unknown>;
|
|
118
|
+
externals?: string[];
|
|
119
|
+
pm2?: { name?: string; ignoreWatchPaths?: string[] };
|
|
120
|
+
packageManager?: "volta" | "mise";
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
- env?: Record<string, string> — 빌드 시 `process.env.KEY` 를 상수로 치환(esbuild banner). 서버 빌드 타임 상수 주입.
|
|
125
|
+
- configs?: Record<string, unknown> — 런타임 설정. `dist/.config.json` 으로 기록.
|
|
126
|
+
- externals?: string[] — esbuild 번들에 포함하지 않을 외부 모듈. 자동 `binding.gyp` 감지 항목에 더해짐. 네이티브 모듈을 번들에서 뺄 때.
|
|
127
|
+
- pm2?.name?: string — PM2 프로세스 이름. 미지정 시 `package.json` name 에서 생성. 지정 시 `dist/pm2.config.cjs` 생성.
|
|
128
|
+
- pm2?.ignoreWatchPaths?: string[] — PM2 watch 에서 제외할 경로.
|
|
129
|
+
- packageManager?: "volta" | "mise" — 산출물에 생성할 패키지 매니저 설정 종류. "volta" = volta 설정, "mise" = `mise.toml` 생성. 배포 서버의 매니저에 맞춘다.
|
|
73
130
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
131
|
+
### SdScriptsPackageConfig (scripts)
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
interface SdScriptsPackageConfig {
|
|
135
|
+
target: "scripts";
|
|
136
|
+
publish?: SdPublishConfig;
|
|
137
|
+
watch?: SdWatchHookConfig;
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
- watch?: SdWatchHookConfig — watch 훅. 지정해야만 이 패키지가 watch 모드에 포함됨(미지정 시 watch/typecheck 제외). 파일 변경 시 임의 명령 실행에 쓴다.
|
|
77
142
|
|
|
78
143
|
## SdWatchHookConfig
|
|
79
144
|
|
|
80
|
-
|
|
145
|
+
```typescript
|
|
146
|
+
interface SdWatchHookConfig {
|
|
147
|
+
target: string[];
|
|
148
|
+
cmd: string;
|
|
149
|
+
args?: string[];
|
|
150
|
+
}
|
|
151
|
+
```
|
|
81
152
|
|
|
82
|
-
- target: string[] — 감시할 glob 패턴(패키지 디렉토리 기준 상대
|
|
83
|
-
- cmd: string — 변경 시 실행할 명령어.
|
|
153
|
+
- target: string[] — 감시할 glob 패턴(패키지 디렉토리 기준 상대). 어떤 파일 변경에 반응할지.
|
|
154
|
+
- cmd: string — 변경 감지 시 실행할 명령어.
|
|
84
155
|
- args?: string[] — 명령어 인수.
|
|
85
156
|
|
|
86
|
-
## 배포 설정 (SdPublishConfig
|
|
157
|
+
## 배포 설정 (SdPublishConfig 유니온 + SdPostPublishScriptConfig)
|
|
87
158
|
|
|
88
|
-
|
|
159
|
+
```typescript
|
|
160
|
+
type SdPublishConfig = SdNpmPublishConfig | SdLocalDirectoryPublishConfig | SdStoragePublishConfig;
|
|
161
|
+
```
|
|
89
162
|
|
|
90
|
-
|
|
91
|
-
- SdLocalDirectoryPublishConfig — `{ type: "local-directory"; path: string }`. 로컬 디렉토리 복사 배포. `path` 는 환경 변수 치환(`%VER%`, `%PROJECT%`) 지원.
|
|
92
|
-
- SdStoragePublishConfig — FTP/FTPS/SFTP 업로드 배포.
|
|
93
|
-
- type: "ftp" | "ftps" | "sftp" — 전송 프로토콜. 보안 필요 시 ftps/sftp.
|
|
94
|
-
- host: string — 서버 호스트.
|
|
95
|
-
- port?: number — 포트.
|
|
96
|
-
- path?: string — 업로드 대상 경로.
|
|
97
|
-
- user?: string — 접속 계정.
|
|
98
|
-
- password?: string — 접속 비밀번호.
|
|
163
|
+
판별자는 `type`:
|
|
99
164
|
|
|
100
|
-
`
|
|
165
|
+
- `SdNpmPublishConfig` — `{ type: "npm" }`. npm 레지스트리 배포. 공개 라이브러리에 쓴다.
|
|
166
|
+
- `SdLocalDirectoryPublishConfig` — `{ type: "local-directory"; path: string }`. 로컬 디렉토리로 복사. `path` 는 `%VER%`/`%PROJECT%` 치환 지원. 사내 공유 폴더 배포에.
|
|
167
|
+
- `SdStoragePublishConfig` — `{ type: "ftp"|"ftps"|"sftp"; host; port?; path?; user?; password? }`. type 별 프로토콜 차이(ftp = 평문, ftps = TLS, sftp = SSH). 원격 서버 업로드 배포에. host 만 필수, 나머지는 선택.
|
|
101
168
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
169
|
+
```typescript
|
|
170
|
+
interface SdPostPublishScriptConfig {
|
|
171
|
+
type: "script";
|
|
172
|
+
cmd: string;
|
|
173
|
+
args: string[]; // %VER%, %PROJECT% 치환 지원
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- cmd: string — 배포 후 실행할 명령어.
|
|
178
|
+
- args: string[] — 인수. `%VER%`(버전), `%PROJECT%`(프로젝트명) 치환됨.
|
|
105
179
|
|
|
106
|
-
## Capacitor 설정 (
|
|
180
|
+
## Capacitor 설정 (client 의 capacitor)
|
|
107
181
|
|
|
108
|
-
|
|
182
|
+
```typescript
|
|
183
|
+
interface SdCapacitorConfig {
|
|
184
|
+
appId: string;
|
|
185
|
+
appName: string;
|
|
186
|
+
plugins?: Record<string, Record<string, unknown> | true>;
|
|
187
|
+
icon?: string;
|
|
188
|
+
debug?: boolean;
|
|
189
|
+
platform?: { android?: SdCapacitorAndroidConfig };
|
|
190
|
+
}
|
|
191
|
+
```
|
|
109
192
|
|
|
110
|
-
- appId: string — 앱 ID(예: `"com.example.app"`).
|
|
111
|
-
- appName: string — 앱 이름.
|
|
112
|
-
- plugins?: Record<string, Record<string, unknown> | true> — Capacitor
|
|
113
|
-
- icon?: string — 앱 아이콘 경로(패키지
|
|
193
|
+
- appId: string — 앱 ID(역도메인, 예: `"com.example.app"`). 스토어 식별자.
|
|
194
|
+
- appName: string — 앱 표시 이름.
|
|
195
|
+
- plugins?: Record<string, Record<string, unknown> | true> — Capacitor 플러그인. 키 = 패키지명, 값 = `true`(옵션 없이 활성) 또는 옵션 객체. 옵션이 필요 없으면 `true`.
|
|
196
|
+
- icon?: string — 앱 아이콘 경로(패키지 기준 상대).
|
|
114
197
|
- debug?: boolean — 디버그 빌드 플래그.
|
|
115
|
-
- platform
|
|
198
|
+
- platform?.android?: SdCapacitorAndroidConfig — Android 플랫폼별 설정.
|
|
116
199
|
|
|
117
|
-
|
|
200
|
+
```typescript
|
|
201
|
+
interface SdCapacitorAndroidConfig {
|
|
202
|
+
config?: Record<string, string>;
|
|
203
|
+
bundle?: boolean;
|
|
204
|
+
intentFilters?: SdCapacitorIntentFilter[];
|
|
205
|
+
sign?: SdCapacitorSignConfig;
|
|
206
|
+
sdkVersion?: number;
|
|
207
|
+
permissions?: SdCapacitorPermission[];
|
|
208
|
+
}
|
|
209
|
+
```
|
|
118
210
|
|
|
119
|
-
- config?: Record<string, string> — AndroidManifest.xml
|
|
120
|
-
- bundle?: boolean — true
|
|
121
|
-
- intentFilters?: SdCapacitorIntentFilter[] — Intent Filter 목록.
|
|
122
|
-
- sign?: SdCapacitorSignConfig — APK/AAB 서명 설정.
|
|
211
|
+
- config?: Record<string, string> — `AndroidManifest.xml` 의 `<application>` 태그 속성(예: `{ requestLegacyExternalStorage: "true" }`).
|
|
212
|
+
- bundle?: boolean — true = AAB 번들, false = APK. 스토어 배포면 true.
|
|
213
|
+
- intentFilters?: SdCapacitorIntentFilter[] — 딥링크 등 Intent Filter 목록.
|
|
214
|
+
- sign?: SdCapacitorSignConfig — APK/AAB 서명 설정. 릴리스 빌드에 필요.
|
|
123
215
|
- sdkVersion?: number — Android SDK 버전(minSdk·targetSdk 공통).
|
|
124
216
|
- permissions?: SdCapacitorPermission[] — 추가 권한 목록.
|
|
125
217
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
`SdCapacitorSignConfig`:
|
|
132
|
-
|
|
133
|
-
- keystore: string — keystore 파일 경로(패키지 디렉토리 기준 상대).
|
|
134
|
-
- storePassword: string — keystore 비밀번호.
|
|
135
|
-
- alias: string — 키 별칭.
|
|
136
|
-
- password: string — 키 비밀번호.
|
|
137
|
-
- keystoreType?: string — keystore 타입(기본 `"jks"`).
|
|
218
|
+
```typescript
|
|
219
|
+
interface SdCapacitorSignConfig { keystore: string; storePassword: string; alias: string; password: string; keystoreType?: string; }
|
|
220
|
+
interface SdCapacitorPermission { name: string; maxSdkVersion?: number; ignore?: string; }
|
|
221
|
+
interface SdCapacitorIntentFilter { action?: string; category?: string; }
|
|
222
|
+
```
|
|
138
223
|
|
|
139
|
-
`
|
|
224
|
+
- SdCapacitorSignConfig.keystore — keystore 파일 경로(패키지 기준 상대). storePassword/alias/password = 서명 자격. keystoreType?: string — keystore 타입(기본값 `"jks"`).
|
|
225
|
+
- SdCapacitorPermission.name — 권한 이름(예: `"CAMERA"`). maxSdkVersion?: number — 권한 적용 최대 SDK. ignore?: string — `tools:ignore` 속성 값.
|
|
226
|
+
- SdCapacitorIntentFilter.action — intent 액션(예: `"android.intent.action.VIEW"`). category — intent 카테고리(예: `"android.intent.category.DEFAULT"`).
|
|
140
227
|
|
|
141
|
-
|
|
142
|
-
- maxSdkVersion?: number — 권한 적용 최대 SDK 버전.
|
|
143
|
-
- ignore?: string — `tools:ignore` 속성 값.
|
|
228
|
+
## Electron 설정 (client 의 electron)
|
|
144
229
|
|
|
145
|
-
|
|
230
|
+
```typescript
|
|
231
|
+
interface SdElectronConfig {
|
|
232
|
+
appId: string;
|
|
233
|
+
portable?: boolean;
|
|
234
|
+
installerIcon?: string;
|
|
235
|
+
reinstallDependencies?: string[];
|
|
236
|
+
postInstallScript?: string;
|
|
237
|
+
nsisOptions?: Record<string, unknown>;
|
|
238
|
+
env?: Record<string, string>;
|
|
239
|
+
}
|
|
240
|
+
```
|
|
146
241
|
|
|
147
|
-
- appId: string — Electron 앱 ID(예: `"com.example.myapp"`).
|
|
148
|
-
- portable?: boolean — true
|
|
149
|
-
- installerIcon?: string — 설치 프로그램 아이콘
|
|
150
|
-
- reinstallDependencies?: string[] — Electron 에 포함할 npm 패키지(네이티브 모듈 등)
|
|
242
|
+
- appId: string — Electron 앱 ID(역도메인, 예: `"com.example.myapp"`).
|
|
243
|
+
- portable?: boolean — true = 포터블 `.exe`, false/미지정 = NSIS 설치 프로그램. 설치 없이 실행 배포면 true.
|
|
244
|
+
- installerIcon?: string — 설치 프로그램 아이콘(`.ico`, 패키지 기준 상대).
|
|
245
|
+
- reinstallDependencies?: string[] — Electron 에 포함할 npm 패키지(네이티브 모듈 등) 목록.
|
|
151
246
|
- postInstallScript?: string — npm postinstall 스크립트.
|
|
152
247
|
- nsisOptions?: Record<string, unknown> — NSIS 옵션(`portable` 이 false 일 때 적용).
|
|
153
|
-
- env?: Record<string, string> — 환경 변수. `electron-main.ts` 에서 `process.env` 로
|
|
248
|
+
- env?: Record<string, string> — 환경 변수. `electron-main.ts` 에서 `process.env` 로 접근 가능.
|
|
154
249
|
|
|
155
|
-
## PWA 설정 (
|
|
250
|
+
## PWA 설정 (client 의 pwa)
|
|
156
251
|
|
|
157
|
-
|
|
252
|
+
```typescript
|
|
253
|
+
interface SdPwaConfig { manifest?: SdPwaManifestConfig; }
|
|
254
|
+
interface SdPwaManifestConfig {
|
|
255
|
+
name?: string;
|
|
256
|
+
short_name?: string;
|
|
257
|
+
display?: "standalone" | "fullscreen" | "minimal-ui" | "browser";
|
|
258
|
+
theme_color?: string;
|
|
259
|
+
background_color?: string;
|
|
260
|
+
icons?: Array<{ src: string; sizes: string; type?: string }>;
|
|
261
|
+
}
|
|
262
|
+
```
|
|
158
263
|
|
|
159
|
-
- manifest?: SdPwaManifestConfig — PWA manifest
|
|
264
|
+
- manifest?: SdPwaManifestConfig — PWA manifest 커스터마이징. 미지정 시 기본 manifest.
|
|
265
|
+
- display?: "standalone"|"fullscreen"|"minimal-ui"|"browser" — 앱 표시 모드. "standalone" = 브라우저 UI 없는 앱 창, "fullscreen" = 전체 화면, "minimal-ui" = 최소 브라우저 UI, "browser" = 일반 탭. 네이티브 느낌이면 "standalone".
|
|
266
|
+
- name/short_name/theme_color/background_color — manifest 표준 필드(앱 이름·축약명·테마색·배경색).
|
|
267
|
+
- icons?: Array<{ src; sizes; type? }> — manifest 아이콘 목록(경로·크기·MIME).
|
|
160
268
|
|
|
161
|
-
|
|
269
|
+
## SdBrowserSupportConfig (client 의 browserSupport)
|
|
162
270
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
271
|
+
```typescript
|
|
272
|
+
interface SdBrowserSupportConfig {
|
|
273
|
+
browserslist?: string | string[];
|
|
274
|
+
postCss?: { plugins: [string, (object | string)?][] };
|
|
275
|
+
legacyModule?: boolean;
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
- browserslist?: string | string[] — browserslist 쿼리(예: `"last 2 Chrome versions"` 또는 `["ie 11", "last 2 versions"]`). 트랜스파일·prefix 대상 브라우저 범위.
|
|
280
|
+
- postCss?.plugins: [string, (object|string)?][] — PostCSS 플러그인 `[이름, 옵션?]` 튜플 배열.
|
|
281
|
+
- legacyModule?: boolean — 레거시 모듈 지원. true 면 코드 분할 비활성화 + `import.meta` 치환. 구형 환경 대응이 필요할 때.
|
|
169
282
|
|
|
170
283
|
## 보조 타입
|
|
171
284
|
|
|
172
|
-
|
|
173
|
-
|
|
285
|
+
```typescript
|
|
286
|
+
type BuildTarget = "node" | "browser" | "neutral";
|
|
287
|
+
interface NpmConfig { name; version; description?; dependencies?; devDependencies?; peerDependencies?; volta?; }
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
- BuildTarget — esbuild 라이브러리 빌드 런타임 타겟 enum(위 `SdPackageConfig` 풀이 참조).
|
|
291
|
+
- NpmConfig — `package.json` 구조 타입. name/version 필수, 나머지 선택. package.json 을 타입 안전하게 다룰 때.
|