@simplysm/sd-claude 14.0.97 → 14.0.99

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.
Files changed (77) hide show
  1. package/claude/references/sd-simplysm14/README.md +16 -16
  2. package/claude/references/sd-simplysm14/apis/angular/README.md +81 -153
  3. package/claude/references/sd-simplysm14/apis/angular/controls.md +179 -205
  4. package/claude/references/sd-simplysm14/apis/angular/crud.md +71 -57
  5. package/claude/references/sd-simplysm14/apis/angular/directives.md +49 -109
  6. package/claude/references/sd-simplysm14/apis/angular/features.md +58 -86
  7. package/claude/references/sd-simplysm14/apis/angular/kanban.md +32 -40
  8. package/claude/references/sd-simplysm14/apis/angular/layout.md +38 -52
  9. package/claude/references/sd-simplysm14/apis/angular/overlay.md +86 -110
  10. package/claude/references/sd-simplysm14/apis/angular/routing-appstructure.md +54 -86
  11. package/claude/references/sd-simplysm14/apis/angular/shared-data.md +82 -74
  12. package/claude/references/sd-simplysm14/apis/angular/sheet.md +56 -80
  13. package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +15 -15
  14. package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +21 -21
  15. package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +79 -53
  16. package/claude/references/sd-simplysm14/apis/capacitor-plugin-usb-storage/README.md +9 -11
  17. package/claude/references/sd-simplysm14/apis/core-browser/README.md +15 -15
  18. package/claude/references/sd-simplysm14/apis/core-browser/dom-element.md +20 -20
  19. package/claude/references/sd-simplysm14/apis/core-browser/indexed-db.md +18 -18
  20. package/claude/references/sd-simplysm14/apis/core-common/README.md +20 -49
  21. package/claude/references/sd-simplysm14/apis/core-common/async-runtime.md +66 -55
  22. package/claude/references/sd-simplysm14/apis/core-common/collection-ext.md +83 -56
  23. package/claude/references/sd-simplysm14/apis/core-common/errors.md +32 -21
  24. package/claude/references/sd-simplysm14/apis/core-common/obj.md +57 -39
  25. package/claude/references/sd-simplysm14/apis/core-common/serialization.md +36 -30
  26. package/claude/references/sd-simplysm14/apis/core-common/value-types.md +69 -41
  27. package/claude/references/sd-simplysm14/apis/core-node/README.md +4 -4
  28. package/claude/references/sd-simplysm14/apis/core-node/consola.md +15 -13
  29. package/claude/references/sd-simplysm14/apis/core-node/cpx.md +11 -7
  30. package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +8 -8
  31. package/claude/references/sd-simplysm14/apis/core-node/fsx.md +29 -20
  32. package/claude/references/sd-simplysm14/apis/core-node/pathx.md +14 -6
  33. package/claude/references/sd-simplysm14/apis/core-node/worker.md +3 -3
  34. package/claude/references/sd-simplysm14/apis/excel/README.md +3 -3
  35. package/claude/references/sd-simplysm14/apis/excel/cell.md +32 -32
  36. package/claude/references/sd-simplysm14/apis/excel/conditional-format.md +23 -24
  37. package/claude/references/sd-simplysm14/apis/excel/style.md +24 -30
  38. package/claude/references/sd-simplysm14/apis/excel/utils.md +20 -23
  39. package/claude/references/sd-simplysm14/apis/excel/workbook-worksheet.md +60 -71
  40. package/claude/references/sd-simplysm14/apis/excel/wrapper.md +36 -36
  41. package/claude/references/sd-simplysm14/apis/lint/README.md +7 -9
  42. package/claude/references/sd-simplysm14/apis/lint/recommended.md +59 -37
  43. package/claude/references/sd-simplysm14/apis/lint/rules.md +81 -74
  44. package/claude/references/sd-simplysm14/apis/orm-common/README.md +6 -6
  45. package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +112 -78
  46. package/claude/references/sd-simplysm14/apis/orm-common/expr.md +131 -75
  47. package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +126 -82
  48. package/claude/references/sd-simplysm14/apis/orm-common/schema.md +170 -113
  49. package/claude/references/sd-simplysm14/apis/orm-common/types.md +102 -48
  50. package/claude/references/sd-simplysm14/apis/orm-node/README.md +12 -13
  51. package/claude/references/sd-simplysm14/apis/orm-node/db-conn.md +3 -3
  52. package/claude/references/sd-simplysm14/apis/sd-cli/README.md +5 -5
  53. package/claude/references/sd-simplysm14/apis/sd-cli/SdTsCompiler.md +67 -65
  54. package/claude/references/sd-simplysm14/apis/sd-cli/sd-config-types.md +130 -123
  55. package/claude/references/sd-simplysm14/apis/service-client/README.md +63 -63
  56. package/claude/references/sd-simplysm14/apis/service-client/orm.md +22 -22
  57. package/claude/references/sd-simplysm14/apis/service-client/transport.md +30 -26
  58. package/claude/references/sd-simplysm14/apis/service-common/README.md +8 -8
  59. package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +13 -6
  60. package/claude/references/sd-simplysm14/apis/service-common/protocol.md +1 -1
  61. package/claude/references/sd-simplysm14/apis/service-server/README.md +43 -47
  62. package/claude/references/sd-simplysm14/apis/service-server/built-in-services.md +35 -0
  63. package/claude/references/sd-simplysm14/apis/service-server/service-authoring.md +20 -19
  64. package/claude/references/sd-simplysm14/apis/service-server/transport-internals.md +23 -25
  65. package/claude/references/sd-simplysm14/apis/service-server/v1-legacy.md +9 -9
  66. package/claude/references/sd-simplysm14/apis/storage/README.md +26 -26
  67. package/claude/references/sd-simplysm14/manuals/client-component.md +9 -1
  68. package/claude/references/sd-simplysm14/manuals/client-crud.md +1 -1
  69. package/claude/references/sd-simplysm14/manuals/client-orm.md +1 -0
  70. package/claude/references/sd-simplysm14/manuals/client-service.md +1 -0
  71. package/claude/references/sd-simplysm14/manuals/client-shared-data.md +1 -0
  72. package/claude/references/sd-simplysm14/manuals/client-ssg.md +1 -0
  73. package/claude/sd-system-prompt.md +11 -26
  74. package/claude/skills/sd-docs/references/subagent-prompt.md +4 -3
  75. package/claude/skills/sd-spec/SKILL.md +87 -18
  76. package/claude/skills/sd-spec/references/format.md +2 -2
  77. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  # @simplysm/sd-cli — sd.config.ts 설정 타입
2
2
 
3
- 프로젝트 루트 `sd.config.ts` 작성·수정 시 함께 읽히는 타입 묶음. `sd.config.ts` 는 `SdConfigFn` 형태의 함수를 default export 해야 하며, 반환값 `SdConfig` `packages` 맵에 패키지를 타겟별 설정으로 채운다. 모든 타입은 `import type { ... } from "@simplysm/sd-cli"` 로 가져온다.
3
+ 프로젝트 루트 `sd.config.ts` 는 `SdConfigFn` 형태의 함수를 `default export` 해야 한다 `(params: SdConfigParams) => SdConfig | Promise<SdConfig>`. sd-cli 함수를 호출해 패키지별 빌드 타겟·배포·앱 패키징·의존성 교체를 결정한다. 모든 타입은 entry 의 `export *` 로 노출되며 `import type { ... } from "@simplysm/sd-cli"` 로 가져온다.
4
4
 
5
5
  ## SdConfigFn / SdConfigParams / SdConfig
6
6
 
@@ -20,34 +20,31 @@ interface SdConfig {
20
20
  }
21
21
  ```
22
22
 
23
- `SdConfigParams` (sd-cli 가 설정 함수에 주입):
23
+ `SdConfigParams` sd-cli 가 config 함수에 넘기는 인자:
24
24
 
25
- - cwd: string — 현재 작업 디렉토리(워크스페이스 루트). 설정에서 경로를 절대화할 때 기준.
26
- - dev: boolean — 개발 모드 플래그. true 면 dev 실행(watch/dev) 중. env·빌드 타겟을 dev/prod 분기할 때.
27
- - opt: string[] — CLI `-o` 플래그로 넘어온 추가 옵션 배열. 특정 옵션이 들어왔을 때만 패키지를 켜는 식의 임의 빌드 변형에.
25
+ - **cwd**: string — 현재 작업 디렉토리(워크스페이스 루트).
26
+ - **dev**: boolean — 개발 모드 플래그. `true`(`watch`/`dev`) `false`(프로덕션 `build`/`pub`)에 따라 다른 설정을 반환하는 분기에 쓴다.
27
+ - **opt**: string[] — CLI `-o <opt>` 전달된 추가 옵션 배열.
28
28
 
29
- `SdConfig`:
29
+ `SdConfig` — config 함수 반환값:
30
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
- 사용 예:
31
+ - **packages**: `Record<string, SdPackageConfig | undefined>` — 키는 `packages/` 하위 디렉토리명(예: `"core-common"`), 값은 그 패키지의 빌드 설정. `undefined` 면 빌드 대상에서 제외.
32
+ - **replaceDeps**: `Record<string, string>`node_modules 패키지를 로컬 소스로 심링크 교체. 키는 node_modules 에서 찾을 glob(예: `"@simplysm/*"`), 값은 소스 디렉토리 경로이며 키의 `*` 캡처가 값의 `*` 에 치환됨(예: `"../simplysm/packages/*"`). 로컬 소스를 빌드 없이 곧바로 참조하게 만든다.
33
+ - **postPublish**: `SdPostPublishScriptConfig[]` — 배포 완료 후 실행할 스크립트 목록.
36
34
 
37
35
  ```typescript
38
36
  import type { SdConfigFn } from "@simplysm/sd-cli";
39
37
 
40
- const config: SdConfigFn = ({ dev }) => ({
38
+ const config: SdConfigFn = (params) => ({
41
39
  packages: {
42
40
  "core-common": { target: "neutral" },
43
- "core-node": { target: "node", publish: { type: "npm" } },
44
- "demo-client": dev ? { target: "client", server: "demo-server" } : undefined,
41
+ "core-node": { target: "node" },
45
42
  },
46
43
  });
47
44
  export default config;
48
45
  ```
49
46
 
50
- ## SdPackageConfig (빌드 타겟 분기 유니온)
47
+ ## SdPackageConfig (타겟별 패키지 설정)
51
48
 
52
49
  ```typescript
53
50
  type SdPackageConfig =
@@ -55,30 +52,34 @@ type SdPackageConfig =
55
52
  | SdClientPackageConfig // target: "client"
56
53
  | SdServerPackageConfig // target: "server"
57
54
  | SdScriptsPackageConfig; // target: "scripts"
55
+
56
+ type BuildTarget = "node" | "browser" | "neutral";
58
57
  ```
59
58
 
60
- 판별자는 `target`. enum literal 별 의미:
59
+ `target` literal 로 어느 멤버인지 구분하는 판별 유니온. `target` 동작 차이:
61
60
 
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 대상에서 제외됨.
61
+ - **`"node"`** — Node.js 전용 라이브러리 패키지(esbuild 빌드, npm 배포용).
62
+ - **`"browser"`**브라우저 전용 라이브러리 패키지.
63
+ - **`"neutral"`**Node/브라우저 공용 라이브러리 패키지.
64
+ - **`"client"`**Frontend 패키지(Angular + Capacitor/Electron/PWA).
65
+ - **`"server"`** — Fastify 서버 앱 패키지.
66
+ - **`"scripts"`** — 유틸 패키지(watch 훅으로 임의 명령 실행).
66
67
 
67
68
  ### SdBuildPackageConfig (node/browser/neutral)
68
69
 
69
70
  ```typescript
70
71
  interface SdBuildPackageConfig {
71
- target: BuildTarget; // "node" | "browser" | "neutral"
72
+ target: BuildTarget;
72
73
  publish?: SdPublishConfig;
73
74
  copySrc?: string[];
74
75
  watch?: SdWatchHookConfig;
75
76
  }
76
77
  ```
77
78
 
78
- - target: "node"|"browser"|"neutral" — 빌드 런타임 타겟(풀이 참조). 라이브러리가 어느 환경에서 돌지에 맞춰 고른다.
79
- - publish?: SdPublishConfig — 배포 대상 설정. 미지정 배포 함. npm 배포 라이브러리면 `{ type: "npm" }`.
80
- - copySrc?: string[] — `src/` 에서 `dist/` 로 그대로 복사할 파일 glob(src 기준 상대). 컴파일 대상 아닌 정적 리소스를 산출물에 포함할 때.
81
- - watch?: SdWatchHookConfig — watch 모드에서 빌드 엔진과 함께 실행할 훅. 빌드 외 부수 작업(코드 생성 등)을 watch 에 끼울 때.
79
+ - **target**: `"node" | "browser" | "neutral"` — 위 BuildTarget 동작 차이 참조.
80
+ - **publish**: `SdPublishConfig` — 배포 설정(아래 §배포 설정). 라이브러리 패키지는 보통 `{ type: "npm" }`.
81
+ - **copySrc**: string[] — `src/`→`dist/` 로 그대로 복사할 파일의 glob 패턴(`src/` 기준 상대). esbuild 번들에 포함되지 않는 정적 자원을 dist 남길 때.
82
+ - **watch**: `SdWatchHookConfig`설정 시 watch 모드에서 빌드 엔진과 함께 훅이 실행됨.
82
83
 
83
84
  ### SdClientPackageConfig (client)
84
85
 
@@ -98,19 +99,24 @@ interface SdClientPackageConfig {
98
99
  }
99
100
  ```
100
101
 
101
- - server: string | number — 연결할 서버. string = 서버 패키지명(예: `"demo-server"`), number = 포트 직접 지정(하위 호환). 보통 같은 워크스페이스의 서버 패키지명을 준다.
102
- - env?: Record<string, string> — 빌드 시 `process.env` 를 객체로 치환할 환경 변수. 프론트 코드에 빌드 타임 상수를 주입할 때.
103
- - publish?: SdPublishConfig — 산출물 배포 설정. 미지정 시 배포 안 함.
104
- - capacitor?: SdCapacitorConfig — Capacitor 모바일 앱 패키징 설정. 지정 시 Android 등으로 패키징.
105
- - electron?: SdElectronConfig — Electron 데스크톱 앱 패키징 설정.
106
- - configs?: Record<string, unknown> — 런타임 설정. 빌드 시 `dist/.config.json` 으로 기록되어 앱이 런타임에 읽음. 배포 환경별 가변 값에.
107
- - exclude?: string[] — Capacitor/Electron `package.json`추가(번들에서 빼 외부 패키지로 둘) 패키지 목록.
108
- - browserSupport?: SdBrowserSupportConfig — 브라우저 호환(browserslist/PostCSS/legacyModule) 설정.
109
- - pwa?: false | SdPwaConfig — PWA 설정. `false` 면 비활성화, 미지정 시 기본값으로 활성화, 객체면 manifest 커스텀. PWA 가 필요 없으면 `false`.
110
- - prerender?: string[] — SSG(빌드 타임 프리렌더) 라우트 목록(예: `["/", "/about"]`). SEO 필요한 공개 페이지에 지정. 프로덕션 빌드에서만 동작하며 dev/watch 모드는 기존 SPA 그대로. 동작:
111
- - `src/main.server.ts` 가 서버 부트스트랩(`(context: BootstrapContext) => bootstrapApplication(App, config, context)`)을 default export 해야 하며, 앱 설정에 `provideClientHydration()`, 서버 설정에 `provideServerRendering()` 포함. `@angular/platform-server` 의존성 필요 (Angular 표준 SSR 셋업과 동일).
112
- - 라우트별 `<경로>/index.html` 을 서버 렌더 결과로 생성 (`"/"` 는 `index.html` 대체). SPA 셸은 `index.csr.html` 로 별도 보존되어 비프리렌더 라우트 딥링크 폴백에 사용 (service-server 정적 핸들러가 처리).
113
- - 라우트 1건이라도 렌더 실패 시 빌드 전체 실패.
102
+ - **server**: `string | number`string 이면 연결할 서버 패키지명(예: `"demo-server"`), number 이면 포트 직접 지정(하위 호환).
103
+ - **env**: `Record<string, string>` — 빌드 시 치환할 환경 변수. `process.env` 를 객체로 치환(define 주입).
104
+ - **publish**: `SdPublishConfig` — 배포 설정.
105
+ - **capacitor**: `SdCapacitorConfig`모바일(Capacitor) 패키징 설정. 지정 시 앱을 Android 등으로 빌드.
106
+ - **electron**: `SdElectronConfig`데스크톱(Electron) 패키징 설정.
107
+ - **configs**: `Record<string, unknown>` — 런타임 설정. 빌드 시 `dist/.config.json` 으로 기록되어 앱이 런타임에 읽음.
108
+ - **exclude**: string[] — Capacitor/Electron package.json 에 추가할(번들에서 제외할) 패키지.
109
+ - **browserSupport**: `SdBrowserSupportConfig` — browserslist/PostCSS/legacyModule 등 브라우저 지원 설정.
110
+ - **pwa**: `false | SdPwaConfig` — `false` 면 PWA 비활성화. 미지정 시 기본값으로 활성화. 객체면 manifest 세부 지정.
111
+ - **prerender**: string[] — SSG(빌드 타임 프리렌더) 라우트 목록(예: `["/", "/about"]`). 지정 프로덕션 빌드에서 `src/main.server.ts` 진입점으로 라우트별 HTML 생성하고, SPA 셸은 `index.csr.html` 로 별도 출력. dev/watch 모드에는 적용되지 않음. 라우트는 `"/"` 로 시작.
112
+
113
+ ```typescript
114
+ "client-portal": {
115
+ target: "client",
116
+ server: "server",
117
+ prerender: ["/", "/about"],
118
+ },
119
+ ```
114
120
 
115
121
  ### SdServerPackageConfig (server)
116
122
 
@@ -126,13 +132,11 @@ interface SdServerPackageConfig {
126
132
  }
127
133
  ```
128
134
 
129
- - env?: Record<string, string> — 빌드 시 `process.env.KEY` 를 상수로 치환(esbuild banner). 서버 빌드 타임 상수 주입.
130
- - publish?: SdPublishConfig산출물 배포 설정.
131
- - configs?: Record<string, unknown> 런타임 설정. `dist/.config.json` 으로 기록.
132
- - externals?: string[] esbuild 번들에 포함하지 않을 외부 모듈. 자동 `binding.gyp` 감지 항목에 더해짐. 네이티브 모듈을 번들에서 때.
133
- - pm2?.name?: string PM2 프로세스 이름. 미지정 `package.json` name 에서 생성. `pm2` 지정 시 `dist/pm2.config.cjs` 생성.
134
- - pm2?.ignoreWatchPaths?: string[] — PM2 watch 에서 제외할 경로.
135
- - packageManager?: "volta" | "mise" — 산출물에 생성할 패키지 매니저 설정 종류. "volta" = volta 설정, "mise" = `mise.toml` 생성. 배포 서버의 매니저에 맞춘다.
135
+ - **env**: `Record<string, string>` — 빌드 시 치환할 환경 변수. `process.env.KEY` 를 상수로 치환(esbuild banner 주입).
136
+ - **configs**: `Record<string, unknown>` 런타임 설정. 빌드 시 `dist/.config.json` 으로 기록.
137
+ - **externals**: string[]esbuild 번들에 포함하지 않을 외부 모듈. 자동 `binding.gyp` 감지 목록에 추가됨(네이티브 모듈 외부화).
138
+ - **pm2**: 지정 `dist/pm2.config.cjs` 생성. `name` PM2 프로세스 이름(미지정 시 package.json name 에서 생성), `ignoreWatchPaths` PM2 watch 제외 경로.
139
+ - **packageManager**: `"volta" | "mise"` 사용할 패키지 매니저. `mise.toml` 또는 volta 설정 생성에 영향.
136
140
 
137
141
  ### SdScriptsPackageConfig (scripts)
138
142
 
@@ -142,50 +146,47 @@ interface SdScriptsPackageConfig {
142
146
  publish?: SdPublishConfig;
143
147
  watch?: SdWatchHookConfig;
144
148
  }
145
- ```
146
-
147
- - publish?: SdPublishConfig — 산출물 배포 설정.
148
- - watch?: SdWatchHookConfig — watch 훅. 지정해야만 이 패키지가 watch 모드에 포함됨(미지정 시 watch/typecheck 제외). 파일 변경 시 임의 명령 실행에 쓴다.
149
149
 
150
- ## SdWatchHookConfig
151
-
152
- ```typescript
153
150
  interface SdWatchHookConfig {
154
- target: string[];
155
- cmd: string;
156
- args?: string[];
151
+ target: string[]; // 감시할 glob (패키지 디렉토리 기준 상대)
152
+ cmd: string; // 변경 시 실행할 명령어
153
+ args?: string[]; // 명령어 인수
157
154
  }
158
155
  ```
159
156
 
160
- - target: string[]감시할 glob 패턴(패키지 디렉토리 기준 상대). 어떤 파일 변경에 반응할지.
161
- - cmd: string — 변경 감지 실행할 명령어.
162
- - args?: string[] 명령어 인수.
157
+ - **SdScriptsPackageConfig.watch**: `SdWatchHookConfig`설정 시에만 watch 모드에 패키지가 포함됨. 미설정이면 watch/typecheck 에서 제외.
158
+ - **SdWatchHookConfig.target**: string[]감시할 glob 패턴(패키지 디렉토리 기준 상대 경로).
159
+ - **SdWatchHookConfig.cmd / args**: 변경 감지 실행할 명령어와 인수.
163
160
 
164
- ## 배포 설정 (SdPublishConfig 유니온 + SdPostPublishScriptConfig)
161
+ ## 배포 설정 (SdPublishConfig)
165
162
 
166
163
  ```typescript
167
164
  type SdPublishConfig = SdNpmPublishConfig | SdLocalDirectoryPublishConfig | SdStoragePublishConfig;
165
+
166
+ interface SdNpmPublishConfig { type: "npm"; }
167
+ interface SdLocalDirectoryPublishConfig { type: "local-directory"; path: string; }
168
+ interface SdStoragePublishConfig {
169
+ type: "ftp" | "ftps" | "sftp";
170
+ host: string; port?: number; path?: string; user?: string; password?: string;
171
+ }
172
+
173
+ interface SdPostPublishScriptConfig { type: "script"; cmd: string; args: string[]; }
168
174
  ```
169
175
 
170
- 판별자는 `type`:
176
+ `type` literal 로 배포 방식 판별:
177
+
178
+ - **`"npm"`** — npm 레지스트리에 배포. 추가 필드 없음.
179
+ - **`"local-directory"`** — 로컬 디렉토리로 복사. `path` 는 대상 경로이며 환경 변수 치환 지원(`%VER%`, `%PROJECT%`).
180
+ - **`"ftp" | "ftps" | "sftp"`** — 스토리지 서버에 업로드. `host` 필수, `port`/`path`/`user`/`password` 는 선택.
171
181
 
172
- - `SdNpmPublishConfig` — `{ type: "npm" }`. npm 레지스트리 배포. 공개 라이브러리에 쓴다.
173
- - `SdLocalDirectoryPublishConfig` — `{ type: "local-directory"; path: string }`. 로컬 디렉토리로 복사. `path` 는 `%VER%`/`%PROJECT%` 치환 지원. 사내 공유 폴더 배포에.
174
- - `SdStoragePublishConfig` — `{ type: "ftp"|"ftps"|"sftp"; host; port?; path?; user?; password? }`. type 별 프로토콜 차이(ftp = 평문, ftps = TLS, sftp = SSH). 원격 서버 업로드 배포에. host 만 필수, 나머지는 선택.
182
+ `SdPostPublishScriptConfig` — `SdConfig.postPublish` 항목. `type: "script"` 고정, `cmd` 실행 명령, `args` 인수(환경 변수 치환 지원: `%VER%`, `%PROJECT%`).
175
183
 
176
184
  ```typescript
177
- interface SdPostPublishScriptConfig {
178
- type: "script";
179
- cmd: string;
180
- args: string[]; // %VER%, %PROJECT% 치환 지원
181
- }
185
+ "excel": { target: "neutral", publish: { type: "npm" } },
186
+ "client": { target: "client", server: "server", publish: { type: "ftp", host: "...", path: "/www" } },
182
187
  ```
183
188
 
184
- - type: "script" — 후처리 스크립트임을 나타내는 판별자(고정).
185
- - cmd: string — 배포 후 실행할 명령어.
186
- - args: string[] — 인수. `%VER%`(버전), `%PROJECT%`(프로젝트명) 치환됨.
187
-
188
- ## Capacitor 설정 (client 의 capacitor)
189
+ ## Capacitor 설정 (SdCapacitorConfig)
189
190
 
190
191
  ```typescript
191
192
  interface SdCapacitorConfig {
@@ -198,42 +199,50 @@ interface SdCapacitorConfig {
198
199
  }
199
200
  ```
200
201
 
201
- - appId: string — 앱 ID(역도메인, 예: `"com.example.app"`). 스토어 식별자.
202
- - appName: string — 앱 표시 이름.
203
- - plugins?: Record<string, Record<string, unknown> | true> — Capacitor 플러그인. = 패키지명, = `true`(옵션 없이 활성) 또는 옵션 객체. 옵션이 필요 없으면 `true`.
204
- - icon?: string — 앱 아이콘 경로(패키지 기준 상대).
205
- - debug?: boolean — 디버그 빌드 플래그.
206
- - platform?.android?: SdCapacitorAndroidConfig — Android 플랫폼별 설정.
202
+ - **appId**: string — 앱 ID(예: `"com.example.app"`).
203
+ - **appName**: string — 앱 이름.
204
+ - **plugins**: `Record<string, Record<string, unknown> | true>` — Capacitor 플러그인 설정. key 패키지명, value `true`(옵션 없이 활성) 또는 플러그인 옵션 객체.
205
+ - **icon**: string — 앱 아이콘 경로(패키지 디렉토리 기준 상대).
206
+ - **debug**: boolean — 디버그 빌드 플래그.
207
+ - **platform.android**: `SdCapacitorAndroidConfig` — Android 플랫폼 세부 설정.
207
208
 
208
209
  ```typescript
209
210
  interface SdCapacitorAndroidConfig {
210
- config?: Record<string, string>;
211
- bundle?: boolean;
211
+ config?: Record<string, string>; // AndroidManifest application 태그 속성
212
+ bundle?: boolean; // false=APK (true/미지정=AAB 번들)
212
213
  intentFilters?: SdCapacitorIntentFilter[];
213
214
  sign?: SdCapacitorSignConfig;
214
- sdkVersion?: number;
215
+ sdkVersion?: number; // minSdk/targetSdk
215
216
  permissions?: SdCapacitorPermission[];
216
217
  }
217
- ```
218
218
 
219
- - config?: Record<string, string> — `AndroidManifest.xml` 의 `<application>` 태그 속성(예: `{ requestLegacyExternalStorage: "true" }`).
220
- - bundle?: boolean true = AAB 번들, false = APK. 스토어 배포면 true.
221
- - intentFilters?: SdCapacitorIntentFilter[] — 딥링크 등 Intent Filter 목록.
222
- - sign?: SdCapacitorSignConfig — APK/AAB 서명 설정. 릴리스 빌드에 필요.
223
- - sdkVersion?: number — Android SDK 버전(minSdk·targetSdk 공통).
224
- - permissions?: SdCapacitorPermission[] 추가 권한 목록.
219
+ interface SdCapacitorSignConfig {
220
+ keystore: string; // keystore 파일 경로 (패키지 기준 상대)
221
+ storePassword: string;
222
+ alias: string;
223
+ password: string;
224
+ keystoreType?: string; // 기본값 "jks"
225
+ }
225
226
 
226
- ```typescript
227
- interface SdCapacitorSignConfig { keystore: string; storePassword: string; alias: string; password: string; keystoreType?: string; }
228
- interface SdCapacitorPermission { name: string; maxSdkVersion?: number; ignore?: string; }
229
- interface SdCapacitorIntentFilter { action?: string; category?: string; }
227
+ interface SdCapacitorPermission {
228
+ name: string; // 예: "CAMERA"
229
+ maxSdkVersion?: number;
230
+ ignore?: string; // tools:ignore 속성
231
+ }
232
+
233
+ interface SdCapacitorIntentFilter {
234
+ action?: string; // 예: "android.intent.action.VIEW"
235
+ category?: string; // 예: "android.intent.category.DEFAULT"
236
+ }
230
237
  ```
231
238
 
232
- - SdCapacitorSignConfig.keystore keystore 파일 경로(패키지 기준 상대). storePassword/alias/password = 서명 자격증명. keystoreType?: string — keystore 타입(기본값 `"jks"`).
233
- - SdCapacitorPermission.name권한 이름(예: `"CAMERA"`). maxSdkVersion?: number 권한 적용 최대 SDK. ignore?: string — `tools:ignore` 속성 값.
234
- - SdCapacitorIntentFilter.actionintent 액션(예: `"android.intent.action.VIEW"`). category — intent 카테고리(예: `"android.intent.category.DEFAULT"`).
239
+ - **SdCapacitorAndroidConfig.config**: `Record<string, string>` AndroidManifest.xml `application` 태그 속성(예: `{ requestLegacyExternalStorage: "true" }`).
240
+ - **SdCapacitorAndroidConfig.bundle**: boolean — `false` APK 빌드(AAB 번들 빌드 플래그).
241
+ - **SdCapacitorAndroidConfig.sdkVersion**: number Android SDK 버전(minSdk, targetSdk).
242
+ - **SdCapacitorSignConfig.keystoreType**: string — keystore 타입, 기본값 `"jks"`.
243
+ - **SdCapacitorPermission.maxSdkVersion / ignore**: 권한별 최대 SDK 버전과 `tools:ignore` 속성 값.
235
244
 
236
- ## Electron 설정 (client 의 electron)
245
+ ## Electron 설정 (SdElectronConfig)
237
246
 
238
247
  ```typescript
239
248
  interface SdElectronConfig {
@@ -247,18 +256,19 @@ interface SdElectronConfig {
247
256
  }
248
257
  ```
249
258
 
250
- - appId: string — Electron 앱 ID(역도메인, 예: `"com.example.myapp"`).
251
- - portable?: boolean — true = 포터블 `.exe`, false/미지정 = NSIS 설치 프로그램. 설치 없이 실행 배포면 true.
252
- - installerIcon?: string — 설치 프로그램 아이콘(`.ico`, 패키지 기준 상대).
253
- - reinstallDependencies?: string[] — Electron 에 포함할 npm 패키지(네이티브 모듈 등) 목록.
254
- - postInstallScript?: string — npm postinstall 스크립트.
255
- - nsisOptions?: Record<string, unknown> — NSIS 옵션(`portable` 이 false 일 때 적용).
256
- - env?: Record<string, string> — 환경 변수. `electron-main.ts` 에서 `process.env` 로 접근 가능.
259
+ - **appId**: string — Electron 앱 ID(예: `"com.example.myapp"`).
260
+ - **portable**: boolean — `true` 포터블 `.exe`, `false`/미지정이면 NSIS 설치 프로그램.
261
+ - **installerIcon**: string — 설치 프로그램 아이콘(`.ico`, 패키지 기준 상대).
262
+ - **reinstallDependencies**: string[] — Electron 에 포함할 npm 패키지(네이티브 모듈 등).
263
+ - **postInstallScript**: string — npm postinstall 스크립트.
264
+ - **nsisOptions**: `Record<string, unknown>` — NSIS 옵션(`portable` 이 `false` 일 때).
265
+ - **env**: `Record<string, string>` — 환경 변수. `electron-main.ts` 에서 `process.env` 로 접근 가능.
257
266
 
258
- ## PWA 설정 (client pwa)
267
+ ## PWA 설정 (SdPwaConfig) / 브라우저 지원 (SdBrowserSupportConfig)
259
268
 
260
269
  ```typescript
261
270
  interface SdPwaConfig { manifest?: SdPwaManifestConfig; }
271
+
262
272
  interface SdPwaManifestConfig {
263
273
  name?: string;
264
274
  short_name?: string;
@@ -267,17 +277,7 @@ interface SdPwaManifestConfig {
267
277
  background_color?: string;
268
278
  icons?: Array<{ src: string; sizes: string; type?: string }>;
269
279
  }
270
- ```
271
-
272
- - manifest?: SdPwaManifestConfig — PWA manifest 커스터마이징. 미지정 시 기본 manifest.
273
- - display?: "standalone"|"fullscreen"|"minimal-ui"|"browser" — 앱 표시 모드. "standalone" = 브라우저 UI 없는 앱 창, "fullscreen" = 전체 화면, "minimal-ui" = 최소 브라우저 UI, "browser" = 일반 탭. 네이티브 느낌이면 "standalone".
274
- - name/short_name — manifest 앱 이름 / 짧은 이름.
275
- - theme_color/background_color — manifest 테마 색 / 배경 색.
276
- - icons?: Array<{ src; sizes; type? }> — manifest 아이콘 목록. src = 경로, sizes = 크기(예: `"512x512"`), type = MIME 타입.
277
-
278
- ## SdBrowserSupportConfig (client 의 browserSupport)
279
280
 
280
- ```typescript
281
281
  interface SdBrowserSupportConfig {
282
282
  browserslist?: string | string[];
283
283
  postCss?: { plugins: [string, (object | string)?][] };
@@ -285,16 +285,23 @@ interface SdBrowserSupportConfig {
285
285
  }
286
286
  ```
287
287
 
288
- - browserslist?: string | string[] browserslist 쿼리(예: `"last 2 Chrome versions"` 또는 `["ie 11", "last 2 versions"]`). 트랜스파일·prefix 대상 브라우저 범위.
289
- - postCss?.plugins: [string, (object|string)?][] — PostCSS 플러그인 `[이름, 옵션?]` 튜플 배열.
290
- - legacyModule?: boolean 레거시 모듈 지원. true 면 코드 분할 비활성화 + `import.meta` 치환. 구형 환경 대응이 필요할 때.
288
+ - **SdPwaManifestConfig.display**: `"standalone" | "fullscreen" | "minimal-ui" | "browser"` PWA 표시 모드(웹 manifest `display` 그대로).
289
+ - **SdBrowserSupportConfig.browserslist**: `string | string[]`browserslist 쿼리(예: `"last 2 Chrome versions"` 또는 `["ie 11", "last 2 versions"]`).
290
+ - **SdBrowserSupportConfig.postCss**: PostCSS 플러그인 설정. `plugins` `[name, options]` 튜플 배열.
291
+ - **SdBrowserSupportConfig.legacyModule**: boolean — 레거시 모듈 지원. 코드 분할 비활성화 + `import.meta` 치환.
291
292
 
292
- ## 보조 타입
293
+ ## NpmConfig
293
294
 
294
295
  ```typescript
295
- type BuildTarget = "node" | "browser" | "neutral";
296
- interface NpmConfig { name: string; version: string; description?: string; dependencies?: Record<string,string>; devDependencies?: Record<string,string>; peerDependencies?: Record<string,string>; volta?: unknown; }
296
+ interface NpmConfig {
297
+ name: string;
298
+ version: string;
299
+ description?: string;
300
+ dependencies?: Record<string, string>;
301
+ devDependencies?: Record<string, string>;
302
+ peerDependencies?: Record<string, string>;
303
+ volta?: unknown;
304
+ }
297
305
  ```
298
306
 
299
- - BuildTarget esbuild 라이브러리 빌드 런타임 타겟 enum. "node" = Node 전용, "browser" = 브라우저 전용, "neutral" = 공용(위 `SdPackageConfig` 풀이와 동일).
300
- - NpmConfig — `package.json` 구조 타입. name/version 필수, description/dependencies/devDependencies/peerDependencies/volta 는 선택. package.json 을 타입 안전하게 다룰 때.
307
+ npm `package.json` 구조 타입. sd.config 설정값은 아니며, package.json 다루는 보조 타입으로 entry 에서 함께 노출된다.