@simplysm/sd-claude 14.0.88 → 14.0.89
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 +17 -17
- package/claude/references/sd-simplysm14/apis/angular/README.md +27 -53
- package/claude/references/sd-simplysm14/apis/angular/controls.md +37 -105
- package/claude/references/sd-simplysm14/apis/angular/crud.md +46 -43
- package/claude/references/sd-simplysm14/apis/angular/directives.md +22 -32
- package/claude/references/sd-simplysm14/apis/angular/features.md +40 -55
- package/claude/references/sd-simplysm14/apis/angular/infra.md +40 -40
- package/claude/references/sd-simplysm14/apis/angular/layout.md +25 -53
- package/claude/references/sd-simplysm14/apis/angular/overlay.md +70 -82
- package/claude/references/sd-simplysm14/apis/angular/routing-appstructure.md +44 -39
- package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +21 -36
- package/claude/references/sd-simplysm14/apis/angular/shared-data.md +52 -65
- package/claude/references/sd-simplysm14/apis/angular/sheet.md +65 -70
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +33 -35
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +7 -7
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +29 -29
- 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 +13 -12
- package/claude/references/sd-simplysm14/apis/core-common/README.md +222 -98
- package/claude/references/sd-simplysm14/apis/core-common/array-ext.md +102 -53
- package/claude/references/sd-simplysm14/apis/core-common/async-runtime.md +128 -0
- package/claude/references/sd-simplysm14/apis/core-common/datetime.md +98 -64
- package/claude/references/sd-simplysm14/apis/core-common/errors.md +91 -0
- package/claude/references/sd-simplysm14/apis/core-common/json-transfer.md +34 -28
- package/claude/references/sd-simplysm14/apis/core-common/obj.md +104 -40
- package/claude/references/sd-simplysm14/apis/core-node/README.md +11 -8
- package/claude/references/sd-simplysm14/apis/core-node/consola.md +23 -31
- package/claude/references/sd-simplysm14/apis/core-node/cpx.md +33 -22
- package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +28 -25
- package/claude/references/sd-simplysm14/apis/core-node/fsx.md +39 -53
- package/claude/references/sd-simplysm14/apis/core-node/pathx.md +26 -29
- package/claude/references/sd-simplysm14/apis/core-node/worker.md +27 -29
- package/claude/references/sd-simplysm14/apis/excel/README.md +14 -14
- 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 +5 -59
- package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +98 -67
- package/claude/references/sd-simplysm14/apis/orm-common/expr.md +107 -92
- package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +99 -65
- package/claude/references/sd-simplysm14/apis/orm-common/schema.md +83 -98
- package/claude/references/sd-simplysm14/apis/orm-common/types.md +62 -52
- package/claude/references/sd-simplysm14/apis/orm-node/README.md +62 -25
- package/claude/references/sd-simplysm14/apis/orm-node/db-conn.md +27 -27
- package/claude/references/sd-simplysm14/apis/sd-cli/README.md +12 -15
- 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 +84 -86
- package/claude/references/sd-simplysm14/apis/service-client/orm.md +14 -11
- package/claude/references/sd-simplysm14/apis/service-client/transport.md +33 -10
- package/claude/references/sd-simplysm14/apis/service-common/README.md +37 -23
- package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +9 -9
- package/claude/references/sd-simplysm14/apis/service-common/protocol.md +13 -13
- package/claude/references/sd-simplysm14/apis/service-server/README.md +81 -65
- package/claude/references/sd-simplysm14/apis/service-server/service-authoring.md +32 -35
- package/claude/references/sd-simplysm14/apis/service-server/transport-internals.md +44 -33
- package/claude/references/sd-simplysm14/apis/service-server/v1-legacy.md +34 -45
- package/claude/references/sd-simplysm14/apis/storage/README.md +24 -18
- package/claude/skills/sd-demo/SKILL.md +6 -0
- package/claude/skills/sd-impl/SKILL.md +4 -7
- package/claude/skills/sd-spec/SKILL.md +31 -858
- package/claude/skills/sd-spec/references/spec-authoring.md +519 -0
- package/claude/workflows/sd-docs.js +84 -0
- package/package.json +1 -1
- 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/SKILL.md +0 -46
- 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
- /package/claude/{skills/sd-docs/references/doc-rules.md → workflows/sd-docs.rules.md} +0 -0
|
@@ -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 을 타입 안전하게 다룰 때.
|