@simplysm/sd-cli 13.0.28 → 13.0.29

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 (129) hide show
  1. package/dist/capacitor/capacitor.d.ts.map +1 -1
  2. package/dist/capacitor/capacitor.js +55 -10
  3. package/dist/capacitor/capacitor.js.map +1 -1
  4. package/dist/commands/add-client.d.ts.map +1 -1
  5. package/dist/commands/add-client.js +5 -1
  6. package/dist/commands/add-client.js.map +1 -1
  7. package/dist/commands/build.d.ts.map +1 -1
  8. package/dist/commands/build.js +3 -1
  9. package/dist/commands/build.js.map +1 -1
  10. package/dist/commands/device.d.ts.map +1 -1
  11. package/dist/commands/device.js +9 -3
  12. package/dist/commands/device.js.map +1 -1
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +3 -1
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/lint.d.ts.map +1 -1
  17. package/dist/commands/lint.js +17 -4
  18. package/dist/commands/lint.js.map +1 -1
  19. package/dist/commands/publish.d.ts.map +1 -1
  20. package/dist/commands/publish.js +16 -4
  21. package/dist/commands/publish.js.map +1 -1
  22. package/dist/commands/typecheck.d.ts.map +1 -1
  23. package/dist/commands/typecheck.js.map +1 -1
  24. package/dist/commands/watch.d.ts.map +1 -1
  25. package/dist/commands/watch.js +3 -1
  26. package/dist/commands/watch.js.map +1 -1
  27. package/dist/electron/electron.d.ts.map +1 -1
  28. package/dist/electron/electron.js +8 -2
  29. package/dist/electron/electron.js.map +1 -1
  30. package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
  31. package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
  32. package/dist/orchestrators/DevOrchestrator.d.ts.map +1 -1
  33. package/dist/orchestrators/DevOrchestrator.js +23 -6
  34. package/dist/orchestrators/DevOrchestrator.js.map +1 -1
  35. package/dist/orchestrators/WatchOrchestrator.d.ts.map +1 -1
  36. package/dist/orchestrators/WatchOrchestrator.js +4 -1
  37. package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
  38. package/dist/sd-cli-entry.js.map +1 -1
  39. package/dist/sd-cli.js +6 -1
  40. package/dist/sd-cli.js.map +1 -1
  41. package/dist/utils/config-editor.d.ts.map +1 -1
  42. package/dist/utils/config-editor.js +3 -1
  43. package/dist/utils/config-editor.js.map +1 -1
  44. package/dist/utils/copy-public.d.ts.map +1 -1
  45. package/dist/utils/copy-public.js.map +1 -1
  46. package/dist/utils/esbuild-config.d.ts.map +1 -1
  47. package/dist/utils/esbuild-config.js +6 -2
  48. package/dist/utils/esbuild-config.js.map +1 -1
  49. package/dist/utils/output-utils.d.ts.map +1 -1
  50. package/dist/utils/output-utils.js.map +1 -1
  51. package/dist/utils/rebuild-manager.d.ts.map +1 -1
  52. package/dist/utils/rebuild-manager.js.map +1 -1
  53. package/dist/utils/replace-deps.d.ts.map +1 -1
  54. package/dist/utils/replace-deps.js +3 -1
  55. package/dist/utils/replace-deps.js.map +1 -1
  56. package/dist/utils/sd-config.d.ts.map +1 -1
  57. package/dist/utils/sd-config.js.map +1 -1
  58. package/dist/utils/spawn.d.ts.map +1 -1
  59. package/dist/utils/spawn.js +4 -2
  60. package/dist/utils/spawn.js.map +1 -1
  61. package/dist/utils/template.d.ts.map +1 -1
  62. package/dist/utils/template.js +6 -1
  63. package/dist/utils/template.js.map +1 -1
  64. package/dist/utils/tsconfig.d.ts.map +1 -1
  65. package/dist/utils/tsconfig.js +3 -1
  66. package/dist/utils/tsconfig.js.map +1 -1
  67. package/dist/utils/typecheck-serialization.d.ts.map +1 -1
  68. package/dist/utils/typecheck-serialization.js +2 -1
  69. package/dist/utils/typecheck-serialization.js.map +1 -1
  70. package/dist/utils/vite-config.d.ts.map +1 -1
  71. package/dist/utils/vite-config.js +21 -7
  72. package/dist/utils/vite-config.js.map +1 -1
  73. package/dist/utils/worker-events.d.ts.map +1 -1
  74. package/dist/utils/worker-events.js.map +1 -1
  75. package/dist/utils/worker-utils.d.ts.map +1 -1
  76. package/dist/utils/worker-utils.js.map +1 -1
  77. package/dist/workers/client.worker.d.ts.map +1 -1
  78. package/dist/workers/client.worker.js +10 -2
  79. package/dist/workers/client.worker.js.map +1 -1
  80. package/dist/workers/dts.worker.d.ts.map +1 -1
  81. package/dist/workers/dts.worker.js +14 -4
  82. package/dist/workers/dts.worker.js.map +1 -1
  83. package/dist/workers/library.worker.d.ts.map +1 -1
  84. package/dist/workers/library.worker.js +17 -3
  85. package/dist/workers/library.worker.js.map +1 -1
  86. package/dist/workers/server-runtime.worker.d.ts.map +1 -1
  87. package/dist/workers/server-runtime.worker.js +3 -1
  88. package/dist/workers/server-runtime.worker.js.map +1 -1
  89. package/dist/workers/server.worker.d.ts.map +1 -1
  90. package/dist/workers/server.worker.js +20 -4
  91. package/dist/workers/server.worker.js.map +1 -1
  92. package/package.json +5 -5
  93. package/src/capacitor/capacitor.ts +78 -18
  94. package/src/commands/add-client.ts +5 -1
  95. package/src/commands/build.ts +4 -1
  96. package/src/commands/device.ts +9 -3
  97. package/src/commands/init.ts +3 -1
  98. package/src/commands/lint.ts +22 -5
  99. package/src/commands/publish.ts +22 -6
  100. package/src/commands/typecheck.ts +5 -1
  101. package/src/commands/watch.ts +4 -1
  102. package/src/electron/electron.ts +14 -3
  103. package/src/orchestrators/BuildOrchestrator.ts +15 -4
  104. package/src/orchestrators/DevOrchestrator.ts +41 -11
  105. package/src/orchestrators/WatchOrchestrator.ts +5 -1
  106. package/src/sd-cli-entry.ts +4 -1
  107. package/src/sd-cli.ts +6 -1
  108. package/src/utils/config-editor.ts +15 -5
  109. package/src/utils/copy-public.ts +4 -1
  110. package/src/utils/esbuild-config.ts +18 -4
  111. package/src/utils/output-utils.ts +4 -1
  112. package/src/utils/rebuild-manager.ts +4 -1
  113. package/src/utils/replace-deps.ts +7 -2
  114. package/src/utils/sd-config.ts +5 -1
  115. package/src/utils/spawn.ts +3 -1
  116. package/src/utils/template.ts +6 -1
  117. package/src/utils/tsconfig.ts +7 -2
  118. package/src/utils/typecheck-serialization.ts +6 -2
  119. package/src/utils/vite-config.ts +31 -8
  120. package/src/utils/worker-events.ts +4 -1
  121. package/src/utils/worker-utils.ts +4 -1
  122. package/src/workers/client.worker.ts +12 -3
  123. package/src/workers/dts.worker.ts +24 -7
  124. package/src/workers/library.worker.ts +17 -3
  125. package/src/workers/server-runtime.worker.ts +3 -1
  126. package/src/workers/server.worker.ts +23 -5
  127. package/templates/add-client/__CLIENT__/package.json.hbs +1 -1
  128. package/templates/add-server/__SERVER__/package.json.hbs +2 -2
  129. package/templates/init/package.json.hbs +3 -3
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/workers/server.worker.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-cli",
3
- "version": "13.0.28",
3
+ "version": "13.0.29",
4
4
  "description": "심플리즘 패키지 - CLI 도구",
5
5
  "author": "김석래",
6
6
  "license": "Apache-2.0",
@@ -28,7 +28,7 @@
28
28
  "esbuild": "^0.27.3",
29
29
  "esbuild-plugin-solid": "^0.6.0",
30
30
  "eslint": "^9.39.2",
31
- "glob": "^13.0.3",
31
+ "glob": "^13.0.5",
32
32
  "handlebars": "^4.7.8",
33
33
  "jiti": "^2.6.1",
34
34
  "semver": "^7.7.4",
@@ -44,9 +44,9 @@
44
44
  "vite-plugin-solid": "^2.11.10",
45
45
  "vite-tsconfig-paths": "^6.1.1",
46
46
  "yargs": "^18.0.0",
47
- "@simplysm/core-common": "13.0.28",
48
- "@simplysm/core-node": "13.0.28",
49
- "@simplysm/storage": "13.0.28"
47
+ "@simplysm/core-common": "13.0.29",
48
+ "@simplysm/core-node": "13.0.29",
49
+ "@simplysm/storage": "13.0.29"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/semver": "^7.7.1",
@@ -1,5 +1,15 @@
1
1
  import path from "path";
2
- import { fsExists, fsMkdir, fsRead, fsReadJson, fsWrite, fsWriteJson, fsGlob, fsCopy, fsRm } from "@simplysm/core-node";
2
+ import {
3
+ fsExists,
4
+ fsMkdir,
5
+ fsRead,
6
+ fsReadJson,
7
+ fsWrite,
8
+ fsWriteJson,
9
+ fsGlob,
10
+ fsCopy,
11
+ fsRm,
12
+ } from "@simplysm/core-node";
3
13
  import { env } from "@simplysm/core-common";
4
14
  import { consola } from "consola";
5
15
  import sharp from "sharp";
@@ -106,7 +116,8 @@ export class Capacitor {
106
116
  if (await fsExists(lockPath)) {
107
117
  const lockContent = await fsRead(lockPath);
108
118
  throw new Error(
109
- `다른 Capacitor 작업이 진행 중입니다 (PID: ${lockContent}). ` + `문제가 있다면 ${lockPath} 파일을 삭제하세요.`,
119
+ `다른 Capacitor 작업이 진행 중입니다 (PID: ${lockContent}). ` +
120
+ `문제가 있다면 ${lockPath} 파일을 삭제하세요.`,
110
121
  );
111
122
  }
112
123
  await fsMkdir(this._capPath);
@@ -139,7 +150,9 @@ export class Capacitor {
139
150
  if (this._platforms.includes("android")) {
140
151
  const javaPath = await this._findJava21();
141
152
  if (javaPath == null) {
142
- Capacitor._logger.warn("Java 21을 찾을 수 없습니다. Gradle이 내장 JDK를 사용하거나 빌드가 실패할 수 있습니다.");
153
+ Capacitor._logger.warn(
154
+ "Java 21을 찾을 수 없습니다. Gradle이 내장 JDK를 사용하거나 빌드가 실패할 수 있습니다.",
155
+ );
143
156
  }
144
157
  }
145
158
  }
@@ -273,13 +286,20 @@ export class Capacitor {
273
286
  // F12: cap init 멱등성 - capacitor.config.ts가 없을 때만 실행
274
287
  const configPath = path.resolve(this._capPath, "capacitor.config.ts");
275
288
  if (!(await fsExists(configPath))) {
276
- await this._exec("npx", ["cap", "init", this._config.appName, this._config.appId], this._capPath);
289
+ await this._exec(
290
+ "npx",
291
+ ["cap", "init", this._config.appName, this._config.appId],
292
+ this._capPath,
293
+ );
277
294
  }
278
295
 
279
296
  // 기본 www/index.html 생성
280
297
  const wwwPath = path.resolve(this._capPath, "www");
281
298
  await fsMkdir(wwwPath);
282
- await fsWrite(path.resolve(wwwPath, "index.html"), "<!DOCTYPE html><html><head></head><body></body></html>");
299
+ await fsWrite(
300
+ path.resolve(wwwPath, "index.html"),
301
+ "<!DOCTYPE html><html><head></head><body></body></html>",
302
+ );
283
303
 
284
304
  return true;
285
305
  }
@@ -331,7 +351,10 @@ export class Capacitor {
331
351
  const usePlugins = Object.keys(this._config.plugins ?? {});
332
352
 
333
353
  const prevPlugins = Object.keys(capNpmConf.dependencies).filter(
334
- (item) => !["@capacitor/core", "@capacitor/android", "@capacitor/ios", "@capacitor/app"].includes(item),
354
+ (item) =>
355
+ !["@capacitor/core", "@capacitor/android", "@capacitor/ios", "@capacitor/app"].includes(
356
+ item,
357
+ ),
335
358
  );
336
359
 
337
360
  // 사용하지 않는 플러그인 제거
@@ -380,7 +403,9 @@ export class Capacitor {
380
403
  }
381
404
 
382
405
  const pluginsConfigStr =
383
- Object.keys(pluginOptions).length > 0 ? JSON.stringify(pluginOptions, null, 2).replace(/^/gm, " ").trim() : "{}";
406
+ Object.keys(pluginOptions).length > 0
407
+ ? JSON.stringify(pluginOptions, null, 2).replace(/^/gm, " ").trim()
408
+ : "{}";
384
409
 
385
410
  const configContent = `import type { CapacitorConfig } from "@capacitor/cli";
386
411
 
@@ -427,7 +452,9 @@ export default config;
427
452
 
428
453
  // F6: 소스 아이콘 존재 확인
429
454
  if (!(await fsExists(iconSource))) {
430
- Capacitor._logger.warn(`아이콘 파일을 찾을 수 없습니다: ${iconSource}. 기본 아이콘을 사용합니다.`);
455
+ Capacitor._logger.warn(
456
+ `아이콘 파일을 찾을 수 없습니다: ${iconSource}. 기본 아이콘을 사용합니다.`,
457
+ );
431
458
  return;
432
459
  }
433
460
 
@@ -457,7 +484,14 @@ export default config;
457
484
 
458
485
  await this._exec(
459
486
  "npx",
460
- ["@capacitor/assets", "generate", "--iconBackgroundColor", "#ffffff", "--splashBackgroundColor", "#ffffff"],
487
+ [
488
+ "@capacitor/assets",
489
+ "generate",
490
+ "--iconBackgroundColor",
491
+ "#ffffff",
492
+ "--splashBackgroundColor",
493
+ "#ffffff",
494
+ ],
461
495
  this._capPath,
462
496
  );
463
497
  } catch (err) {
@@ -605,7 +639,8 @@ export default config;
605
639
  for (const perm of permissions) {
606
640
  const permTag = `<uses-permission android:name="android.permission.${perm.name}"`;
607
641
  if (!content.includes(permTag)) {
608
- const maxSdkAttr = perm.maxSdkVersion != null ? ` android:maxSdkVersion="${perm.maxSdkVersion}"` : "";
642
+ const maxSdkAttr =
643
+ perm.maxSdkVersion != null ? ` android:maxSdkVersion="${perm.maxSdkVersion}"` : "";
609
644
  const ignoreAttr = perm.ignore != null ? ` tools:ignore="${perm.ignore}"` : "";
610
645
  const permLine = ` ${permTag}${maxSdkAttr}${ignoreAttr} />\n`;
611
646
 
@@ -637,7 +672,8 @@ export default config;
637
672
  const filterKey = filter.action ?? filter.category ?? "";
638
673
  if (filterKey && !content.includes(filterKey)) {
639
674
  const actionLine = filter.action != null ? `<action android:name="${filter.action}"/>` : "";
640
- const categoryLine = filter.category != null ? `<category android:name="${filter.category}"/>` : "";
675
+ const categoryLine =
676
+ filter.category != null ? `<category android:name="${filter.category}"/>` : "";
641
677
 
642
678
  content = content.replace(
643
679
  /(<activity[\s\S]*?android:name="\.MainActivity"[\s\S]*?>)/,
@@ -685,7 +721,10 @@ export default config;
685
721
  content = content.replace(/targetSdkVersion .+/, `targetSdkVersion ${sdkVersion}`);
686
722
  } else {
687
723
  content = content.replace(/minSdkVersion .+/, `minSdkVersion rootProject.ext.minSdkVersion`);
688
- content = content.replace(/targetSdkVersion .+/, `targetSdkVersion rootProject.ext.targetSdkVersion`);
724
+ content = content.replace(
725
+ /targetSdkVersion .+/,
726
+ `targetSdkVersion rootProject.ext.targetSdkVersion`,
727
+ );
689
728
  }
690
729
 
691
730
  // Signing 설정
@@ -700,7 +739,9 @@ export default config;
700
739
  await fsCopy(keystoreSource, keystorePath);
701
740
 
702
741
  // F9: 상대 경로를 forward slash로 변환
703
- const keystoreRelativePath = path.relative(path.dirname(buildGradlePath), keystorePath).replace(/\\/g, "/");
742
+ const keystoreRelativePath = path
743
+ .relative(path.dirname(buildGradlePath), keystorePath)
744
+ .replace(/\\/g, "/");
704
745
  const keystoreType = signConfig.keystoreType ?? "jks";
705
746
 
706
747
  if (!content.includes("signingConfigs")) {
@@ -743,7 +784,8 @@ export default config;
743
784
  const targetOutPath = path.resolve(outPath, "android");
744
785
 
745
786
  const isBundle = this._config.platform?.android?.bundle;
746
- const gradleTask = buildType === "release" ? (isBundle ? "bundleRelease" : "assembleRelease") : "assembleDebug";
787
+ const gradleTask =
788
+ buildType === "release" ? (isBundle ? "bundleRelease" : "assembleRelease") : "assembleDebug";
747
789
 
748
790
  // Gradle 빌드 실행 (크로스 플랫폼)
749
791
  // F9: Windows에서 cmd.exe를 통해 실행 (shell: false 이므로)
@@ -760,7 +802,11 @@ export default config;
760
802
  /**
761
803
  * Android 빌드 결과물 복사
762
804
  */
763
- private async _copyAndroidBuildOutput(androidPath: string, targetOutPath: string, buildType: string): Promise<void> {
805
+ private async _copyAndroidBuildOutput(
806
+ androidPath: string,
807
+ targetOutPath: string,
808
+ buildType: string,
809
+ ): Promise<void> {
764
810
  const isBundle = this._config.platform?.android?.bundle;
765
811
  const isSigned = Boolean(this._config.platform?.android?.sign);
766
812
 
@@ -768,11 +814,23 @@ export default config;
768
814
  const outputType = isBundle ? "bundle" : "apk";
769
815
  const fileName = isSigned ? `app-${buildType}.${ext}` : `app-${buildType}-unsigned.${ext}`;
770
816
 
771
- const sourcePath = path.resolve(androidPath, "app/build/outputs", outputType, buildType, fileName);
817
+ const sourcePath = path.resolve(
818
+ androidPath,
819
+ "app/build/outputs",
820
+ outputType,
821
+ buildType,
822
+ fileName,
823
+ );
772
824
 
773
825
  const actualPath = (await fsExists(sourcePath))
774
826
  ? sourcePath
775
- : path.resolve(androidPath, "app/build/outputs", outputType, buildType, `app-${buildType}.${ext}`);
827
+ : path.resolve(
828
+ androidPath,
829
+ "app/build/outputs",
830
+ outputType,
831
+ buildType,
832
+ `app-${buildType}.${ext}`,
833
+ );
776
834
 
777
835
  if (!(await fsExists(actualPath))) {
778
836
  Capacitor._logger.warn(`빌드 결과물을 찾을 수 없습니다: ${actualPath}`);
@@ -821,7 +879,9 @@ export default config;
821
879
  * 문자열을 PascalCase로 변환
822
880
  */
823
881
  private _toPascalCase(str: string): string {
824
- return str.replace(/[-_](.)/g, (_, c: string) => c.toUpperCase()).replace(/^./, (c) => c.toUpperCase());
882
+ return str
883
+ .replace(/[-_](.)/g, (_, c: string) => c.toUpperCase())
884
+ .replace(/^./, (c) => c.toUpperCase());
825
885
  }
826
886
 
827
887
  //#endregion
@@ -115,7 +115,11 @@ export async function runAddClient(_options: AddClientOptions): Promise<void> {
115
115
 
116
116
  // 완료
117
117
  consola.box(
118
- [`클라이언트 "${clientName}"이(가) 추가되었습니다!`, "", ` pnpm dev ${clientName} 개발 서버 실행`].join("\n"),
118
+ [
119
+ `클라이언트 "${clientName}"이(가) 추가되었습니다!`,
120
+ "",
121
+ ` pnpm dev ${clientName} 개발 서버 실행`,
122
+ ].join("\n"),
119
123
  );
120
124
  }
121
125
 
@@ -1,4 +1,7 @@
1
- import { BuildOrchestrator, type BuildOrchestratorOptions } from "../orchestrators/BuildOrchestrator";
1
+ import {
2
+ BuildOrchestrator,
3
+ type BuildOrchestratorOptions,
4
+ } from "../orchestrators/BuildOrchestrator";
2
5
 
3
6
  /**
4
7
  * Build 명령 옵션 (하위 호환성)
@@ -75,7 +75,9 @@ export async function runDevice(options: DeviceOptions): Promise<void> {
75
75
  if (typeof clientConfig.server === "number") {
76
76
  serverUrl = `http://localhost:${clientConfig.server}/${packageName}/`;
77
77
  } else {
78
- logger.error(`--url 옵션이 필요합니다. server가 패키지명으로 설정되어 있습니다: ${clientConfig.server}`);
78
+ logger.error(
79
+ `--url 옵션이 필요합니다. server가 패키지명으로 설정되어 있습니다: ${clientConfig.server}`,
80
+ );
79
81
  process.exitCode = 1;
80
82
  return;
81
83
  }
@@ -99,7 +101,9 @@ export async function runDevice(options: DeviceOptions): Promise<void> {
99
101
  if (typeof clientConfig.server === "number") {
100
102
  serverUrl = `http://localhost:${clientConfig.server}/${packageName}/capacitor/`;
101
103
  } else {
102
- logger.error(`--url 옵션이 필요합니다. server가 패키지명으로 설정되어 있습니다: ${clientConfig.server}`);
104
+ logger.error(
105
+ `--url 옵션이 필요합니다. server가 패키지명으로 설정되어 있습니다: ${clientConfig.server}`,
106
+ );
103
107
  process.exitCode = 1;
104
108
  return;
105
109
  }
@@ -111,7 +115,9 @@ export async function runDevice(options: DeviceOptions): Promise<void> {
111
115
 
112
116
  const capPath = path.join(pkgDir, ".capacitor");
113
117
  if (!(await fsExists(capPath))) {
114
- logger.error(`Capacitor 프로젝트가 초기화되지 않았습니다. 먼저 'pnpm watch ${packageName}'를 실행하세요.`);
118
+ logger.error(
119
+ `Capacitor 프로젝트가 초기화되지 않았습니다. 먼저 'pnpm watch ${packageName}'를 실행하세요.`,
120
+ );
115
121
  process.exitCode = 1;
116
122
  return;
117
123
  }
@@ -50,7 +50,9 @@ export async function runInit(_options: InitOptions): Promise<void> {
50
50
  // 2. 프로젝트명 검증
51
51
  const projectName = path.basename(cwd);
52
52
  if (!isValidScopeName(projectName)) {
53
- consola.error(`프로젝트 이름 "${projectName}"이(가) 유효하지 않습니다. 소문자, 숫자, 하이픈만 사용 가능합니다.`);
53
+ consola.error(
54
+ `프로젝트 이름 "${projectName}"이(가) 유효하지 않습니다. 소문자, 숫자, 하이픈만 사용 가능합니다.`,
55
+ );
54
56
  process.exitCode = 1;
55
57
  return;
56
58
  }
@@ -26,7 +26,12 @@ export interface LintOptions {
26
26
  //#region Utilities
27
27
 
28
28
  /** ESLint 설정 파일 탐색 순서 */
29
- const ESLINT_CONFIG_FILES = ["eslint.config.ts", "eslint.config.mts", "eslint.config.js", "eslint.config.mjs"] as const;
29
+ const ESLINT_CONFIG_FILES = [
30
+ "eslint.config.ts",
31
+ "eslint.config.mts",
32
+ "eslint.config.js",
33
+ "eslint.config.mjs",
34
+ ] as const;
30
35
 
31
36
  /** Stylelint 설정 파일 탐색 순서 */
32
37
  const STYLELINT_CONFIG_FILES = [
@@ -66,7 +71,9 @@ export async function loadIgnorePatterns(cwd: string): Promise<string[]> {
66
71
  }
67
72
 
68
73
  if (configPath == null) {
69
- throw new SdError(`ESLint 설정 파일을 찾을 수 없습니다 (cwd: ${cwd}): ${ESLINT_CONFIG_FILES.join(", ")}`);
74
+ throw new SdError(
75
+ `ESLint 설정 파일을 찾을 수 없습니다 (cwd: ${cwd}): ${ESLINT_CONFIG_FILES.join(", ")}`,
76
+ );
70
77
  }
71
78
 
72
79
  const jiti = createJiti(import.meta.url);
@@ -75,7 +82,11 @@ export async function loadIgnorePatterns(cwd: string): Promise<string[]> {
75
82
  let configs: unknown;
76
83
  if (Array.isArray(configModule)) {
77
84
  configs = configModule;
78
- } else if (configModule != null && typeof configModule === "object" && "default" in configModule) {
85
+ } else if (
86
+ configModule != null &&
87
+ typeof configModule === "object" &&
88
+ "default" in configModule
89
+ ) {
79
90
  configs = configModule.default;
80
91
  } else {
81
92
  throw new SdError(`ESLint 설정 파일이 올바른 형식이 아닙니다: ${configPath}`);
@@ -240,14 +251,20 @@ export async function runLint(options: LintOptions): Promise<void> {
240
251
  );
241
252
 
242
253
  if (stylelintErrorCount > 0) {
243
- logger.error("Stylelint 에러 발생", { errorCount: stylelintErrorCount, warningCount: stylelintWarningCount });
254
+ logger.error("Stylelint 에러 발생", {
255
+ errorCount: stylelintErrorCount,
256
+ warningCount: stylelintWarningCount,
257
+ });
244
258
  } else if (stylelintWarningCount > 0) {
245
259
  logger.info("Stylelint 완료 (경고 있음)", {
246
260
  errorCount: stylelintErrorCount,
247
261
  warningCount: stylelintWarningCount,
248
262
  });
249
263
  } else {
250
- logger.info("Stylelint 완료", { errorCount: stylelintErrorCount, warningCount: stylelintWarningCount });
264
+ logger.info("Stylelint 완료", {
265
+ errorCount: stylelintErrorCount,
266
+ warningCount: stylelintWarningCount,
267
+ });
251
268
  }
252
269
 
253
270
  // Stylelint formatter 출력
@@ -279,7 +279,9 @@ async function upgradeVersion(
279
279
 
280
280
  // prerelease 여부에 따라 증가 방식 결정
281
281
  const newVersion =
282
- prereleaseInfo !== null ? semver.inc(currentVersion, "prerelease")! : semver.inc(currentVersion, "patch")!;
282
+ prereleaseInfo !== null
283
+ ? semver.inc(currentVersion, "prerelease")!
284
+ : semver.inc(currentVersion, "patch")!;
283
285
 
284
286
  if (dryRun) {
285
287
  // dry-run: 파일 수정 없이 새 버전만 반환
@@ -368,7 +370,9 @@ async function publishPackage(
368
370
  const remotePath = publishConfig.path ?? "/";
369
371
 
370
372
  if (dryRun) {
371
- logger.info(`[DRY-RUN] [${pkgName}] ${publishConfig.type} 업로드: ${distPath} → ${remotePath}`);
373
+ logger.info(
374
+ `[DRY-RUN] [${pkgName}] ${publishConfig.type} 업로드: ${distPath} → ${remotePath}`,
375
+ );
372
376
  } else {
373
377
  logger.debug(`[${pkgName}] ${publishConfig.type} 업로드: ${distPath} → ${remotePath}`);
374
378
  await StorageFactory.connect(
@@ -499,7 +503,9 @@ export async function runPublish(options: PublishOptions): Promise<void> {
499
503
  workspaceGlobs.push(...parseWorkspaceGlobs(yamlContent));
500
504
  }
501
505
 
502
- const allPkgPaths = (await Promise.all(workspaceGlobs.map((item) => fsGlob(path.resolve(cwd, item)))))
506
+ const allPkgPaths = (
507
+ await Promise.all(workspaceGlobs.map((item) => fsGlob(path.resolve(cwd, item))))
508
+ )
503
509
  .flat()
504
510
  .filter((item) => !path.basename(item).includes("."));
505
511
 
@@ -587,7 +593,13 @@ export async function runPublish(options: PublishOptions): Promise<void> {
587
593
  if (diff.trim() !== "" || stagedDiff.trim() !== "") {
588
594
  logger.info("커밋되지 않은 변경사항 감지. claude 자동 커밋 시도...");
589
595
  try {
590
- await spawn("claude", ["-p", "/sd-commit all", "--dangerously-skip-permissions", "--model", "haiku"]);
596
+ await spawn("claude", [
597
+ "-p",
598
+ "/sd-commit all",
599
+ "--dangerously-skip-permissions",
600
+ "--model",
601
+ "haiku",
602
+ ]);
591
603
  } catch (e) {
592
604
  throw new Error(
593
605
  "자동 커밋에 실패했습니다. 수동으로 커밋 후 다시 시도하세요.\n" +
@@ -599,7 +611,9 @@ export async function runPublish(options: PublishOptions): Promise<void> {
599
611
  const recheckDiff = await spawn("git", ["diff", "--name-only"]);
600
612
  const recheckStaged = await spawn("git", ["diff", "--cached", "--name-only"]);
601
613
  if (recheckDiff.trim() !== "" || recheckStaged.trim() !== "") {
602
- throw new Error("자동 커밋 후에도 미커밋 변경사항이 남아있습니다.\n" + recheckDiff + recheckStaged);
614
+ throw new Error(
615
+ "자동 커밋 후에도 미커밋 변경사항이 남아있습니다.\n" + recheckDiff + recheckStaged,
616
+ );
603
617
  }
604
618
  logger.info("자동 커밋 완료.");
605
619
  }
@@ -801,7 +815,9 @@ export async function runPublish(options: PublishOptions): Promise<void> {
801
815
  }
802
816
  } catch (err) {
803
817
  // postPublish 실패 시 경고만 출력 (배포 롤백 불가)
804
- logger.warn(`postPublish 스크립트 실패 (계속 진행): ${err instanceof Error ? err.message : err}`);
818
+ logger.warn(
819
+ `postPublish 스크립트 실패 (계속 진행): ${err instanceof Error ? err.message : err}`,
820
+ );
805
821
  }
806
822
  }
807
823
  }
@@ -68,7 +68,11 @@ function toTypecheckEnvs(target: string | undefined): TypecheckEnv[] {
68
68
  * scripts 타겟 패키지는 제외합니다.
69
69
  * @internal 테스트용으로 export
70
70
  */
71
- export function extractPackages(fileNames: string[], cwd: string, config: SdConfig): Map<string, PackageInfo> {
71
+ export function extractPackages(
72
+ fileNames: string[],
73
+ cwd: string,
74
+ config: SdConfig,
75
+ ): Map<string, PackageInfo> {
72
76
  const packages = new Map<string, PackageInfo>();
73
77
 
74
78
  for (const fileName of fileNames) {
@@ -1,5 +1,8 @@
1
1
  // packages/cli/src/commands/watch.ts
2
- import { WatchOrchestrator, type WatchOrchestratorOptions } from "../orchestrators/WatchOrchestrator";
2
+ import {
3
+ WatchOrchestrator,
4
+ type WatchOrchestratorOptions,
5
+ } from "../orchestrators/WatchOrchestrator";
3
6
 
4
7
  /**
5
8
  * Watch 명령 옵션 (하위 호환성)
@@ -61,7 +61,12 @@ export class Electron {
61
61
  /**
62
62
  * 명령어 실행 (로깅 포함)
63
63
  */
64
- private async _exec(cmd: string, args: string[], cwd: string, env?: Record<string, string>): Promise<string> {
64
+ private async _exec(
65
+ cmd: string,
66
+ args: string[],
67
+ cwd: string,
68
+ env?: Record<string, string>,
69
+ ): Promise<string> {
65
70
  Electron._logger.debug(`실행 명령: ${cmd} ${args.join(" ")}`);
66
71
  const result = await spawn(cmd, args, { cwd, env });
67
72
  Electron._logger.debug(`실행 결과: ${result}`);
@@ -263,7 +268,9 @@ export class Electron {
263
268
  */
264
269
  private async _runElectronBuilder(srcPath: string): Promise<void> {
265
270
  if (!Electron._canCreateSymlink()) {
266
- throw new Error("Electron 빌드를 위해서는 Symlink 생성 권한이 필요합니다. 윈도우의 개발자모드를 활성화하세요.");
271
+ throw new Error(
272
+ "Electron 빌드를 위해서는 Symlink 생성 권한이 필요합니다. 윈도우의 개발자모드를 활성화하세요.",
273
+ );
267
274
  }
268
275
 
269
276
  const distPath = path.resolve(this._electronPath, "dist");
@@ -292,7 +299,11 @@ export class Electron {
292
299
  const configFilePath = path.resolve(this._electronPath, "builder-config.json");
293
300
  await fsWriteJson(configFilePath, builderConfig, { space: 2 });
294
301
 
295
- await this._exec("npx", ["electron-builder", "--win", "--config", configFilePath], this._pkgPath);
302
+ await this._exec(
303
+ "npx",
304
+ ["electron-builder", "--win", "--config", configFilePath],
305
+ this._pkgPath,
306
+ );
296
307
  }
297
308
 
298
309
  /**
@@ -3,7 +3,12 @@ import ts from "typescript";
3
3
  import { Worker, type WorkerProxy, fsRm } from "@simplysm/core-node";
4
4
  import "@simplysm/core-common";
5
5
  import { consola } from "consola";
6
- import type { SdConfig, SdBuildPackageConfig, SdClientPackageConfig, SdServerPackageConfig } from "../sd-config.types";
6
+ import type {
7
+ SdConfig,
8
+ SdBuildPackageConfig,
9
+ SdClientPackageConfig,
10
+ SdServerPackageConfig,
11
+ } from "../sd-config.types";
7
12
  import { loadSdConfig } from "../utils/sd-config";
8
13
  import { getVersion } from "../utils/build-env";
9
14
  import { setupReplaceDeps } from "../utils/replace-deps";
@@ -69,7 +74,11 @@ interface ClassifiedPackages {
69
74
  function classifyPackages(
70
75
  packages: Record<
71
76
  string,
72
- SdBuildPackageConfig | SdClientPackageConfig | SdServerPackageConfig | { target: "scripts" } | undefined
77
+ | SdBuildPackageConfig
78
+ | SdClientPackageConfig
79
+ | SdServerPackageConfig
80
+ | { target: "scripts" }
81
+ | undefined
73
82
  >,
74
83
  targets: string[],
75
84
  ): ClassifiedPackages {
@@ -260,7 +269,8 @@ export class BuildOrchestrator {
260
269
  // JS 빌드와 DTS 생성을 병렬 실행
261
270
  const libraryWorker: WorkerProxy<typeof LibraryWorkerModule> =
262
271
  Worker.create<typeof LibraryWorkerModule>(libraryWorkerPath);
263
- const dtsWorker: WorkerProxy<typeof DtsWorkerModule> = Worker.create<typeof DtsWorkerModule>(dtsWorkerPath);
272
+ const dtsWorker: WorkerProxy<typeof DtsWorkerModule> =
273
+ Worker.create<typeof DtsWorkerModule>(dtsWorkerPath);
264
274
 
265
275
  try {
266
276
  const [buildResult, dtsResult] = await Promise.all([
@@ -313,7 +323,8 @@ export class BuildOrchestrator {
313
323
  // Vite 빌드와 타입체크를 병렬 실행
314
324
  const clientWorker: WorkerProxy<typeof ClientWorkerModule> =
315
325
  Worker.create<typeof ClientWorkerModule>(clientWorkerPath);
316
- const dtsWorker: WorkerProxy<typeof DtsWorkerModule> = Worker.create<typeof DtsWorkerModule>(dtsWorkerPath);
326
+ const dtsWorker: WorkerProxy<typeof DtsWorkerModule> =
327
+ Worker.create<typeof DtsWorkerModule>(dtsWorkerPath);
317
328
 
318
329
  try {
319
330
  const clientConfig: SdClientPackageConfig = {