@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.
- package/dist/capacitor/capacitor.d.ts.map +1 -1
- package/dist/capacitor/capacitor.js +55 -10
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/add-client.d.ts.map +1 -1
- package/dist/commands/add-client.js +5 -1
- package/dist/commands/add-client.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +3 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/device.d.ts.map +1 -1
- package/dist/commands/device.js +9 -3
- package/dist/commands/device.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +17 -4
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +16 -4
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/typecheck.d.ts.map +1 -1
- package/dist/commands/typecheck.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +3 -1
- package/dist/commands/watch.js.map +1 -1
- package/dist/electron/electron.d.ts.map +1 -1
- package/dist/electron/electron.js +8 -2
- package/dist/electron/electron.js.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
- package/dist/orchestrators/DevOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/DevOrchestrator.js +23 -6
- package/dist/orchestrators/DevOrchestrator.js.map +1 -1
- package/dist/orchestrators/WatchOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/WatchOrchestrator.js +4 -1
- package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
- package/dist/sd-cli-entry.js.map +1 -1
- package/dist/sd-cli.js +6 -1
- package/dist/sd-cli.js.map +1 -1
- package/dist/utils/config-editor.d.ts.map +1 -1
- package/dist/utils/config-editor.js +3 -1
- package/dist/utils/config-editor.js.map +1 -1
- package/dist/utils/copy-public.d.ts.map +1 -1
- package/dist/utils/copy-public.js.map +1 -1
- package/dist/utils/esbuild-config.d.ts.map +1 -1
- package/dist/utils/esbuild-config.js +6 -2
- package/dist/utils/esbuild-config.js.map +1 -1
- package/dist/utils/output-utils.d.ts.map +1 -1
- package/dist/utils/output-utils.js.map +1 -1
- package/dist/utils/rebuild-manager.d.ts.map +1 -1
- package/dist/utils/rebuild-manager.js.map +1 -1
- package/dist/utils/replace-deps.d.ts.map +1 -1
- package/dist/utils/replace-deps.js +3 -1
- package/dist/utils/replace-deps.js.map +1 -1
- package/dist/utils/sd-config.d.ts.map +1 -1
- package/dist/utils/sd-config.js.map +1 -1
- package/dist/utils/spawn.d.ts.map +1 -1
- package/dist/utils/spawn.js +4 -2
- package/dist/utils/spawn.js.map +1 -1
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +6 -1
- package/dist/utils/template.js.map +1 -1
- package/dist/utils/tsconfig.d.ts.map +1 -1
- package/dist/utils/tsconfig.js +3 -1
- package/dist/utils/tsconfig.js.map +1 -1
- package/dist/utils/typecheck-serialization.d.ts.map +1 -1
- package/dist/utils/typecheck-serialization.js +2 -1
- package/dist/utils/typecheck-serialization.js.map +1 -1
- package/dist/utils/vite-config.d.ts.map +1 -1
- package/dist/utils/vite-config.js +21 -7
- package/dist/utils/vite-config.js.map +1 -1
- package/dist/utils/worker-events.d.ts.map +1 -1
- package/dist/utils/worker-events.js.map +1 -1
- package/dist/utils/worker-utils.d.ts.map +1 -1
- package/dist/utils/worker-utils.js.map +1 -1
- package/dist/workers/client.worker.d.ts.map +1 -1
- package/dist/workers/client.worker.js +10 -2
- package/dist/workers/client.worker.js.map +1 -1
- package/dist/workers/dts.worker.d.ts.map +1 -1
- package/dist/workers/dts.worker.js +14 -4
- package/dist/workers/dts.worker.js.map +1 -1
- package/dist/workers/library.worker.d.ts.map +1 -1
- package/dist/workers/library.worker.js +17 -3
- package/dist/workers/library.worker.js.map +1 -1
- package/dist/workers/server-runtime.worker.d.ts.map +1 -1
- package/dist/workers/server-runtime.worker.js +3 -1
- package/dist/workers/server-runtime.worker.js.map +1 -1
- package/dist/workers/server.worker.d.ts.map +1 -1
- package/dist/workers/server.worker.js +20 -4
- package/dist/workers/server.worker.js.map +1 -1
- package/package.json +5 -5
- package/src/capacitor/capacitor.ts +78 -18
- package/src/commands/add-client.ts +5 -1
- package/src/commands/build.ts +4 -1
- package/src/commands/device.ts +9 -3
- package/src/commands/init.ts +3 -1
- package/src/commands/lint.ts +22 -5
- package/src/commands/publish.ts +22 -6
- package/src/commands/typecheck.ts +5 -1
- package/src/commands/watch.ts +4 -1
- package/src/electron/electron.ts +14 -3
- package/src/orchestrators/BuildOrchestrator.ts +15 -4
- package/src/orchestrators/DevOrchestrator.ts +41 -11
- package/src/orchestrators/WatchOrchestrator.ts +5 -1
- package/src/sd-cli-entry.ts +4 -1
- package/src/sd-cli.ts +6 -1
- package/src/utils/config-editor.ts +15 -5
- package/src/utils/copy-public.ts +4 -1
- package/src/utils/esbuild-config.ts +18 -4
- package/src/utils/output-utils.ts +4 -1
- package/src/utils/rebuild-manager.ts +4 -1
- package/src/utils/replace-deps.ts +7 -2
- package/src/utils/sd-config.ts +5 -1
- package/src/utils/spawn.ts +3 -1
- package/src/utils/template.ts +6 -1
- package/src/utils/tsconfig.ts +7 -2
- package/src/utils/typecheck-serialization.ts +6 -2
- package/src/utils/vite-config.ts +31 -8
- package/src/utils/worker-events.ts +4 -1
- package/src/utils/worker-utils.ts +4 -1
- package/src/workers/client.worker.ts +12 -3
- package/src/workers/dts.worker.ts +24 -7
- package/src/workers/library.worker.ts +17 -3
- package/src/workers/server-runtime.worker.ts +3 -1
- package/src/workers/server.worker.ts +23 -5
- package/templates/add-client/__CLIENT__/package.json.hbs +1 -1
- package/templates/add-server/__SERVER__/package.json.hbs +2 -2
- 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": "AAAA,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,OAAO,QAAQ;AACf,OAAO,aAAa;AACpB,SAAS,oBAAoB;AAE7B,SAAS,eAAe;AACxB,
|
|
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.
|
|
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.
|
|
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.
|
|
48
|
-
"@simplysm/core-node": "13.0.
|
|
49
|
-
"@simplysm/storage": "13.0.
|
|
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 {
|
|
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}). ` +
|
|
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(
|
|
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(
|
|
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(
|
|
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) =>
|
|
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
|
|
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(
|
|
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
|
-
[
|
|
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 =
|
|
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 =
|
|
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(
|
|
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
|
|
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 =
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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
|
-
[
|
|
118
|
+
[
|
|
119
|
+
`클라이언트 "${clientName}"이(가) 추가되었습니다!`,
|
|
120
|
+
"",
|
|
121
|
+
` pnpm dev ${clientName} 개발 서버 실행`,
|
|
122
|
+
].join("\n"),
|
|
119
123
|
);
|
|
120
124
|
}
|
|
121
125
|
|
package/src/commands/build.ts
CHANGED
package/src/commands/device.ts
CHANGED
|
@@ -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(
|
|
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(
|
|
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(
|
|
118
|
+
logger.error(
|
|
119
|
+
`Capacitor 프로젝트가 초기화되지 않았습니다. 먼저 'pnpm watch ${packageName}'를 실행하세요.`,
|
|
120
|
+
);
|
|
115
121
|
process.exitCode = 1;
|
|
116
122
|
return;
|
|
117
123
|
}
|
package/src/commands/init.ts
CHANGED
|
@@ -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(
|
|
53
|
+
consola.error(
|
|
54
|
+
`프로젝트 이름 "${projectName}"이(가) 유효하지 않습니다. 소문자, 숫자, 하이픈만 사용 가능합니다.`,
|
|
55
|
+
);
|
|
54
56
|
process.exitCode = 1;
|
|
55
57
|
return;
|
|
56
58
|
}
|
package/src/commands/lint.ts
CHANGED
|
@@ -26,7 +26,12 @@ export interface LintOptions {
|
|
|
26
26
|
//#region Utilities
|
|
27
27
|
|
|
28
28
|
/** ESLint 설정 파일 탐색 순서 */
|
|
29
|
-
const ESLINT_CONFIG_FILES = [
|
|
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(
|
|
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 (
|
|
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 에러 발생", {
|
|
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 완료", {
|
|
264
|
+
logger.info("Stylelint 완료", {
|
|
265
|
+
errorCount: stylelintErrorCount,
|
|
266
|
+
warningCount: stylelintWarningCount,
|
|
267
|
+
});
|
|
251
268
|
}
|
|
252
269
|
|
|
253
270
|
// Stylelint formatter 출력
|
package/src/commands/publish.ts
CHANGED
|
@@ -279,7 +279,9 @@ async function upgradeVersion(
|
|
|
279
279
|
|
|
280
280
|
// prerelease 여부에 따라 증가 방식 결정
|
|
281
281
|
const newVersion =
|
|
282
|
-
prereleaseInfo !== null
|
|
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(
|
|
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 = (
|
|
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", [
|
|
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(
|
|
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(
|
|
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(
|
|
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) {
|
package/src/commands/watch.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// packages/cli/src/commands/watch.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
WatchOrchestrator,
|
|
4
|
+
type WatchOrchestratorOptions,
|
|
5
|
+
} from "../orchestrators/WatchOrchestrator";
|
|
3
6
|
|
|
4
7
|
/**
|
|
5
8
|
* Watch 명령 옵션 (하위 호환성)
|
package/src/electron/electron.ts
CHANGED
|
@@ -61,7 +61,12 @@ export class Electron {
|
|
|
61
61
|
/**
|
|
62
62
|
* 명령어 실행 (로깅 포함)
|
|
63
63
|
*/
|
|
64
|
-
private async _exec(
|
|
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(
|
|
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(
|
|
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 {
|
|
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
|
-
|
|
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> =
|
|
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> =
|
|
326
|
+
const dtsWorker: WorkerProxy<typeof DtsWorkerModule> =
|
|
327
|
+
Worker.create<typeof DtsWorkerModule>(dtsWorkerPath);
|
|
317
328
|
|
|
318
329
|
try {
|
|
319
330
|
const clientConfig: SdClientPackageConfig = {
|