@simplysm/sd-cli 14.0.11 → 14.0.13
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/README.md +58 -253
- package/dist/angular/client-transform-stylesheet.js +1 -1
- package/dist/angular/client-transform-stylesheet.js.map +1 -1
- package/dist/angular/vite-angular-plugin.d.ts +4 -2
- package/dist/angular/vite-angular-plugin.d.ts.map +1 -1
- package/dist/angular/vite-angular-plugin.js +73 -36
- package/dist/angular/vite-angular-plugin.js.map +1 -1
- package/dist/angular/vite-postcss-inline-plugin.d.ts +1 -1
- package/dist/angular/vite-postcss-inline-plugin.js +1 -1
- package/dist/capacitor/capacitor.d.ts +20 -2
- package/dist/capacitor/capacitor.d.ts.map +1 -1
- package/dist/capacitor/capacitor.js +155 -28
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/build.d.ts +3 -10
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +3 -10
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/check.js +3 -3
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/dev.d.ts +3 -9
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +3 -9
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/device.d.ts +3 -3
- package/dist/commands/device.js +5 -5
- package/dist/commands/device.js.map +1 -1
- package/dist/commands/publish.d.ts +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +24 -26
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/replace-deps.d.ts +3 -3
- package/dist/commands/replace-deps.d.ts.map +1 -1
- package/dist/commands/replace-deps.js +1 -1
- package/dist/commands/typecheck.d.ts +4 -3
- package/dist/commands/typecheck.d.ts.map +1 -1
- package/dist/commands/typecheck.js +5 -11
- package/dist/commands/typecheck.js.map +1 -1
- package/dist/commands/watch.d.ts +9 -9
- package/dist/commands/watch.js +9 -9
- package/dist/electron/electron.d.ts.map +1 -1
- package/dist/electron/electron.js +42 -3
- package/dist/electron/electron.js.map +1 -1
- package/dist/engines/BaseEngine.d.ts +1 -1
- package/dist/engines/BaseEngine.d.ts.map +1 -1
- package/dist/engines/BaseEngine.js +3 -1
- package/dist/engines/BaseEngine.js.map +1 -1
- package/dist/engines/NgtscEngine.d.ts +7 -7
- package/dist/engines/NgtscEngine.d.ts.map +1 -1
- package/dist/engines/NgtscEngine.js +3 -3
- package/dist/engines/ServerEsbuildEngine.d.ts +7 -7
- package/dist/engines/ServerEsbuildEngine.d.ts.map +1 -1
- package/dist/engines/ServerEsbuildEngine.js +3 -3
- package/dist/engines/TscEngine.d.ts +7 -7
- package/dist/engines/TscEngine.d.ts.map +1 -1
- package/dist/engines/TscEngine.js +3 -3
- package/dist/engines/ViteEngine.d.ts +7 -1
- package/dist/engines/ViteEngine.d.ts.map +1 -1
- package/dist/engines/ViteEngine.js +13 -12
- package/dist/engines/ViteEngine.js.map +1 -1
- package/dist/engines/index.d.ts +9 -5
- package/dist/engines/index.d.ts.map +1 -1
- package/dist/engines/index.js +7 -5
- package/dist/engines/index.js.map +1 -1
- package/dist/engines/types.d.ts +20 -20
- package/dist/engines/types.d.ts.map +1 -1
- package/dist/infra/ResultCollector.d.ts +9 -9
- package/dist/infra/ResultCollector.js +8 -8
- package/dist/infra/SignalHandler.d.ts +7 -7
- package/dist/infra/SignalHandler.js +7 -7
- package/dist/infra/WorkerManager.d.ts +14 -14
- package/dist/infra/WorkerManager.js +14 -14
- package/dist/orchestrators/BuildOrchestrator.d.ts +25 -25
- package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.js +34 -30
- package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
- package/dist/orchestrators/DevWatchOrchestrator.d.ts +7 -7
- package/dist/orchestrators/DevWatchOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/DevWatchOrchestrator.js +34 -34
- package/dist/orchestrators/DevWatchOrchestrator.js.map +1 -1
- package/dist/sd-cli-entry.d.ts +2 -2
- package/dist/sd-cli-entry.d.ts.map +1 -1
- package/dist/sd-cli-entry.js +15 -8
- package/dist/sd-cli-entry.js.map +1 -1
- package/dist/sd-cli.d.ts +3 -3
- package/dist/sd-cli.js +16 -16
- package/dist/sd-cli.js.map +1 -1
- package/dist/sd-config.types.d.ts +105 -105
- package/dist/sd-config.types.d.ts.map +1 -1
- package/dist/utils/angular-compiler.js +5 -5
- package/dist/utils/angular-compiler.js.map +1 -1
- package/dist/utils/build-env.d.ts +1 -1
- package/dist/utils/build-env.js +1 -1
- package/dist/utils/concurrency.d.ts +7 -7
- package/dist/utils/concurrency.js +7 -7
- package/dist/utils/copy-public.d.ts +9 -9
- package/dist/utils/copy-public.js +17 -17
- package/dist/utils/copy-public.js.map +1 -1
- package/dist/utils/copy-src.d.ts +9 -9
- package/dist/utils/copy-src.js +11 -11
- package/dist/utils/copy-src.js.map +1 -1
- package/dist/utils/engine-stop.d.ts +8 -9
- package/dist/utils/engine-stop.d.ts.map +1 -1
- package/dist/utils/engine-stop.js +9 -10
- package/dist/utils/engine-stop.js.map +1 -1
- package/dist/utils/esbuild-config.d.ts +23 -23
- package/dist/utils/esbuild-config.d.ts.map +1 -1
- package/dist/utils/esbuild-config.js +25 -25
- package/dist/utils/esbuild-config.js.map +1 -1
- package/dist/utils/lint-with-program.d.ts +15 -15
- package/dist/utils/lint-with-program.d.ts.map +1 -1
- package/dist/utils/lint-with-program.js +29 -29
- package/dist/utils/lint-with-program.js.map +1 -1
- package/dist/utils/ngtsc-build-core.d.ts +8 -8
- package/dist/utils/ngtsc-build-core.d.ts.map +1 -1
- package/dist/utils/ngtsc-build-core.js +14 -14
- package/dist/utils/ngtsc-build-core.js.map +1 -1
- package/dist/utils/output-path-rewriter.d.ts +14 -14
- package/dist/utils/output-path-rewriter.js +18 -18
- package/dist/utils/output-path-rewriter.js.map +1 -1
- package/dist/utils/output-utils.d.ts +6 -6
- package/dist/utils/output-utils.js +11 -11
- package/dist/utils/output-utils.js.map +1 -1
- package/dist/utils/package-utils.d.ts +21 -21
- package/dist/utils/package-utils.d.ts.map +1 -1
- package/dist/utils/package-utils.js +56 -45
- package/dist/utils/package-utils.js.map +1 -1
- package/dist/utils/replace-deps.d.ts +25 -25
- package/dist/utils/replace-deps.d.ts.map +1 -1
- package/dist/utils/replace-deps.js +84 -65
- package/dist/utils/replace-deps.js.map +1 -1
- package/dist/utils/sd-config.d.ts +3 -3
- package/dist/utils/sd-config.js +3 -3
- package/dist/utils/tsc-build.d.ts +13 -13
- package/dist/utils/tsc-build.d.ts.map +1 -1
- package/dist/utils/tsc-build.js +9 -9
- package/dist/utils/tsc-build.js.map +1 -1
- package/dist/utils/tsconfig.d.ts +11 -9
- package/dist/utils/tsconfig.d.ts.map +1 -1
- package/dist/utils/tsconfig.js +11 -9
- package/dist/utils/tsconfig.js.map +1 -1
- package/dist/utils/typecheck-non-package.d.ts +5 -6
- package/dist/utils/typecheck-non-package.d.ts.map +1 -1
- package/dist/utils/typecheck-non-package.js +7 -8
- package/dist/utils/typecheck-non-package.js.map +1 -1
- package/dist/utils/typecheck-serialization.d.ts +8 -8
- package/dist/utils/typecheck-serialization.d.ts.map +1 -1
- package/dist/utils/typecheck-serialization.js +12 -16
- package/dist/utils/typecheck-serialization.js.map +1 -1
- package/dist/utils/vite-config.d.ts +12 -5
- package/dist/utils/vite-config.d.ts.map +1 -1
- package/dist/utils/vite-config.js +95 -41
- package/dist/utils/vite-config.js.map +1 -1
- package/dist/utils/vite-scope-watch-plugin.d.ts.map +1 -1
- package/dist/utils/vite-scope-watch-plugin.js +1 -1
- package/dist/utils/vite-scope-watch-plugin.js.map +1 -1
- package/dist/utils/worker-events.d.ts +12 -12
- package/dist/utils/worker-events.d.ts.map +1 -1
- package/dist/utils/worker-events.js +10 -10
- package/dist/utils/worker-events.js.map +1 -1
- package/dist/utils/worker-utils.d.ts +12 -13
- package/dist/utils/worker-utils.d.ts.map +1 -1
- package/dist/utils/worker-utils.js +12 -13
- package/dist/utils/worker-utils.js.map +1 -1
- package/dist/vitest-plugin.d.ts.map +1 -1
- package/dist/vitest-plugin.js +5 -7
- package/dist/vitest-plugin.js.map +1 -1
- package/dist/workers/client.worker.d.ts +8 -2
- package/dist/workers/client.worker.d.ts.map +1 -1
- package/dist/workers/client.worker.js +215 -6
- package/dist/workers/client.worker.js.map +1 -1
- package/dist/workers/library-build.worker.d.ts +1 -1
- package/dist/workers/library-build.worker.d.ts.map +1 -1
- package/dist/workers/library-build.worker.js +7 -7
- package/dist/workers/library-build.worker.js.map +1 -1
- package/dist/workers/lint.worker.d.ts +2 -2
- package/dist/workers/lint.worker.js +2 -2
- package/dist/workers/ngtsc-build.worker.js +30 -30
- package/dist/workers/ngtsc-build.worker.js.map +1 -1
- package/dist/workers/server-build.worker.d.ts +17 -17
- package/dist/workers/server-build.worker.d.ts.map +1 -1
- package/dist/workers/server-build.worker.js +46 -46
- package/dist/workers/server-build.worker.js.map +1 -1
- package/dist/workers/server-runtime.worker.d.ts +7 -7
- package/dist/workers/server-runtime.worker.d.ts.map +1 -1
- package/dist/workers/server-runtime.worker.js +17 -17
- package/dist/workers/server-runtime.worker.js.map +1 -1
- package/docs/config.md +340 -0
- package/docs/publish-configuration-types.md +87 -0
- package/docs/pwa-configuration-types.md +55 -0
- package/docs/vitest-plugin.md +47 -0
- package/package.json +9 -7
- package/src/angular/client-transform-stylesheet.ts +1 -1
- package/src/angular/vite-angular-plugin.ts +89 -39
- package/src/angular/vite-postcss-inline-plugin.ts +1 -1
- package/src/capacitor/capacitor.ts +185 -38
- package/src/commands/build.ts +3 -10
- package/src/commands/check.ts +3 -3
- package/src/commands/dev.ts +3 -9
- package/src/commands/device.ts +5 -5
- package/src/commands/publish.ts +30 -26
- package/src/commands/replace-deps.ts +3 -3
- package/src/commands/typecheck.ts +7 -13
- package/src/commands/watch.ts +9 -9
- package/src/electron/electron.ts +49 -4
- package/src/engines/BaseEngine.ts +4 -1
- package/src/engines/NgtscEngine.ts +7 -7
- package/src/engines/ServerEsbuildEngine.ts +7 -7
- package/src/engines/TscEngine.ts +7 -7
- package/src/engines/ViteEngine.ts +18 -13
- package/src/engines/index.ts +11 -5
- package/src/engines/types.ts +20 -20
- package/src/infra/ResultCollector.ts +9 -9
- package/src/infra/SignalHandler.ts +7 -7
- package/src/infra/WorkerManager.ts +14 -14
- package/src/orchestrators/BuildOrchestrator.ts +42 -38
- package/src/orchestrators/DevWatchOrchestrator.ts +36 -36
- package/src/sd-cli-entry.ts +15 -8
- package/src/sd-cli.ts +16 -16
- package/src/sd-config.types.ts +107 -107
- package/src/utils/angular-compiler.ts +5 -5
- package/src/utils/build-env.ts +1 -1
- package/src/utils/concurrency.ts +7 -7
- package/src/utils/copy-public.ts +17 -17
- package/src/utils/copy-src.ts +11 -11
- package/src/utils/engine-stop.ts +9 -10
- package/src/utils/esbuild-config.ts +29 -29
- package/src/utils/lint-with-program.ts +34 -34
- package/src/utils/ngtsc-build-core.ts +17 -17
- package/src/utils/output-path-rewriter.ts +18 -18
- package/src/utils/output-utils.ts +11 -11
- package/src/utils/package-utils.ts +57 -45
- package/src/utils/replace-deps.ts +92 -67
- package/src/utils/sd-config.ts +3 -3
- package/src/utils/tsc-build.ts +18 -18
- package/src/utils/tsconfig.ts +11 -9
- package/src/utils/typecheck-non-package.ts +7 -8
- package/src/utils/typecheck-serialization.ts +13 -15
- package/src/utils/vite-config.ts +108 -46
- package/src/utils/vite-scope-watch-plugin.ts +6 -1
- package/src/utils/worker-events.ts +16 -16
- package/src/utils/worker-utils.ts +12 -13
- package/src/vitest-plugin.ts +5 -8
- package/src/workers/client.worker.ts +246 -7
- package/src/workers/library-build.worker.ts +8 -8
- package/src/workers/lint.worker.ts +2 -2
- package/src/workers/ngtsc-build.worker.ts +31 -31
- package/src/workers/server-build.worker.ts +60 -60
- package/src/workers/server-runtime.worker.ts +22 -22
- package/tests/angular/vite-angular-plugin-hmr-fallback.spec.ts +1 -0
- package/tests/angular/vite-angular-plugin-hmr.spec.ts +78 -0
- package/tests/angular/vite-angular-plugin.spec.ts +67 -0
- package/tests/capacitor/capacitor-build.spec.ts +93 -11
- package/tests/capacitor/capacitor-icon.spec.ts +7 -5
- package/tests/capacitor/capacitor-init.spec.ts +124 -10
- package/tests/capacitor/capacitor-run.spec.ts +14 -17
- package/tests/capacitor/capacitor-workspace.spec.ts +5 -3
- package/tests/commands/check.spec.ts +2 -2
- package/tests/commands/publish.spec.ts +2 -2
- package/tests/commands/typecheck.spec.ts +8 -0
- package/tests/electron/electron.spec.ts +12 -10
- package/tests/engines/base-engine.spec.ts +37 -0
- package/tests/engines/vite-engine.spec.ts +115 -3
- package/tests/utils/vite-config.spec.ts +162 -90
- package/tests/workers/client-worker.spec.ts +690 -0
- package/tests/workers/server-build-worker.spec.ts +3 -3
package/dist/sd-cli-entry.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/* eslint-disable no-console */
|
|
3
|
-
//
|
|
3
|
+
// 사이드 이펙트: Map/Array prototype 확장 (getOrCreate 등)
|
|
4
4
|
import "@simplysm/core-common";
|
|
5
5
|
import yargs, {} from "yargs";
|
|
6
6
|
import { hideBin } from "yargs/helpers";
|
|
@@ -28,7 +28,7 @@ async function collectYargsHelp(argv) {
|
|
|
28
28
|
await createCliParser(argv).exitProcess(false).parse();
|
|
29
29
|
}
|
|
30
30
|
catch {
|
|
31
|
-
// yargs
|
|
31
|
+
// yargs가 help 출력 후 throw할 수 있음
|
|
32
32
|
}
|
|
33
33
|
finally {
|
|
34
34
|
console.log = orig;
|
|
@@ -36,11 +36,11 @@ async function collectYargsHelp(argv) {
|
|
|
36
36
|
return lines.join("\n");
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
40
|
-
* @internal
|
|
39
|
+
* CLI 파서 생성
|
|
40
|
+
* @internal 테스트용으로 export
|
|
41
41
|
*/
|
|
42
42
|
export function createCliParser(argv) {
|
|
43
|
-
//
|
|
43
|
+
// 최상위 --help/-h (서브커맨드 없이): 모든 명령어의 종합 도움말 표시
|
|
44
44
|
const hasHelp = argv.includes("--help") || argv.includes("-h");
|
|
45
45
|
const hasCommand = COMMAND_NAMES.some((cmd) => argv.includes(cmd));
|
|
46
46
|
if (hasHelp && !hasCommand) {
|
|
@@ -252,10 +252,17 @@ export function createCliParser(argv) {
|
|
|
252
252
|
});
|
|
253
253
|
})
|
|
254
254
|
.demandCommand(1, "Please specify a command.")
|
|
255
|
-
.strict()
|
|
255
|
+
.strict()
|
|
256
|
+
.fail((msg, err) => {
|
|
257
|
+
if (msg) {
|
|
258
|
+
consola.error(msg);
|
|
259
|
+
process.exit(1);
|
|
260
|
+
}
|
|
261
|
+
throw err;
|
|
262
|
+
});
|
|
256
263
|
}
|
|
257
|
-
//
|
|
258
|
-
//
|
|
264
|
+
// CLI로 직접 실행될 때만 파싱
|
|
265
|
+
// ESM에서 메인 모듈 판별: import.meta.url과 process.argv[1]을 정규화하여 비교
|
|
259
266
|
const cliEntryPath = process.argv.at(1);
|
|
260
267
|
if (cliEntryPath != null &&
|
|
261
268
|
fileURLToPath(import.meta.url) === fs.realpathSync(path.resolve(cliEntryPath))) {
|
package/dist/sd-cli-entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-cli-entry.js","sourceRoot":"","sources":["../src/sd-cli-entry.ts"],"names":[],"mappings":";AACA,+BAA+B;AAE/B,
|
|
1
|
+
{"version":3,"file":"sd-cli-entry.js","sourceRoot":"","sources":["../src/sd-cli-entry.ts"],"names":[],"mappings":"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"}
|
package/dist/sd-cli.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* CLI
|
|
3
|
+
* CLI 런처
|
|
4
4
|
*
|
|
5
|
-
* .ts
|
|
6
|
-
* .js
|
|
5
|
+
* .ts 실행 (개발): CPU affinity 적용 후 sd-cli-entry를 직접 import
|
|
6
|
+
* .js 실행 (프로덕션): replaceDeps 실행 후 새 프로세스에서 sd-cli-entry 실행
|
|
7
7
|
*/
|
|
8
8
|
export {};
|
|
9
9
|
//# sourceMappingURL=sd-cli.d.ts.map
|
package/dist/sd-cli.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* CLI
|
|
3
|
+
* CLI 런처
|
|
4
4
|
*
|
|
5
|
-
* .ts
|
|
6
|
-
* .js
|
|
5
|
+
* .ts 실행 (개발): CPU affinity 적용 후 sd-cli-entry를 직접 import
|
|
6
|
+
* .js 실행 (프로덕션): replaceDeps 실행 후 새 프로세스에서 sd-cli-entry 실행
|
|
7
7
|
*/
|
|
8
8
|
import { cpx } from "@simplysm/core-node";
|
|
9
9
|
import os from "os";
|
|
@@ -13,16 +13,16 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
13
13
|
const __dirname = path.dirname(__filename);
|
|
14
14
|
const isDev = path.extname(__filename) === ".ts";
|
|
15
15
|
if (isDev) {
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
16
|
+
// 개발 모드 (.ts): affinity 적용 후 직접 실행
|
|
17
|
+
// import만으로는 메인 모듈 판별이 실패하므로 (process.argv[1] ≠ sd-cli-entry)
|
|
18
|
+
// createCliParser를 명시적으로 호출해야 한다.
|
|
19
19
|
configureAffinityAndPriority(process.pid);
|
|
20
20
|
const { createCliParser } = await import("./sd-cli-entry.js");
|
|
21
21
|
await createCliParser(process.argv.slice(2)).parse();
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
24
|
// Production mode (.js): two-stage execution
|
|
25
|
-
// Phase 1: replaceDeps (
|
|
25
|
+
// Phase 1: replaceDeps (인라인 — 설치된 버전으로 복사)
|
|
26
26
|
try {
|
|
27
27
|
const { loadSdConfig } = await import("./utils/sd-config.js");
|
|
28
28
|
const { setupReplaceDeps } = await import("./utils/replace-deps.js");
|
|
@@ -32,11 +32,11 @@ else {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
catch {
|
|
35
|
-
//
|
|
35
|
+
// sd.config.ts가 없거나 replaceDeps가 설정되지 않으면 건너뜀
|
|
36
36
|
}
|
|
37
|
-
// Phase 2:
|
|
37
|
+
// Phase 2: 실제 CLI를 새 프로세스로 실행 (모듈 캐시 초기화)
|
|
38
38
|
const cliEntryFilePath = path.join(__dirname, "sd-cli-entry.js");
|
|
39
|
-
const subprocess = cpx.
|
|
39
|
+
const subprocess = cpx.spawn("node", [
|
|
40
40
|
"--max-old-space-size=8192",
|
|
41
41
|
"--max-semi-space-size=16",
|
|
42
42
|
cliEntryFilePath,
|
|
@@ -48,10 +48,10 @@ else {
|
|
|
48
48
|
process.exitCode = result.exitCode;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
51
|
+
* CPU affinity 마스크 계산 (앞쪽 코어 제외)
|
|
52
52
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
53
|
+
* CPU 4개당 1개 코어를 제외하고, 나머지 코어의 비트를 ON으로 설정한다.
|
|
54
|
+
* 예시: 8코어 → 2개 제외 → 0xFC (코어 2~7)
|
|
55
55
|
*/
|
|
56
56
|
function calculateAffinityMask(cpuCount) {
|
|
57
57
|
const exclude = cpuCount <= 1 ? 0 : Math.ceil(cpuCount / 4);
|
|
@@ -62,12 +62,12 @@ function calculateAffinityMask(cpuCount) {
|
|
|
62
62
|
return "0x" + mask.toString(16).toUpperCase();
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
|
-
*
|
|
65
|
+
* CPU affinity 및 우선순위 설정 (크로스 플랫폼)
|
|
66
66
|
*
|
|
67
67
|
* - Windows: PowerShell ProcessorAffinity + PriorityClass
|
|
68
68
|
* - Linux/WSL: taskset + renice
|
|
69
69
|
*
|
|
70
|
-
*
|
|
70
|
+
* 실패 시 경고만 출력하며, CLI 동작에는 영향을 주지 않는다.
|
|
71
71
|
*/
|
|
72
72
|
function configureAffinityAndPriority(pid) {
|
|
73
73
|
const cpuCount = os.cpus().length;
|
|
@@ -84,7 +84,7 @@ function configureAffinityAndPriority(pid) {
|
|
|
84
84
|
else {
|
|
85
85
|
command = `taskset -p ${mask} ${pid} && renice +10 -p ${pid}`;
|
|
86
86
|
}
|
|
87
|
-
cpx.
|
|
87
|
+
cpx.spawn(command, [], { shell: true }).catch((err) => {
|
|
88
88
|
// eslint-disable-next-line no-console
|
|
89
89
|
console.warn("Failed to configure CPU affinity/priority:", err instanceof Error ? err.message : String(err));
|
|
90
90
|
});
|
package/dist/sd-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-cli.js","sourceRoot":"","sources":["../src/sd-cli.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC;AAEjD,IAAI,KAAK,EAAE,CAAC;IACV,
|
|
1
|
+
{"version":3,"file":"sd-cli.js","sourceRoot":"","sources":["../src/sd-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* - node: Node.js
|
|
4
|
-
* - browser:
|
|
5
|
-
* - neutral: Node
|
|
2
|
+
* 빌드 타겟 타입 (esbuild로 빌드)
|
|
3
|
+
* - node: Node.js 전용 패키지
|
|
4
|
+
* - browser: 브라우저 전용 패키지
|
|
5
|
+
* - neutral: Node/브라우저 공용 패키지
|
|
6
6
|
*/
|
|
7
7
|
export type BuildTarget = "node" | "browser" | "neutral";
|
|
8
8
|
/**
|
|
9
|
-
* npm
|
|
9
|
+
* npm 레지스트리 배포 설정
|
|
10
10
|
*/
|
|
11
11
|
export interface SdNpmPublishConfig {
|
|
12
12
|
type: "npm";
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
* - SdNpmPublishConfig:
|
|
17
|
-
* - SdLocalDirectoryPublishConfig:
|
|
18
|
-
* - SdStoragePublishConfig:
|
|
15
|
+
* 패키지 배포 설정
|
|
16
|
+
* - SdNpmPublishConfig: npm 레지스트리에 배포
|
|
17
|
+
* - SdLocalDirectoryPublishConfig: 로컬 디렉토리로 복사
|
|
18
|
+
* - SdStoragePublishConfig: FTP/FTPS/SFTP 서버에 업로드
|
|
19
19
|
*/
|
|
20
20
|
export type SdPublishConfig = SdNpmPublishConfig | SdLocalDirectoryPublishConfig | SdStoragePublishConfig;
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* 로컬 디렉토리 배포 설정
|
|
23
23
|
*/
|
|
24
24
|
export interface SdLocalDirectoryPublishConfig {
|
|
25
25
|
type: "local-directory";
|
|
26
|
-
/**
|
|
26
|
+
/** 배포 대상 경로 (환경 변수 치환 지원: %VER%, %PROJECT%) */
|
|
27
27
|
path: string;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
30
|
+
* 스토리지 (FTP/FTPS/SFTP) 배포 설정
|
|
31
31
|
*/
|
|
32
32
|
export interface SdStoragePublishConfig {
|
|
33
33
|
type: "ftp" | "ftps" | "sftp";
|
|
@@ -38,119 +38,119 @@ export interface SdStoragePublishConfig {
|
|
|
38
38
|
password?: string;
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
|
-
* postPublish
|
|
41
|
+
* postPublish 스크립트 설정
|
|
42
42
|
*/
|
|
43
43
|
export interface SdPostPublishScriptConfig {
|
|
44
44
|
type: "script";
|
|
45
45
|
cmd: string;
|
|
46
|
-
/**
|
|
46
|
+
/** 스크립트 인수 (환경 변수 치환 지원: %VER%, %PROJECT%) */
|
|
47
47
|
args: string[];
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* 패키지 설정 (node/browser/neutral)
|
|
51
51
|
*/
|
|
52
52
|
export interface SdBuildPackageConfig {
|
|
53
|
-
/**
|
|
53
|
+
/** 빌드 타겟 */
|
|
54
54
|
target: BuildTarget;
|
|
55
|
-
/**
|
|
55
|
+
/** 배포 설정 */
|
|
56
56
|
publish?: SdPublishConfig;
|
|
57
|
-
/**
|
|
57
|
+
/** src/에서 dist/로 복사할 파일의 glob 패턴 (src/ 기준 상대 경로) */
|
|
58
58
|
copySrc?: string[];
|
|
59
|
-
/** watch
|
|
59
|
+
/** watch 훅 설정 (설정 시, watch 모드에서 빌드 엔진과 함께 훅이 실행됨) */
|
|
60
60
|
watch?: SdWatchHookConfig;
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
|
-
* Capacitor Android
|
|
63
|
+
* Capacitor Android 서명 설정
|
|
64
64
|
*/
|
|
65
65
|
export interface SdCapacitorSignConfig {
|
|
66
|
-
/** keystore
|
|
66
|
+
/** keystore 파일 경로 (패키지 디렉토리 기준 상대 경로) */
|
|
67
67
|
keystore: string;
|
|
68
|
-
/** keystore
|
|
68
|
+
/** keystore 비밀번호 */
|
|
69
69
|
storePassword: string;
|
|
70
|
-
/**
|
|
70
|
+
/** 키 별칭 */
|
|
71
71
|
alias: string;
|
|
72
|
-
/**
|
|
72
|
+
/** 키 비밀번호 */
|
|
73
73
|
password: string;
|
|
74
|
-
/** keystore
|
|
74
|
+
/** keystore 타입 (기본값: "jks") */
|
|
75
75
|
keystoreType?: string;
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
78
|
-
* Capacitor Android
|
|
78
|
+
* Capacitor Android 권한 설정
|
|
79
79
|
*/
|
|
80
80
|
export interface SdCapacitorPermission {
|
|
81
|
-
/**
|
|
81
|
+
/** 권한 이름 (예: "CAMERA", "WRITE_EXTERNAL_STORAGE") */
|
|
82
82
|
name: string;
|
|
83
|
-
/**
|
|
83
|
+
/** 최대 SDK 버전 */
|
|
84
84
|
maxSdkVersion?: number;
|
|
85
|
-
/** tools:ignore
|
|
85
|
+
/** tools:ignore 속성 값 */
|
|
86
86
|
ignore?: string;
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
|
-
* Capacitor Android Intent Filter
|
|
89
|
+
* Capacitor Android Intent Filter 설정
|
|
90
90
|
*/
|
|
91
91
|
export interface SdCapacitorIntentFilter {
|
|
92
|
-
/** intent
|
|
92
|
+
/** intent 액션 (예: "android.intent.action.VIEW") */
|
|
93
93
|
action?: string;
|
|
94
|
-
/** intent
|
|
94
|
+
/** intent 카테고리 (예: "android.intent.category.DEFAULT") */
|
|
95
95
|
category?: string;
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
|
-
* Capacitor Android
|
|
98
|
+
* Capacitor Android 플랫폼 설정
|
|
99
99
|
*/
|
|
100
100
|
export interface SdCapacitorAndroidConfig {
|
|
101
|
-
/** AndroidManifest.xml application
|
|
101
|
+
/** AndroidManifest.xml application 태그 속성 (예: { requestLegacyExternalStorage: "true" }) */
|
|
102
102
|
config?: Record<string, string>;
|
|
103
|
-
/** AAB
|
|
103
|
+
/** AAB 번들 빌드 플래그 (false이면 APK) */
|
|
104
104
|
bundle?: boolean;
|
|
105
|
-
/** Intent Filter
|
|
105
|
+
/** Intent Filter 설정 */
|
|
106
106
|
intentFilters?: SdCapacitorIntentFilter[];
|
|
107
|
-
/** APK/AAB
|
|
107
|
+
/** APK/AAB 서명 설정 */
|
|
108
108
|
sign?: SdCapacitorSignConfig;
|
|
109
|
-
/** Android SDK
|
|
109
|
+
/** Android SDK 버전 (minSdk, targetSdk) */
|
|
110
110
|
sdkVersion?: number;
|
|
111
|
-
/**
|
|
111
|
+
/** 추가 권한 설정 */
|
|
112
112
|
permissions?: SdCapacitorPermission[];
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
115
|
-
* Capacitor
|
|
115
|
+
* Capacitor 설정
|
|
116
116
|
*/
|
|
117
117
|
export interface SdCapacitorConfig {
|
|
118
|
-
/**
|
|
118
|
+
/** 앱 ID (예: "com.example.app") */
|
|
119
119
|
appId: string;
|
|
120
|
-
/**
|
|
120
|
+
/** 앱 이름 */
|
|
121
121
|
appName: string;
|
|
122
|
-
/** Capacitor
|
|
122
|
+
/** Capacitor 플러그인 설정 (key: 패키지명, value: true 또는 플러그인 옵션) */
|
|
123
123
|
plugins?: Record<string, Record<string, unknown> | true>;
|
|
124
|
-
/**
|
|
124
|
+
/** 앱 아이콘 경로 (패키지 디렉토리 기준 상대 경로) */
|
|
125
125
|
icon?: string;
|
|
126
|
-
/**
|
|
126
|
+
/** 디버그 빌드 플래그 */
|
|
127
127
|
debug?: boolean;
|
|
128
|
-
/**
|
|
128
|
+
/** 플랫폼별 설정 */
|
|
129
129
|
platform?: {
|
|
130
130
|
android?: SdCapacitorAndroidConfig;
|
|
131
131
|
};
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
|
-
* Electron
|
|
134
|
+
* Electron 설정
|
|
135
135
|
*/
|
|
136
136
|
export interface SdElectronConfig {
|
|
137
|
-
/** Electron
|
|
137
|
+
/** Electron 앱 ID (예: "com.example.myapp") */
|
|
138
138
|
appId: string;
|
|
139
|
-
/**
|
|
139
|
+
/** 포터블 .exe (true) 또는 NSIS 설치 프로그램 (false/미지정) */
|
|
140
140
|
portable?: boolean;
|
|
141
|
-
/**
|
|
141
|
+
/** 설치 프로그램 아이콘 경로 (.ico, 패키지 디렉토리 기준 상대 경로) */
|
|
142
142
|
installerIcon?: string;
|
|
143
|
-
/**
|
|
143
|
+
/** Electron에 포함할 npm 패키지 (네이티브 모듈 등) */
|
|
144
144
|
reinstallDependencies?: string[];
|
|
145
|
-
/** npm postinstall
|
|
145
|
+
/** npm postinstall 스크립트 */
|
|
146
146
|
postInstallScript?: string;
|
|
147
|
-
/** NSIS
|
|
147
|
+
/** NSIS 옵션 (portable이 false일 때) */
|
|
148
148
|
nsisOptions?: Record<string, unknown>;
|
|
149
|
-
/**
|
|
149
|
+
/** 환경 변수 (electron-main.ts에서 process.env로 접근 가능) */
|
|
150
150
|
env?: Record<string, string>;
|
|
151
151
|
}
|
|
152
152
|
/**
|
|
153
|
-
* PWA manifest
|
|
153
|
+
* PWA manifest 설정 (VitePWA manifest 옵션의 서브셋)
|
|
154
154
|
*/
|
|
155
155
|
export interface SdPwaManifestConfig {
|
|
156
156
|
name?: string;
|
|
@@ -165,139 +165,139 @@ export interface SdPwaManifestConfig {
|
|
|
165
165
|
}>;
|
|
166
166
|
}
|
|
167
167
|
/**
|
|
168
|
-
* PWA workbox
|
|
168
|
+
* PWA workbox 설정
|
|
169
169
|
*/
|
|
170
170
|
export interface SdPwaWorkboxConfig {
|
|
171
171
|
globPatterns?: string[];
|
|
172
172
|
}
|
|
173
173
|
/**
|
|
174
|
-
* PWA
|
|
174
|
+
* PWA 설정
|
|
175
175
|
*/
|
|
176
176
|
export interface SdPwaConfig {
|
|
177
177
|
manifest?: SdPwaManifestConfig;
|
|
178
178
|
workbox?: SdPwaWorkboxConfig;
|
|
179
179
|
}
|
|
180
180
|
/**
|
|
181
|
-
*
|
|
181
|
+
* 클라이언트 패키지용 브라우저 지원 설정
|
|
182
182
|
*/
|
|
183
183
|
export interface SdBrowserSupportConfig {
|
|
184
|
-
/** browserslist
|
|
184
|
+
/** browserslist 쿼리 (예: "last 2 Chrome versions" 또는 ["ie 11", "last 2 versions"]) */
|
|
185
185
|
browserslist?: string | string[];
|
|
186
|
-
/** PostCSS
|
|
186
|
+
/** PostCSS 플러그인 설정 */
|
|
187
187
|
postCss?: {
|
|
188
188
|
plugins: unknown[];
|
|
189
189
|
};
|
|
190
|
-
/**
|
|
190
|
+
/** 레거시 모듈 지원 (코드 분할 비활성화 + import.meta 치환) */
|
|
191
191
|
legacyModule?: boolean;
|
|
192
192
|
}
|
|
193
193
|
/**
|
|
194
|
-
*
|
|
194
|
+
* 클라이언트 패키지 설정 (Vite 개발 서버)
|
|
195
195
|
*/
|
|
196
196
|
export interface SdClientPackageConfig {
|
|
197
|
-
/**
|
|
197
|
+
/** 빌드 타겟 */
|
|
198
198
|
target: "client";
|
|
199
199
|
/**
|
|
200
|
-
*
|
|
201
|
-
* - string:
|
|
202
|
-
* - number:
|
|
200
|
+
* 서버 설정
|
|
201
|
+
* - string: 연결할 서버 패키지명 (예: "solid-demo-server")
|
|
202
|
+
* - number: Vite 포트 직접 지정 (하위 호환)
|
|
203
203
|
*/
|
|
204
204
|
server: string | number;
|
|
205
|
-
/**
|
|
205
|
+
/** 빌드 시 치환할 환경 변수 (process.env를 객체로 치환) */
|
|
206
206
|
env?: Record<string, string>;
|
|
207
|
-
/**
|
|
207
|
+
/** 배포 설정 */
|
|
208
208
|
publish?: SdPublishConfig;
|
|
209
|
-
/** Capacitor
|
|
209
|
+
/** Capacitor 설정 */
|
|
210
210
|
capacitor?: SdCapacitorConfig;
|
|
211
|
-
/** Electron
|
|
211
|
+
/** Electron 설정 */
|
|
212
212
|
electron?: SdElectronConfig;
|
|
213
|
-
/**
|
|
213
|
+
/** 런타임 설정 (빌드 시 dist/.config.json으로 기록) */
|
|
214
214
|
configs?: Record<string, unknown>;
|
|
215
|
-
/**
|
|
215
|
+
/** Vite optimizeDeps에서 제외하고 Capacitor/Electron package.json에 추가할 패키지 */
|
|
216
216
|
exclude?: string[];
|
|
217
|
-
/**
|
|
217
|
+
/** 브라우저 지원 설정 (browserslist, PostCSS, legacyModule) */
|
|
218
218
|
browserSupport?: SdBrowserSupportConfig;
|
|
219
|
-
/** PWA
|
|
219
|
+
/** PWA 설정. false이면 비활성화. 미지정 시 기본값으로 활성화 */
|
|
220
220
|
pwa?: false | SdPwaConfig;
|
|
221
221
|
}
|
|
222
222
|
/**
|
|
223
|
-
*
|
|
223
|
+
* 서버 패키지 설정 (Fastify 서버)
|
|
224
224
|
*/
|
|
225
225
|
export interface SdServerPackageConfig {
|
|
226
|
-
/**
|
|
226
|
+
/** 빌드 타겟 */
|
|
227
227
|
target: "server";
|
|
228
|
-
/**
|
|
228
|
+
/** 빌드 시 치환할 환경 변수 (process.env.KEY를 상수로 치환) */
|
|
229
229
|
env?: Record<string, string>;
|
|
230
|
-
/**
|
|
230
|
+
/** 배포 설정 */
|
|
231
231
|
publish?: SdPublishConfig;
|
|
232
|
-
/**
|
|
232
|
+
/** 런타임 설정 (빌드 시 dist/.config.json으로 기록) */
|
|
233
233
|
configs?: Record<string, unknown>;
|
|
234
|
-
/**
|
|
234
|
+
/** esbuild 번들에 포함하지 않을 외부 모듈 (자동 binding.gyp 감지에 추가) */
|
|
235
235
|
externals?: string[];
|
|
236
|
-
/** PM2
|
|
236
|
+
/** PM2 설정 (지정 시 dist/pm2.config.cjs 생성) */
|
|
237
237
|
pm2?: {
|
|
238
|
-
/** PM2
|
|
238
|
+
/** PM2 프로세스 이름 (미지정 시 package.json name에서 생성) */
|
|
239
239
|
name?: string;
|
|
240
|
-
/**
|
|
240
|
+
/** PM2 watch에서 제외할 경로 */
|
|
241
241
|
ignoreWatchPaths?: string[];
|
|
242
242
|
};
|
|
243
|
-
/**
|
|
243
|
+
/** 사용할 패키지 매니저 (mise.toml 또는 volta 설정 생성에 영향) */
|
|
244
244
|
packageManager?: "volta" | "mise";
|
|
245
245
|
}
|
|
246
246
|
/**
|
|
247
|
-
*
|
|
247
|
+
* scripts 패키지용 watch 훅 설정
|
|
248
248
|
*/
|
|
249
249
|
export interface SdWatchHookConfig {
|
|
250
|
-
/** glob
|
|
250
|
+
/** 감시할 glob 패턴 (패키지 디렉토리 기준 상대 경로) */
|
|
251
251
|
target: string[];
|
|
252
|
-
/**
|
|
252
|
+
/** 변경 시 실행할 명령어 */
|
|
253
253
|
cmd: string;
|
|
254
|
-
/**
|
|
254
|
+
/** 명령어 인수 */
|
|
255
255
|
args?: string[];
|
|
256
256
|
}
|
|
257
257
|
/**
|
|
258
|
-
*
|
|
258
|
+
* 스크립트 전용 패키지 설정 (watch 훅이 설정되지 않으면 watch/typecheck에서 제외)
|
|
259
259
|
*/
|
|
260
260
|
export interface SdScriptsPackageConfig {
|
|
261
|
-
/**
|
|
261
|
+
/** 빌드 타겟 */
|
|
262
262
|
target: "scripts";
|
|
263
|
-
/**
|
|
263
|
+
/** 배포 설정 */
|
|
264
264
|
publish?: SdPublishConfig;
|
|
265
|
-
/** watch
|
|
265
|
+
/** watch 훅 설정 (설정 시, watch 모드에 패키지가 포함됨) */
|
|
266
266
|
watch?: SdWatchHookConfig;
|
|
267
267
|
}
|
|
268
268
|
/**
|
|
269
|
-
*
|
|
269
|
+
* 패키지 설정
|
|
270
270
|
*/
|
|
271
271
|
export type SdPackageConfig = SdBuildPackageConfig | SdClientPackageConfig | SdServerPackageConfig | SdScriptsPackageConfig;
|
|
272
272
|
/**
|
|
273
|
-
* sd.config.ts
|
|
273
|
+
* sd.config.ts 설정 타입
|
|
274
274
|
*/
|
|
275
275
|
export interface SdConfig {
|
|
276
|
-
/**
|
|
276
|
+
/** 패키지별 설정 (key: packages/ 하위 디렉토리명, 예: "core-common") */
|
|
277
277
|
packages: Record<string, SdPackageConfig | undefined>;
|
|
278
278
|
/**
|
|
279
|
-
*
|
|
280
|
-
* - key:
|
|
281
|
-
* - value:
|
|
282
|
-
* -
|
|
279
|
+
* 의존성 교체 설정 (node_modules 패키지를 로컬 소스로 심링크 교체)
|
|
280
|
+
* - key: node_modules에서 찾을 패키지 glob 패턴 (예: "@simplysm/*")
|
|
281
|
+
* - value: 소스 디렉토리 경로 (key의 *에서 캡처된 값이 value의 *에 치환됨)
|
|
282
|
+
* - 예시: { "@simplysm/*": "../simplysm/packages/*" }
|
|
283
283
|
*/
|
|
284
284
|
replaceDeps?: Record<string, string>;
|
|
285
|
-
/**
|
|
285
|
+
/** 배포 완료 후 실행할 스크립트 */
|
|
286
286
|
postPublish?: SdPostPublishScriptConfig[];
|
|
287
287
|
}
|
|
288
288
|
/**
|
|
289
|
-
*
|
|
289
|
+
* sd.config.ts 함수에 전달되는 매개변수
|
|
290
290
|
*/
|
|
291
291
|
export interface SdConfigParams {
|
|
292
|
-
/**
|
|
292
|
+
/** 현재 작업 디렉토리 */
|
|
293
293
|
cwd: string;
|
|
294
|
-
/**
|
|
294
|
+
/** 개발 모드 플래그 */
|
|
295
295
|
dev: boolean;
|
|
296
|
-
/**
|
|
296
|
+
/** 추가 옵션 (CLI의 -o 플래그에서 전달) */
|
|
297
297
|
options: string[];
|
|
298
298
|
}
|
|
299
299
|
/**
|
|
300
|
-
* sd.config.ts
|
|
300
|
+
* sd.config.ts는 반드시 다음 형식의 함수를 default export해야 한다:
|
|
301
301
|
*
|
|
302
302
|
* ```typescript
|
|
303
303
|
* import type { SdConfig, SdConfigFn, SdConfigParams } from "@simplysm/sd-cli";
|