@simplysm/sd-cli 14.0.19 → 14.0.21
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/angular/vite-postcss-inline-plugin.d.ts.map +1 -1
- package/dist/angular/vite-postcss-inline-plugin.js +4 -1
- package/dist/angular/vite-postcss-inline-plugin.js.map +1 -1
- package/dist/capacitor/capacitor-android.d.ts +16 -0
- package/dist/capacitor/capacitor-android.d.ts.map +1 -0
- package/dist/capacitor/capacitor-android.js +289 -0
- package/dist/capacitor/capacitor-android.js.map +1 -0
- package/dist/capacitor/capacitor.d.ts +0 -49
- package/dist/capacitor/capacitor.d.ts.map +1 -1
- package/dist/capacitor/capacitor.js +4 -244
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/check.js +2 -2
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/lint.d.ts +1 -42
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +1 -151
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +2 -1
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/typecheck.d.ts +3 -40
- package/dist/commands/typecheck.d.ts.map +1 -1
- package/dist/commands/typecheck.js +3 -232
- package/dist/commands/typecheck.js.map +1 -1
- package/dist/electron/electron.js +11 -4
- package/dist/electron/electron.js.map +1 -1
- package/dist/orchestrators/DevWatchOrchestrator.d.ts +1 -0
- package/dist/orchestrators/DevWatchOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/DevWatchOrchestrator.js +10 -6
- package/dist/orchestrators/DevWatchOrchestrator.js.map +1 -1
- package/dist/orchestrators/TypecheckOrchestrator.d.ts +74 -0
- package/dist/orchestrators/TypecheckOrchestrator.d.ts.map +1 -0
- package/dist/orchestrators/TypecheckOrchestrator.js +285 -0
- package/dist/orchestrators/TypecheckOrchestrator.js.map +1 -0
- package/dist/sd-cli.js +6 -1
- package/dist/sd-cli.js.map +1 -1
- package/dist/utils/lint-core.d.ts +43 -0
- package/dist/utils/lint-core.d.ts.map +1 -0
- package/dist/utils/lint-core.js +154 -0
- package/dist/utils/lint-core.js.map +1 -0
- package/dist/utils/lint-utils.d.ts +1 -1
- package/dist/utils/lint-utils.d.ts.map +1 -1
- package/dist/utils/server-production-files.d.ts +22 -0
- package/dist/utils/server-production-files.d.ts.map +1 -0
- package/dist/utils/server-production-files.js +162 -0
- package/dist/utils/server-production-files.js.map +1 -0
- package/dist/workers/lint.worker.d.ts +1 -1
- package/dist/workers/lint.worker.d.ts.map +1 -1
- package/dist/workers/lint.worker.js +1 -1
- package/dist/workers/lint.worker.js.map +1 -1
- package/dist/workers/server-build.worker.d.ts.map +1 -1
- package/dist/workers/server-build.worker.js +11 -161
- package/dist/workers/server-build.worker.js.map +1 -1
- package/package.json +4 -4
- package/src/angular/vite-postcss-inline-plugin.ts +5 -1
- package/src/capacitor/capacitor-android.ts +368 -0
- package/src/capacitor/capacitor.ts +4 -317
- package/src/commands/check.ts +2 -2
- package/src/commands/lint.ts +1 -201
- package/src/commands/publish.ts +2 -1
- package/src/commands/typecheck.ts +7 -292
- package/src/electron/electron.ts +4 -4
- package/src/orchestrators/DevWatchOrchestrator.ts +10 -6
- package/src/orchestrators/TypecheckOrchestrator.ts +364 -0
- package/src/sd-cli.ts +6 -1
- package/src/utils/lint-core.ts +205 -0
- package/src/utils/lint-utils.ts +1 -1
- package/src/utils/server-production-files.ts +186 -0
- package/src/workers/lint.worker.ts +1 -1
- package/src/workers/server-build.worker.ts +10 -185
- package/tests/angular/vite-postcss-inline-plugin.spec.ts +10 -0
- package/tests/capacitor/capacitor-android-exports.verify.md +11 -0
- package/tests/capacitor/capacitor-android.spec.ts +219 -0
- package/tests/capacitor/capacitor-build.spec.ts +17 -21
- package/tests/capacitor/capacitor-icon.spec.ts +17 -19
- package/tests/capacitor/capacitor-init.spec.ts +18 -14
- package/tests/capacitor/capacitor-run.spec.ts +10 -24
- package/tests/capacitor/capacitor-workspace.spec.ts +10 -15
- package/tests/commands/check.spec.ts +2 -2
- package/tests/commands/lint.spec.ts +33 -194
- package/tests/commands/publish-set.verify.md +7 -0
- package/tests/electron/electron-symlink-cleanup.verify.md +8 -0
- package/tests/orchestrators/dist-delete-watcher.verify.md +10 -0
- package/tests/orchestrators/typecheck-orchestrator.spec.ts +180 -0
- package/tests/sd-cli-catch-all.verify.md +7 -0
- package/tests/utils/lint-core-import-paths.verify.md +10 -0
- package/tests/utils/lint-core.spec.ts +188 -0
- package/tests/utils/server-production-files-import-paths.verify.md +14 -0
- package/tests/workers/server-build-context-dispose.verify.md +8 -0
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,mCAAmC;IACnC,8DAA8D;IAC9D,kCAAkC;IAClC,4BAA4B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC9D,MAAM,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACvD,CAAC;KAAM,CAAC;IACN,6CAA6C;IAE7C,2CAA2C;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC9D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QACjF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,cAAc,IAAI,QAAQ,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;YACvE,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAAC,
|
|
1
|
+
{"version":3,"file":"sd-cli.js","sourceRoot":"","sources":["../src/sd-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ESLint 실행 옵션
|
|
3
|
+
*/
|
|
4
|
+
export interface LintOptions {
|
|
5
|
+
/** 린트 대상 경로 필터 (예: `packages/core-common`). 빈 배열이면 전체 대상 */
|
|
6
|
+
targets: string[];
|
|
7
|
+
/** 자동 수정 활성화 */
|
|
8
|
+
fix: boolean;
|
|
9
|
+
/** ESLint 규칙별 실행 시간 측정 활성화 (TIMING 환경변수 설정) */
|
|
10
|
+
timing: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* executeLint()의 반환 타입
|
|
14
|
+
*/
|
|
15
|
+
export interface LintResult {
|
|
16
|
+
/** 린트 에러가 없으면 true */
|
|
17
|
+
success: boolean;
|
|
18
|
+
/** ESLint 전체 에러 수 */
|
|
19
|
+
errorCount: number;
|
|
20
|
+
/** ESLint 전체 경고 수 */
|
|
21
|
+
warningCount: number;
|
|
22
|
+
/** 포매터 출력 문자열 (stdout에 출력할 내용) */
|
|
23
|
+
formattedOutput: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* eslint.config.ts/js에서 globalIgnores 패턴을 추출한다.
|
|
27
|
+
* ignores만 있고 files가 없는 설정 객체가 globalIgnores이다.
|
|
28
|
+
* @internal 테스트용으로 export
|
|
29
|
+
*/
|
|
30
|
+
export declare function loadIgnorePatterns(cwd: string): Promise<string[]>;
|
|
31
|
+
/**
|
|
32
|
+
* ESLint를 실행하고 결과를 반환한다.
|
|
33
|
+
*
|
|
34
|
+
* - `eslint.config.ts/js`에서 globalIgnores 패턴을 추출하여 glob 필터링에 적용
|
|
35
|
+
* - consola를 사용하여 진행 상황 표시
|
|
36
|
+
* - 캐시 활성화 (`.cache/eslint.cache`에 저장, 설정 변경 시 자동 무효화)
|
|
37
|
+
* - stdout 출력이나 process.exitCode 설정 없음 (호출자가 결정)
|
|
38
|
+
*
|
|
39
|
+
* @param options - 린트 실행 옵션
|
|
40
|
+
* @returns 린트 결과 (성공 여부, 에러/경고 수, 포매터 출력)
|
|
41
|
+
*/
|
|
42
|
+
export declare function executeLint(options: LintOptions): Promise<LintResult>;
|
|
43
|
+
//# sourceMappingURL=lint-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-core.d.ts","sourceRoot":"","sources":["../../src/utils/lint-core.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,sBAAsB;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB;AA0BD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuCvE;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAkF3E"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { ESLint } from "eslint";
|
|
2
|
+
import { createJiti } from "jiti";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { fsx, pathx } from "@simplysm/core-node";
|
|
5
|
+
import { env, SdError } from "@simplysm/core-common";
|
|
6
|
+
import { consola } from "consola";
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region Utilities
|
|
9
|
+
/** ESLint 설정 파일 검색 순서 */
|
|
10
|
+
const ESLINT_CONFIG_FILES = [
|
|
11
|
+
"eslint.config.ts",
|
|
12
|
+
"eslint.config.mts",
|
|
13
|
+
"eslint.config.js",
|
|
14
|
+
"eslint.config.mjs",
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* ESLint 설정 객체가 ignores 속성만 가지고 있는지 확인하는 타입 가드
|
|
18
|
+
*/
|
|
19
|
+
function isGlobalIgnoresConfig(item) {
|
|
20
|
+
if (item == null || typeof item !== "object")
|
|
21
|
+
return false;
|
|
22
|
+
if (!("ignores" in item))
|
|
23
|
+
return false;
|
|
24
|
+
if ("files" in item)
|
|
25
|
+
return false; // files가 있으면 globalIgnores가 아님
|
|
26
|
+
const ignores = item.ignores;
|
|
27
|
+
if (!Array.isArray(ignores))
|
|
28
|
+
return false;
|
|
29
|
+
return ignores.every((i) => typeof i === "string");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* eslint.config.ts/js에서 globalIgnores 패턴을 추출한다.
|
|
33
|
+
* ignores만 있고 files가 없는 설정 객체가 globalIgnores이다.
|
|
34
|
+
* @internal 테스트용으로 export
|
|
35
|
+
*/
|
|
36
|
+
export async function loadIgnorePatterns(cwd) {
|
|
37
|
+
let configPath;
|
|
38
|
+
for (const f of ESLINT_CONFIG_FILES) {
|
|
39
|
+
const p = path.join(cwd, f);
|
|
40
|
+
if (await fsx.exists(p)) {
|
|
41
|
+
configPath = p;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (configPath == null) {
|
|
46
|
+
throw new SdError(`ESLint 설정 파일을 찾을 수 없습니다 (cwd: ${cwd}): ${ESLINT_CONFIG_FILES.join(", ")}`);
|
|
47
|
+
}
|
|
48
|
+
const jiti = createJiti(import.meta.url);
|
|
49
|
+
const configModule = await jiti.import(configPath);
|
|
50
|
+
let configs;
|
|
51
|
+
if (Array.isArray(configModule)) {
|
|
52
|
+
configs = configModule;
|
|
53
|
+
}
|
|
54
|
+
else if (configModule != null &&
|
|
55
|
+
typeof configModule === "object" &&
|
|
56
|
+
"default" in configModule) {
|
|
57
|
+
configs = configModule.default;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
throw new SdError(`ESLint 설정 파일의 형식이 올바르지 않습니다: ${configPath}`);
|
|
61
|
+
}
|
|
62
|
+
if (!Array.isArray(configs)) {
|
|
63
|
+
throw new SdError(`ESLint 설정이 배열이 아닙니다: ${configPath}`);
|
|
64
|
+
}
|
|
65
|
+
return configs.filter(isGlobalIgnoresConfig).flatMap((item) => item.ignores);
|
|
66
|
+
}
|
|
67
|
+
//#endregion
|
|
68
|
+
//#region Main
|
|
69
|
+
/**
|
|
70
|
+
* ESLint를 실행하고 결과를 반환한다.
|
|
71
|
+
*
|
|
72
|
+
* - `eslint.config.ts/js`에서 globalIgnores 패턴을 추출하여 glob 필터링에 적용
|
|
73
|
+
* - consola를 사용하여 진행 상황 표시
|
|
74
|
+
* - 캐시 활성화 (`.cache/eslint.cache`에 저장, 설정 변경 시 자동 무효화)
|
|
75
|
+
* - stdout 출력이나 process.exitCode 설정 없음 (호출자가 결정)
|
|
76
|
+
*
|
|
77
|
+
* @param options - 린트 실행 옵션
|
|
78
|
+
* @returns 린트 결과 (성공 여부, 에러/경고 수, 포매터 출력)
|
|
79
|
+
*/
|
|
80
|
+
export async function executeLint(options) {
|
|
81
|
+
const { targets, fix, timing } = options;
|
|
82
|
+
const cwd = process.cwd();
|
|
83
|
+
const logger = consola.withTag("sd:cli:lint");
|
|
84
|
+
logger.debug("린트 시작", { targets, fix, timing });
|
|
85
|
+
// TIMING 환경변수 설정
|
|
86
|
+
if (timing) {
|
|
87
|
+
env("TIMING", "1");
|
|
88
|
+
}
|
|
89
|
+
// ESLint 설정 로드
|
|
90
|
+
logger.start("ESLint 설정 로딩 중");
|
|
91
|
+
const ignorePatterns = await loadIgnorePatterns(cwd);
|
|
92
|
+
logger.debug("무시 패턴 로드 완료", { ignorePatternCount: ignorePatterns.length });
|
|
93
|
+
logger.success(`ESLint 설정 로드 완료 (${ignorePatterns.length}개 무시 패턴)`);
|
|
94
|
+
// 린트 대상 파일 수집
|
|
95
|
+
logger.start("린트 대상 파일 수집 중");
|
|
96
|
+
let files = await fsx.glob("**/*.{ts,js,mjs,cjs}", {
|
|
97
|
+
cwd,
|
|
98
|
+
ignore: ignorePatterns,
|
|
99
|
+
nodir: true,
|
|
100
|
+
absolute: true,
|
|
101
|
+
});
|
|
102
|
+
files = pathx.filterByTargets(files, targets, cwd);
|
|
103
|
+
logger.debug("파일 수집 완료", { fileCount: files.length });
|
|
104
|
+
logger.success(`린트 대상 파일 수집 완료 (${files.length}개 파일)`);
|
|
105
|
+
// 린트 실행
|
|
106
|
+
let eslint;
|
|
107
|
+
let eslintResults;
|
|
108
|
+
if (files.length > 0) {
|
|
109
|
+
logger.start(`린트 실행 중... (${files.length}개 파일)`);
|
|
110
|
+
eslint = new ESLint({
|
|
111
|
+
cwd,
|
|
112
|
+
fix,
|
|
113
|
+
cache: true,
|
|
114
|
+
cacheLocation: path.join(cwd, ".cache", "eslint.cache"),
|
|
115
|
+
});
|
|
116
|
+
eslintResults = await eslint.lintFiles(files);
|
|
117
|
+
logger.success("린트 실행 완료");
|
|
118
|
+
// 자동 수정 적용
|
|
119
|
+
if (fix) {
|
|
120
|
+
logger.debug("자동 수정 적용 중...");
|
|
121
|
+
await ESLint.outputFixes(eslintResults);
|
|
122
|
+
logger.debug("자동 수정 적용 완료");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// 파일이 없거나 린트가 실행되지 않은 경우 성공 결과 반환
|
|
126
|
+
if (files.length === 0 || eslintResults == null || eslint == null) {
|
|
127
|
+
logger.info("린트할 파일 없음");
|
|
128
|
+
return { success: true, errorCount: 0, warningCount: 0, formattedOutput: "" };
|
|
129
|
+
}
|
|
130
|
+
// 결과 집계
|
|
131
|
+
let errorCount = eslintResults.sum((r) => r.errorCount);
|
|
132
|
+
let warningCount = eslintResults.sum((r) => r.warningCount);
|
|
133
|
+
if (errorCount > 0) {
|
|
134
|
+
logger.error("린트 에러 발생", { errorCount, warningCount });
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
logger.info("린트 완료", { errorCount, warningCount });
|
|
138
|
+
}
|
|
139
|
+
// 포매터 출력 수집
|
|
140
|
+
let formattedOutput = "";
|
|
141
|
+
const formatter = await eslint.loadFormatter("stylish");
|
|
142
|
+
const resultText = await formatter.format(eslintResults);
|
|
143
|
+
if (resultText) {
|
|
144
|
+
formattedOutput += resultText;
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
success: errorCount === 0,
|
|
148
|
+
errorCount,
|
|
149
|
+
warningCount,
|
|
150
|
+
formattedOutput,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//#endregion
|
|
154
|
+
//# sourceMappingURL=lint-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-core.js","sourceRoot":"","sources":["../../src/utils/lint-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint-utils.d.ts","sourceRoot":"","sources":["../../src/utils/lint-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"lint-utils.d.ts","sourceRoot":"","sources":["../../src/utils/lint-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG3D;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAQ/E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ServerBuildInfo } from "../workers/server-build.worker";
|
|
2
|
+
/**
|
|
3
|
+
* 세 가지 소스에서 외부 모듈을 수집하고 병합한다.
|
|
4
|
+
* collectAllDependencyExternals를 통한 단일 패스 의존성 트리 순회를 사용한다.
|
|
5
|
+
*/
|
|
6
|
+
export declare function collectAllExternals(pkgDir: string, manualExternals?: string[]): string[];
|
|
7
|
+
/**
|
|
8
|
+
* pnpm-lock.yaml의 packages 섹션을 파싱하여 name→version 맵을 생성한다.
|
|
9
|
+
* Lockfile v9 형식: `packages:` 섹션의 `'name@version':` 키를 파싱한다.
|
|
10
|
+
* YAML 파서 의존성을 피하기 위해 단순 라인 기반 파싱을 사용한다.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseLockfileVersions(cwd: string): Map<string, string>;
|
|
13
|
+
/**
|
|
14
|
+
* pnpm-lock.yaml에서 주어진 모든 패키지의 잠긴 버전을 확인한다.
|
|
15
|
+
* lockfile에서 패키지를 찾을 수 없으면 에러를 던진다.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveLockedVersions(cwd: string, pkgNames: string[]): Record<string, string>;
|
|
18
|
+
/**
|
|
19
|
+
* 프로덕션 배포용 파일을 생성한다
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateProductionFiles(info: ServerBuildInfo, externals: string[]): void;
|
|
22
|
+
//# sourceMappingURL=server-production-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-production-files.d.ts","sourceRoot":"","sources":["../../src/utils/server-production-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAStE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAMxF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCtE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc7F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,eAAe,EACrB,SAAS,EAAE,MAAM,EAAE,GAClB,IAAI,CAgGN"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import { cpx } from "@simplysm/core-node";
|
|
4
|
+
import { consola } from "consola";
|
|
5
|
+
import { collectAllDependencyExternals } from "./esbuild-config.js";
|
|
6
|
+
const logger = consola.withTag("sd:cli:server-production-files");
|
|
7
|
+
/**
|
|
8
|
+
* 세 가지 소스에서 외부 모듈을 수집하고 병합한다.
|
|
9
|
+
* collectAllDependencyExternals를 통한 단일 패스 의존성 트리 순회를 사용한다.
|
|
10
|
+
*/
|
|
11
|
+
export function collectAllExternals(pkgDir, manualExternals) {
|
|
12
|
+
logger.debug("의존성 트리 스캔 중...");
|
|
13
|
+
const { optionalPeerDeps, nativeModules } = collectAllDependencyExternals(pkgDir);
|
|
14
|
+
const manual = manualExternals ?? [];
|
|
15
|
+
return [...new Set([...optionalPeerDeps, ...nativeModules, ...manual])];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* pnpm-lock.yaml의 packages 섹션을 파싱하여 name→version 맵을 생성한다.
|
|
19
|
+
* Lockfile v9 형식: `packages:` 섹션의 `'name@version':` 키를 파싱한다.
|
|
20
|
+
* YAML 파서 의존성을 피하기 위해 단순 라인 기반 파싱을 사용한다.
|
|
21
|
+
*/
|
|
22
|
+
export function parseLockfileVersions(cwd) {
|
|
23
|
+
const lockfilePath = path.join(cwd, "pnpm-lock.yaml");
|
|
24
|
+
if (!fs.existsSync(lockfilePath)) {
|
|
25
|
+
throw new Error(`pnpm-lock.yaml not found in ${cwd}. Run "pnpm install" first.`);
|
|
26
|
+
}
|
|
27
|
+
const content = fs.readFileSync(lockfilePath, "utf-8");
|
|
28
|
+
const map = new Map();
|
|
29
|
+
// "packages:" 섹션을 찾고 "'@scope/name@1.2.3':" 또는 "'name@1.2.3':" 형태의 항목을 파싱
|
|
30
|
+
const lines = content.split("\n");
|
|
31
|
+
let inPackages = false;
|
|
32
|
+
for (const line of lines) {
|
|
33
|
+
if (line === "packages:") {
|
|
34
|
+
inPackages = true;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (inPackages && line.length > 0 && !line.startsWith(" ") && !line.startsWith("'")) {
|
|
38
|
+
break; // 다음 최상위 섹션
|
|
39
|
+
}
|
|
40
|
+
if (!inPackages)
|
|
41
|
+
continue;
|
|
42
|
+
// "'@scope/name@version':" 또는 "'name@version':" 매칭
|
|
43
|
+
const match = /^\s{2}'(.+)@(\d[^']*)':\s*$/.exec(line);
|
|
44
|
+
if (match != null) {
|
|
45
|
+
const name = match[1];
|
|
46
|
+
const version = match[2];
|
|
47
|
+
// 첫 번째 항목 유지 (lockfile은 각 버전을 한 번만 기록)
|
|
48
|
+
if (!map.has(name)) {
|
|
49
|
+
map.set(name, version);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return map;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* pnpm-lock.yaml에서 주어진 모든 패키지의 잠긴 버전을 확인한다.
|
|
57
|
+
* lockfile에서 패키지를 찾을 수 없으면 에러를 던진다.
|
|
58
|
+
*/
|
|
59
|
+
export function resolveLockedVersions(cwd, pkgNames) {
|
|
60
|
+
const versionMap = parseLockfileVersions(cwd);
|
|
61
|
+
const result = {};
|
|
62
|
+
for (const name of pkgNames) {
|
|
63
|
+
const version = versionMap.get(name);
|
|
64
|
+
if (version == null) {
|
|
65
|
+
throw new Error(`External dependency "${name}" not found in pnpm-lock.yaml. ` +
|
|
66
|
+
`Run "pnpm install" and try again.`);
|
|
67
|
+
}
|
|
68
|
+
result[name] = version;
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 프로덕션 배포용 파일을 생성한다
|
|
74
|
+
*/
|
|
75
|
+
export function generateProductionFiles(info, externals) {
|
|
76
|
+
const distDir = path.join(info.pkgDir, "dist");
|
|
77
|
+
const pkgJson = JSON.parse(fs.readFileSync(path.join(info.pkgDir, "package.json"), "utf-8"));
|
|
78
|
+
// dist/package.json
|
|
79
|
+
const distPkgJson = {
|
|
80
|
+
name: pkgJson.name,
|
|
81
|
+
version: pkgJson.version,
|
|
82
|
+
type: pkgJson.type,
|
|
83
|
+
};
|
|
84
|
+
if (externals.length > 0) {
|
|
85
|
+
distPkgJson["dependencies"] = resolveLockedVersions(info.cwd, externals);
|
|
86
|
+
}
|
|
87
|
+
if (info.packageManager === "volta") {
|
|
88
|
+
const nodeVersion = cpx.spawnSync("node", ["-v"]).stdout.trim();
|
|
89
|
+
distPkgJson["volta"] = { node: nodeVersion };
|
|
90
|
+
}
|
|
91
|
+
fs.writeFileSync(path.join(distDir, "package.json"), JSON.stringify(distPkgJson, undefined, 2));
|
|
92
|
+
// dist/mise.toml
|
|
93
|
+
if (info.packageManager === "mise") {
|
|
94
|
+
const rootMiseTomlPath = path.join(info.cwd, "mise.toml");
|
|
95
|
+
let nodeVersion = "20";
|
|
96
|
+
if (fs.existsSync(rootMiseTomlPath)) {
|
|
97
|
+
const miseContent = fs.readFileSync(rootMiseTomlPath, "utf-8");
|
|
98
|
+
const match = /node\s*=\s*"([^"]+)"/.exec(miseContent);
|
|
99
|
+
if (match != null) {
|
|
100
|
+
nodeVersion = match[1];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
fs.writeFileSync(path.join(distDir, "mise.toml"), `[tools]\nnode = "${nodeVersion}"\n`);
|
|
104
|
+
}
|
|
105
|
+
// dist/openssl.cnf
|
|
106
|
+
fs.writeFileSync(path.join(distDir, "openssl.cnf"), [
|
|
107
|
+
"nodejs_conf = openssl_init",
|
|
108
|
+
"",
|
|
109
|
+
"[openssl_init]",
|
|
110
|
+
"providers = provider_sect",
|
|
111
|
+
"ssl_conf = ssl_sect",
|
|
112
|
+
"",
|
|
113
|
+
"[provider_sect]",
|
|
114
|
+
"default = default_sect",
|
|
115
|
+
"legacy = legacy_sect",
|
|
116
|
+
"",
|
|
117
|
+
"[default_sect]",
|
|
118
|
+
"activate = 1",
|
|
119
|
+
"",
|
|
120
|
+
"[legacy_sect]",
|
|
121
|
+
"activate = 1",
|
|
122
|
+
"",
|
|
123
|
+
"[ssl_sect]",
|
|
124
|
+
"system_default = system_default_sect",
|
|
125
|
+
"",
|
|
126
|
+
"[system_default_sect]",
|
|
127
|
+
"Options = UnsafeLegacyRenegotiation",
|
|
128
|
+
].join("\n"));
|
|
129
|
+
// dist/pm2.config.cjs
|
|
130
|
+
if (info.pm2 != null) {
|
|
131
|
+
const pm2Name = info.pm2.name ?? pkgJson.name.replace(/@/g, "").replace(/[/\\]/g, "-");
|
|
132
|
+
const ignoreWatch = JSON.stringify([
|
|
133
|
+
"node_modules",
|
|
134
|
+
"www",
|
|
135
|
+
...(info.pm2.ignoreWatchPaths ?? []),
|
|
136
|
+
]);
|
|
137
|
+
const envObj = {
|
|
138
|
+
NODE_ENV: "production",
|
|
139
|
+
TZ: "Asia/Seoul",
|
|
140
|
+
...(info.env ?? {}),
|
|
141
|
+
};
|
|
142
|
+
const envStr = JSON.stringify(envObj, undefined, 4);
|
|
143
|
+
const useInterpreter = info.packageManager !== "volta";
|
|
144
|
+
const pm2Config = [
|
|
145
|
+
...(useInterpreter ? [`const cp = require("child_process");`, ``] : []),
|
|
146
|
+
`module.exports = {`,
|
|
147
|
+
` name: ${JSON.stringify(pm2Name)},`,
|
|
148
|
+
` script: "main.js",`,
|
|
149
|
+
` watch: true,`,
|
|
150
|
+
` watch_delay: 2000,`,
|
|
151
|
+
` ignore_watch: ${ignoreWatch},`,
|
|
152
|
+
...(useInterpreter ? [` interpreter: cp.execSync("mise which node").toString().trim(),`] : []),
|
|
153
|
+
` interpreter_args: "--openssl-config=openssl.cnf",`,
|
|
154
|
+
` env: ${envStr.replace(/\n/g, "\n ")},`,
|
|
155
|
+
` arrayProcess: "concat",`,
|
|
156
|
+
` useDelTargetNull: true,`,
|
|
157
|
+
`};`,
|
|
158
|
+
].join("\n");
|
|
159
|
+
fs.writeFileSync(path.join(distDir, "pm2.config.cjs"), pm2Config);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=server-production-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-production-files.js","sourceRoot":"","sources":["../../src/utils/server-production-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.worker.d.ts","sourceRoot":"","sources":["../../src/workers/lint.worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"lint.worker.d.ts","sourceRoot":"","sources":["../../src/workers/lint.worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIpF;;;GAGG;AACH,iBAAe,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAE7D;;;;;;;;AAED,wBAAsC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.worker.js","sourceRoot":"","sources":["../../src/workers/lint.worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAqC,MAAM,
|
|
1
|
+
{"version":3,"file":"lint.worker.js","sourceRoot":"","sources":["../../src/workers/lint.worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAqC,MAAM,oBAAoB,CAAC;AAEpF,gBAAgB;AAEhB;;;GAGG;AACH,KAAK,UAAU,IAAI,CAAC,OAAoB;IACtC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,eAAe,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAEtC,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-build.worker.d.ts","sourceRoot":"","sources":["../../src/workers/server-build.worker.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAkBxE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,2CAA2C;IAC3C,GAAG,CAAC,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;IACF,iDAAiD;IACjD,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,oBAAoB,EAAE,CAAA;KAAE,CAAC;IACzG,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACpE,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,KAAK,EAAE,wBAAwB,CAAC;IAChC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"server-build.worker.d.ts","sourceRoot":"","sources":["../../src/workers/server-build.worker.ts"],"names":[],"mappings":"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"}
|