@simplysm/sd-cli 14.0.41 → 14.0.43
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/angular-compiler.d.ts +0 -35
- package/dist/angular/angular-compiler.d.ts.map +1 -1
- package/dist/angular/angular-compiler.js +0 -374
- package/dist/angular/angular-compiler.js.map +1 -1
- package/dist/angular/hmr-candidates.d.ts +13 -0
- package/dist/angular/hmr-candidates.d.ts.map +1 -0
- package/dist/angular/hmr-candidates.js +230 -0
- package/dist/angular/hmr-candidates.js.map +1 -0
- package/dist/angular/ngtsc-build-core.d.ts +29 -34
- package/dist/angular/ngtsc-build-core.d.ts.map +1 -1
- package/dist/angular/ngtsc-build-core.js +90 -51
- package/dist/angular/ngtsc-build-core.js.map +1 -1
- package/dist/angular/vite-angular-plugin.d.ts +1 -1
- package/dist/angular/vite-angular-plugin.d.ts.map +1 -1
- package/dist/angular/vite-angular-plugin.js +63 -56
- package/dist/angular/vite-angular-plugin.js.map +1 -1
- package/dist/angular/web-worker-transformer.d.ts +9 -0
- package/dist/angular/web-worker-transformer.d.ts.map +1 -0
- package/dist/angular/web-worker-transformer.js +73 -0
- package/dist/angular/web-worker-transformer.js.map +1 -0
- package/dist/capacitor/capacitor.d.ts.map +1 -1
- package/dist/capacitor/capacitor.js +6 -4
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/check.d.ts +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +15 -65
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/publish/deployment-phase.d.ts.map +1 -1
- package/dist/commands/publish/deployment-phase.js +13 -5
- package/dist/commands/publish/deployment-phase.js.map +1 -1
- package/dist/commands/publish/npm-publisher.js +1 -1
- package/dist/commands/publish/npm-publisher.js.map +1 -1
- package/dist/commands/publish/publish-command.js +1 -1
- package/dist/commands/publish/publish-command.js.map +1 -1
- package/dist/commands/publish/version-upgrade.js +1 -1
- package/dist/commands/publish/version-upgrade.js.map +1 -1
- package/dist/commands/replace-deps.d.ts.map +1 -1
- package/dist/commands/replace-deps.js +2 -1
- package/dist/commands/replace-deps.js.map +1 -1
- package/dist/deps/replace-deps/collect-deps.d.ts.map +1 -1
- package/dist/deps/replace-deps/collect-deps.js +5 -2
- package/dist/deps/replace-deps/collect-deps.js.map +1 -1
- package/dist/deps/replace-deps/replace-deps.d.ts +21 -3
- package/dist/deps/replace-deps/replace-deps.d.ts.map +1 -1
- package/dist/deps/replace-deps/replace-deps.js +107 -62
- package/dist/deps/replace-deps/replace-deps.js.map +1 -1
- package/dist/electron/electron.js +7 -7
- package/dist/electron/electron.js.map +1 -1
- package/dist/engines/BaseEngine.d.ts.map +1 -1
- package/dist/engines/BaseEngine.js +2 -5
- package/dist/engines/BaseEngine.js.map +1 -1
- package/dist/engines/EsbuildClientEngine.d.ts.map +1 -1
- package/dist/engines/EsbuildClientEngine.js +16 -9
- package/dist/engines/EsbuildClientEngine.js.map +1 -1
- package/dist/engines/NgtscEngine.d.ts +4 -4
- package/dist/engines/NgtscEngine.d.ts.map +1 -1
- package/dist/engines/NgtscEngine.js +5 -5
- package/dist/engines/NgtscEngine.js.map +1 -1
- package/dist/engines/TscEngine.d.ts.map +1 -1
- package/dist/engines/TscEngine.js +0 -2
- package/dist/engines/TscEngine.js.map +1 -1
- package/dist/engines/types.d.ts +2 -0
- package/dist/engines/types.d.ts.map +1 -1
- package/dist/esbuild/esbuild-angular-compiler-plugin.d.ts +36 -0
- package/dist/esbuild/esbuild-angular-compiler-plugin.d.ts.map +1 -0
- package/dist/esbuild/esbuild-angular-compiler-plugin.js +464 -0
- package/dist/esbuild/esbuild-angular-compiler-plugin.js.map +1 -0
- package/dist/esbuild/esbuild-client-config.d.ts +8 -2
- package/dist/esbuild/esbuild-client-config.d.ts.map +1 -1
- package/dist/esbuild/esbuild-client-config.js +48 -33
- package/dist/esbuild/esbuild-client-config.js.map +1 -1
- package/dist/esbuild/esbuild-tsc-plugin.d.ts +4 -1
- package/dist/esbuild/esbuild-tsc-plugin.d.ts.map +1 -1
- package/dist/esbuild/esbuild-tsc-plugin.js +27 -23
- package/dist/esbuild/esbuild-tsc-plugin.js.map +1 -1
- package/dist/esbuild/file-reference-tracker.d.ts +24 -0
- package/dist/esbuild/file-reference-tracker.d.ts.map +1 -0
- package/dist/esbuild/file-reference-tracker.js +57 -0
- package/dist/esbuild/file-reference-tracker.js.map +1 -0
- package/dist/esbuild/lmdb-cache-store.d.ts +18 -0
- package/dist/esbuild/lmdb-cache-store.d.ts.map +1 -0
- package/dist/esbuild/lmdb-cache-store.js +41 -0
- package/dist/esbuild/lmdb-cache-store.js.map +1 -0
- package/dist/esbuild/load-result-cache.d.ts +17 -0
- package/dist/esbuild/load-result-cache.d.ts.map +1 -0
- package/dist/esbuild/load-result-cache.js +61 -0
- package/dist/esbuild/load-result-cache.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lint/lint-core.js +7 -7
- package/dist/lint/lint-core.js.map +1 -1
- package/dist/orchestrators/BaseOrchestrator.js +2 -2
- package/dist/orchestrators/BaseOrchestrator.js.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.js +5 -19
- package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
- package/dist/orchestrators/DevOrchestrator.js +5 -5
- package/dist/orchestrators/DevOrchestrator.js.map +1 -1
- package/dist/orchestrators/WatchOrchestrator.js +6 -6
- package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
- package/dist/runtime/ResultCollector.d.ts +1 -0
- package/dist/runtime/ResultCollector.d.ts.map +1 -1
- package/dist/runtime/ResultCollector.js.map +1 -1
- package/dist/runtime/engine-watch-events.d.ts.map +1 -1
- package/dist/runtime/engine-watch-events.js +3 -0
- package/dist/runtime/engine-watch-events.js.map +1 -1
- package/dist/runtime/rebuild-manager.js +1 -1
- package/dist/runtime/rebuild-manager.js.map +1 -1
- package/dist/runtime/worker-utils.js +1 -1
- package/dist/runtime/worker-utils.js.map +1 -1
- package/dist/sd-cli-entry.d.ts.map +1 -1
- package/dist/sd-cli-entry.js +4 -3
- package/dist/sd-cli-entry.js.map +1 -1
- package/dist/sd-cli.js +3 -3
- package/dist/sd-cli.js.map +1 -1
- package/dist/ts-compiler/SdTsCompiler.d.ts +39 -0
- package/dist/ts-compiler/SdTsCompiler.d.ts.map +1 -0
- package/dist/ts-compiler/SdTsCompiler.js +593 -0
- package/dist/ts-compiler/SdTsCompiler.js.map +1 -0
- package/dist/ts-compiler/sd-ts-compiler-options.d.ts +40 -0
- package/dist/ts-compiler/sd-ts-compiler-options.d.ts.map +1 -0
- package/dist/ts-compiler/sd-ts-compiler-options.js +2 -0
- package/dist/ts-compiler/sd-ts-compiler-options.js.map +1 -0
- package/dist/ts-compiler/sd-ts-compiler-result.d.ts +34 -0
- package/dist/ts-compiler/sd-ts-compiler-result.d.ts.map +1 -0
- package/dist/ts-compiler/sd-ts-compiler-result.js +2 -0
- package/dist/ts-compiler/sd-ts-compiler-result.js.map +1 -0
- package/dist/utils/copy-public.d.ts +6 -4
- package/dist/utils/copy-public.d.ts.map +1 -1
- package/dist/utils/copy-public.js +9 -7
- package/dist/utils/copy-public.js.map +1 -1
- package/dist/utils/diagnostic-utils.d.ts +2 -3
- package/dist/utils/diagnostic-utils.d.ts.map +1 -1
- package/dist/utils/diagnostic-utils.js +8 -9
- package/dist/utils/diagnostic-utils.js.map +1 -1
- package/dist/utils/output-utils.d.ts +8 -2
- package/dist/utils/output-utils.d.ts.map +1 -1
- package/dist/utils/output-utils.js +32 -8
- package/dist/utils/output-utils.js.map +1 -1
- package/dist/workers/client.worker.d.ts +1 -1
- package/dist/workers/client.worker.d.ts.map +1 -1
- package/dist/workers/client.worker.js +136 -110
- package/dist/workers/client.worker.js.map +1 -1
- package/dist/workers/library-build.worker.d.ts +0 -2
- package/dist/workers/library-build.worker.d.ts.map +1 -1
- package/dist/workers/library-build.worker.js +147 -70
- package/dist/workers/library-build.worker.js.map +1 -1
- package/dist/workers/server-build.worker.d.ts.map +1 -1
- package/dist/workers/server-build.worker.js +30 -57
- package/dist/workers/server-build.worker.js.map +1 -1
- package/dist/workers/server-esbuild-context.d.ts +7 -0
- package/dist/workers/server-esbuild-context.d.ts.map +1 -1
- package/dist/workers/server-esbuild-context.js +11 -2
- package/dist/workers/server-esbuild-context.js.map +1 -1
- package/package.json +7 -6
- package/src/angular/angular-compiler.ts +0 -502
- package/src/angular/hmr-candidates.ts +295 -0
- package/src/angular/ngtsc-build-core.ts +125 -92
- package/src/angular/vite-angular-plugin.ts +71 -65
- package/src/angular/web-worker-transformer.ts +117 -0
- package/src/capacitor/capacitor.ts +6 -4
- package/src/commands/check.ts +17 -76
- package/src/commands/publish/deployment-phase.ts +11 -7
- package/src/commands/publish/npm-publisher.ts +1 -1
- package/src/commands/publish/publish-command.ts +1 -1
- package/src/commands/publish/version-upgrade.ts +1 -1
- package/src/commands/replace-deps.ts +3 -1
- package/src/deps/replace-deps/collect-deps.ts +4 -2
- package/src/deps/replace-deps/replace-deps.ts +114 -66
- package/src/electron/electron.ts +7 -7
- package/src/engines/BaseEngine.ts +2 -6
- package/src/engines/EsbuildClientEngine.ts +16 -10
- package/src/engines/NgtscEngine.ts +7 -7
- package/src/engines/TscEngine.ts +0 -2
- package/src/engines/types.ts +2 -0
- package/src/esbuild/esbuild-angular-compiler-plugin.ts +647 -0
- package/src/esbuild/esbuild-client-config.ts +57 -41
- package/src/esbuild/esbuild-tsc-plugin.ts +33 -23
- package/src/esbuild/file-reference-tracker.ts +61 -0
- package/src/esbuild/lmdb-cache-store.ts +46 -0
- package/src/esbuild/load-result-cache.ts +85 -0
- package/src/index.ts +5 -0
- package/src/lint/lint-core.ts +7 -7
- package/src/orchestrators/BaseOrchestrator.ts +2 -2
- package/src/orchestrators/BuildOrchestrator.ts +5 -24
- package/src/orchestrators/DevOrchestrator.ts +5 -5
- package/src/orchestrators/WatchOrchestrator.ts +6 -6
- package/src/runtime/ResultCollector.ts +1 -0
- package/src/runtime/engine-watch-events.ts +3 -0
- package/src/runtime/rebuild-manager.ts +1 -1
- package/src/runtime/worker-utils.ts +1 -1
- package/src/sd-cli-entry.ts +5 -3
- package/src/sd-cli.ts +4 -4
- package/src/ts-compiler/SdTsCompiler.ts +815 -0
- package/src/ts-compiler/sd-ts-compiler-options.ts +46 -0
- package/src/ts-compiler/sd-ts-compiler-result.ts +34 -0
- package/src/utils/copy-public.ts +9 -6
- package/src/utils/diagnostic-utils.ts +8 -9
- package/src/utils/output-utils.ts +38 -8
- package/src/workers/client.worker.ts +160 -126
- package/src/workers/library-build.worker.ts +187 -75
- package/src/workers/server-build.worker.ts +31 -61
- package/src/workers/server-esbuild-context.ts +14 -2
- package/tests/angular/fixtures/packages/basic-app/dist/styles.css +3 -0
- package/tests/angular/fixtures/packages/basic-app/scss/styles.scss +5 -0
- package/tests/angular/vite-angular-plugin-sdtscompiler.verify.md +13 -0
- package/tests/angular/web-worker-transformer.spec.ts +154 -0
- package/tests/capacitor/capacitor-build.spec.ts +1 -1
- package/tests/capacitor/capacitor-icon.spec.ts +1 -1
- package/tests/capacitor/capacitor-init.spec.ts +1 -1
- package/tests/commands/check.spec.ts +90 -104
- package/tests/commands/publish.spec.ts +12 -4
- package/tests/commands/slice3-severity-cleanup.verify.md +12 -0
- package/tests/deps/replace-deps/collect-deps.acc.spec.ts +62 -0
- package/tests/deps/replace-deps/collect-deps.spec.ts +49 -0
- package/tests/deps/replace-deps/replace-deps-filter.spec.ts +103 -0
- package/tests/deps/replace-deps/replace-deps-setup.acc.spec.ts +156 -0
- package/tests/electron/electron.spec.ts +4 -1
- package/tests/engines/engine-adapter-isolation.spec.ts +5 -6
- package/tests/engines/engine-duplicate-output-removal.verify.md +10 -0
- package/tests/engines/esbuild-client-engine.acc.spec.ts +79 -0
- package/tests/engines/esbuild-client-engine.spec.ts +73 -3
- package/tests/esbuild/esbuild-angular-compiler-plugin-hmr.verify.md +23 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-onload.verify.md +21 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-onstart-extraction.verify.md +16 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-sdtscompiler.verify.md +15 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-stylesheet.verify.md +31 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-worker.verify.md +31 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin.spec.ts +397 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin.verify.md +21 -0
- package/tests/esbuild/esbuild-tsc-plugin-imports.verify.md +13 -0
- package/tests/esbuild/esbuild-tsc-plugin.acc.spec.ts +56 -111
- package/tests/esbuild/esbuild-tsc-plugin.spec.ts +116 -52
- package/tests/esbuild/file-reference-tracker.spec.ts +99 -0
- package/tests/esbuild/lmdb-cache-store.spec.ts +58 -0
- package/tests/esbuild/load-result-cache.acc.spec.ts +55 -0
- package/tests/esbuild/load-result-cache.spec.ts +133 -0
- package/tests/orchestrators/build-orchestrator.spec.ts +4 -3
- package/tests/orchestrators/dev-orchestrator.spec.ts +5 -5
- package/tests/orchestrators/slice1-stdout-to-consola.verify.md +10 -0
- package/tests/orchestrators/typecheck-orchestrator.spec.ts +1 -1
- package/tests/orchestrators/watch-orchestrator.spec.ts +7 -7
- package/tests/runtime/result-collector.spec.ts +64 -0
- package/tests/sd-cli-entry.spec.ts +3 -4
- package/tests/sd-cli-log-tag.verify.md +11 -0
- package/tests/ts-compiler/SdTsCompiler-affected-files.verify.md +8 -0
- package/tests/ts-compiler/SdTsCompiler-diagnostics.verify.md +12 -0
- package/tests/ts-compiler/SdTsCompiler-emit.verify.md +9 -0
- package/tests/ts-compiler/SdTsCompiler.acc.spec.ts +603 -0
- package/tests/ts-compiler/SdTsCompiler.spec.ts +265 -0
- package/tests/ts-compiler/SdTsCompiler.verify.md +41 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-browser.tsbuildinfo +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-node.tsbuildinfo +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck.tsbuildinfo +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.d.ts +2 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.d.ts.map +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.js +4 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.js.map +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.d.ts +2 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.d.ts.map +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.js +4 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.js.map +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/src/index.ts +3 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/src/util.ts +3 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/tests/sample.test-file.ts +3 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/tsconfig.json +12 -0
- package/tests/ts-compiler/scss-lint-integration.verify.md +14 -0
- package/tests/utils/angular-build.spec.ts +1 -1
- package/tests/utils/copy-public-outdir.verify.md +8 -0
- package/tests/utils/copy-public.acc.spec.ts +52 -0
- package/tests/utils/copy-public.spec.ts +56 -0
- package/tests/utils/diagnostic-utils.spec.ts +24 -15
- package/tests/utils/engine-watch-events.acc.spec.ts +59 -0
- package/tests/utils/engine-watch-events.spec.ts +58 -0
- package/tests/utils/esbuild-client-config-integration.verify.md +9 -0
- package/tests/utils/esbuild-client-config.acc.spec.ts +45 -61
- package/tests/utils/esbuild-client-config.spec.ts +70 -52
- package/tests/utils/ngtsc-build-core-write-emit.spec.ts +12 -12
- package/tests/utils/ngtsc-build-core.spec.ts +1 -44
- package/tests/utils/output-utils.spec.ts +133 -13
- package/tests/utils/replace-deps-watch.acc.spec.ts +7 -1
- package/tests/utils/replace-deps-watch.spec.ts +57 -1
- package/tests/utils/worker-utils.spec.ts +8 -2
- package/tests/workers/client-worker-initial-build-error.verify.md +2 -3
- package/tests/workers/client-worker-initial-build-warnings.verify.md +7 -0
- package/tests/workers/client-worker-refactor.verify.md +22 -0
- package/tests/workers/client-worker-ts-cache-invalidation.verify.md +12 -0
- package/tests/workers/client-worker.acc.spec.ts +6 -3
- package/tests/workers/library-build-lint.spec.ts +40 -45
- package/tests/workers/library-build-worker.spec.ts +294 -40
- package/tests/workers/server-build-lint.spec.ts +59 -45
- package/tests/workers/server-build-worker.spec.ts +63 -24
- package/tests/workers/server-esbuild-context.acc.spec.ts +2 -0
- package/tests/workers/server-esbuild-context.spec.ts +2 -0
- package/tests/workers/server-runtime-worker.spec.ts +1 -1
- package/tests/workers/shared-worker-lifecycle.acc.spec.ts +1 -1
- package/dist/angular/angular-build-pipeline.d.ts +0 -97
- package/dist/angular/angular-build-pipeline.d.ts.map +0 -1
- package/dist/angular/angular-build-pipeline.js +0 -285
- package/dist/angular/angular-build-pipeline.js.map +0 -1
- package/dist/utils/tsc-build.d.ts +0 -51
- package/dist/utils/tsc-build.d.ts.map +0 -1
- package/dist/utils/tsc-build.js +0 -156
- package/dist/utils/tsc-build.js.map +0 -1
- package/dist/workers/ngtsc-build.worker.d.ts +0 -23
- package/dist/workers/ngtsc-build.worker.d.ts.map +0 -1
- package/dist/workers/ngtsc-build.worker.js +0 -267
- package/dist/workers/ngtsc-build.worker.js.map +0 -1
- package/src/angular/angular-build-pipeline.ts +0 -406
- package/src/utils/tsc-build.ts +0 -226
- package/src/workers/ngtsc-build.worker.ts +0 -351
- package/tests/angular/angular-build-pipeline.spec.ts +0 -247
- package/tests/angular/angular-compiler-aot.acc.spec.ts +0 -68
- package/tests/angular/angular-compiler-aot.spec.ts +0 -80
- package/tests/utils/angular-compiler-emit.spec.ts +0 -666
- package/tests/utils/angular-compiler.spec.ts +0 -707
- package/tests/utils/tsc-build.spec.ts +0 -527
- package/tests/workers/ngtsc-build-lint.spec.ts +0 -141
- package/tests/workers/ngtsc-build-worker.spec.ts +0 -199
|
@@ -8,20 +8,42 @@ import type { ReplaceDepEntry } from "./replace-deps-resolve";
|
|
|
8
8
|
import { resolveAllReplaceDepEntries } from "./replace-deps-resolve";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* npm publish 시 files 필드와 무관하게 항상 포함되는 파일 패턴 (대소문자 무시)
|
|
12
12
|
*/
|
|
13
|
-
const
|
|
13
|
+
export const NPM_DEFAULT_FILE_PATTERN = /^(readme|license|licence|changelog|history)/i;
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
* 소스 패키지의 package.json에서 files 필드를 읽어 반환한다.
|
|
17
|
+
* files 필드가 없으면 undefined를 반환한다.
|
|
18
|
+
*/
|
|
19
|
+
export async function loadFilesField(sourcePath: string): Promise<string[] | undefined> {
|
|
20
|
+
const pkgJsonPath = pathx.posix(path.join(sourcePath, "package.json"));
|
|
21
|
+
const pkgJson = JSON.parse(await fs.promises.readFile(pkgJsonPath, "utf-8"));
|
|
22
|
+
return pkgJson.files as string[] | undefined;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* files 필드 기반 화이트리스트 복사 필터를 생성한다.
|
|
27
|
+
* 소스 루트 기준 상대경로의 첫 번째 세그먼트로 판단한다.
|
|
28
|
+
* - files에 포함 → 허용
|
|
29
|
+
* - npm 기본 파일 패턴 매칭 → 허용
|
|
30
|
+
* - package.json → 제외
|
|
31
|
+
* - 그 외 → 제외
|
|
21
32
|
*/
|
|
22
|
-
function
|
|
23
|
-
|
|
24
|
-
|
|
33
|
+
export function createCopyFilter(
|
|
34
|
+
sourcePath: string,
|
|
35
|
+
allowedNames: Set<string>,
|
|
36
|
+
): (itemPath: string) => boolean {
|
|
37
|
+
return (itemPath: string) => {
|
|
38
|
+
const relativePath = path.relative(sourcePath, itemPath);
|
|
39
|
+
const firstSegment = relativePath.split(path.sep)[0];
|
|
40
|
+
|
|
41
|
+
if (firstSegment === "package.json") return false;
|
|
42
|
+
if (allowedNames.has(firstSegment)) return true;
|
|
43
|
+
if (NPM_DEFAULT_FILE_PATTERN.test(firstSegment)) return true;
|
|
44
|
+
|
|
45
|
+
return false;
|
|
46
|
+
};
|
|
25
47
|
}
|
|
26
48
|
|
|
27
49
|
/**
|
|
@@ -37,7 +59,7 @@ export interface WatchReplaceDepResult {
|
|
|
37
59
|
*
|
|
38
60
|
* 1. pnpm-workspace.yaml 파싱 → 워크스페이스 패키지 경로
|
|
39
61
|
* 2. [루트, ...워크스페이스 패키지] node_modules에서 매칭 패키지 탐색
|
|
40
|
-
* 3.
|
|
62
|
+
* 3. 소스 package.json의 files 필드 + npm 기본 파일만 대상 경로에 복사 (package.json 제외)
|
|
41
63
|
*
|
|
42
64
|
* @param projectRoot - 프로젝트 루트 경로
|
|
43
65
|
* @param replaceDeps - sd.config.ts의 replaceDeps 설정
|
|
@@ -52,22 +74,31 @@ export async function setupReplaceDeps(
|
|
|
52
74
|
logger.start("replace-deps 설정 중...");
|
|
53
75
|
|
|
54
76
|
const entries = await resolveAllReplaceDepEntries(projectRoot, replaceDeps, logger);
|
|
77
|
+
const copiedEntries: ReplaceDepEntry[] = [];
|
|
55
78
|
|
|
56
|
-
for (const
|
|
79
|
+
for (const entry of entries) {
|
|
57
80
|
try {
|
|
58
|
-
// 소스
|
|
59
|
-
await
|
|
81
|
+
// 소스 패키지의 files 필드를 읽어 화이트리스트 구성
|
|
82
|
+
const files = await loadFilesField(entry.resolvedSourcePath);
|
|
83
|
+
if (files == null) {
|
|
84
|
+
logger.warn(`[${entry.targetName}] package.json에 files 필드가 없어 건너뜀`);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const filter = createCopyFilter(entry.resolvedSourcePath, new Set(files));
|
|
89
|
+
await fsx.copy(entry.resolvedSourcePath, entry.actualTargetPath, filter);
|
|
60
90
|
|
|
91
|
+
copiedEntries.push(entry);
|
|
61
92
|
setupCount += 1;
|
|
62
93
|
} catch (err) {
|
|
63
|
-
logger.error(`[${targetName}] 복사 실패: ${err instanceof Error ? err.message : err}`);
|
|
94
|
+
logger.error(`[${entry.targetName}] 복사 실패: ${err instanceof Error ? err.message : err}`);
|
|
64
95
|
}
|
|
65
96
|
}
|
|
66
97
|
|
|
67
98
|
logger.success(`replace-deps 설정 완료 (${setupCount}개 의존성 교체)`);
|
|
68
99
|
|
|
69
100
|
// 교체된 패키지의 postinstall 스크립트 실행
|
|
70
|
-
for (const { targetName, resolvedSourcePath, actualTargetPath } of
|
|
101
|
+
for (const { targetName, resolvedSourcePath, actualTargetPath } of copiedEntries) {
|
|
71
102
|
const sourcePkgJsonPath = pathx.posix(path.join(resolvedSourcePath, "package.json"));
|
|
72
103
|
try {
|
|
73
104
|
const pkgJson = JSON.parse(await fs.promises.readFile(sourcePkgJsonPath, "utf-8"));
|
|
@@ -91,8 +122,8 @@ export async function setupReplaceDeps(
|
|
|
91
122
|
*
|
|
92
123
|
* 1. pnpm-workspace.yaml 파싱 → 워크스페이스 패키지 경로
|
|
93
124
|
* 2. [루트, ...워크스페이스 패키지] node_modules에서 매칭 패키지 탐색
|
|
94
|
-
* 3. FsWatcher로
|
|
95
|
-
* 4. 변경사항을 대상 경로에 복사
|
|
125
|
+
* 3. FsWatcher로 files 항목 경로만 감시 (300ms 딜레이)
|
|
126
|
+
* 4. 변경사항을 대상 경로에 복사
|
|
96
127
|
*
|
|
97
128
|
* @param projectRoot - 프로젝트 루트 경로
|
|
98
129
|
* @param replaceDeps - sd.config.ts의 replaceDeps 설정
|
|
@@ -118,66 +149,83 @@ export async function watchReplaceDeps(
|
|
|
118
149
|
if (watchedSources.has(entry.resolvedSourcePath)) continue;
|
|
119
150
|
watchedSources.add(entry.resolvedSourcePath);
|
|
120
151
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
152
|
+
try {
|
|
153
|
+
// 소스 패키지의 files 필드를 읽어 감시 대상 경로 구성
|
|
154
|
+
const files = await loadFilesField(entry.resolvedSourcePath);
|
|
155
|
+
if (files == null) {
|
|
156
|
+
logger.warn(`[${entry.targetName}] package.json에 files 필드가 없어 감시 건너뜀`);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// files 항목 경로 + npm 기본 파일 경로
|
|
161
|
+
const watchPaths = files.map((f) =>
|
|
162
|
+
pathx.posix(path.join(entry.resolvedSourcePath, f)),
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
// 소스 루트에서 npm 기본 파일 패턴에 매칭되는 파일 추가
|
|
166
|
+
try {
|
|
167
|
+
const rootEntries = await fs.promises.readdir(entry.resolvedSourcePath);
|
|
168
|
+
for (const name of rootEntries) {
|
|
169
|
+
if (NPM_DEFAULT_FILE_PATTERN.test(name)) {
|
|
170
|
+
watchPaths.push(pathx.posix(path.join(entry.resolvedSourcePath, name)));
|
|
171
|
+
}
|
|
137
172
|
}
|
|
173
|
+
} catch {
|
|
174
|
+
// readdir 실패 시 npm 기본 파일 감시 생략
|
|
175
|
+
}
|
|
138
176
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
177
|
+
const watcher = await FsWatcher.watch(watchPaths, {
|
|
178
|
+
followSymlinks: false,
|
|
179
|
+
});
|
|
180
|
+
watcher.onChange({ delay: 300 }, async (changeInfos) => {
|
|
181
|
+
for (const { path: changedPath } of changeInfos) {
|
|
182
|
+
// 이 소스 경로를 사용하는 모든 항목에 대해 복사
|
|
183
|
+
for (const e of entries) {
|
|
184
|
+
if (e.resolvedSourcePath !== entry.resolvedSourcePath) continue;
|
|
142
185
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
186
|
+
// 소스로부터의 상대 경로 계산
|
|
187
|
+
const relativePath = pathx.posix(path.relative(e.resolvedSourcePath, changedPath));
|
|
188
|
+
const destPath = pathx.posix(path.join(e.actualTargetPath, relativePath));
|
|
146
189
|
|
|
147
|
-
try {
|
|
148
|
-
// 소스 존재 여부 확인
|
|
149
|
-
let sourceExists = false;
|
|
150
190
|
try {
|
|
151
|
-
|
|
152
|
-
sourceExists =
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
191
|
+
// 소스 존재 여부 확인
|
|
192
|
+
let sourceExists = false;
|
|
193
|
+
try {
|
|
194
|
+
await fs.promises.access(changedPath);
|
|
195
|
+
sourceExists = true;
|
|
196
|
+
} catch {
|
|
197
|
+
// 소스가 삭제됨
|
|
198
|
+
}
|
|
156
199
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
200
|
+
if (sourceExists) {
|
|
201
|
+
// 소스가 디렉토리인지 파일인지 확인
|
|
202
|
+
const stat = await fs.promises.stat(changedPath);
|
|
203
|
+
if (stat.isDirectory()) {
|
|
204
|
+
await fsx.mkdir(destPath);
|
|
205
|
+
} else {
|
|
206
|
+
await fsx.mkdir(pathx.posix(path.dirname(destPath)));
|
|
207
|
+
await fsx.copy(changedPath, destPath);
|
|
208
|
+
}
|
|
162
209
|
} else {
|
|
163
|
-
|
|
164
|
-
await fsx.
|
|
210
|
+
// 소스가 삭제됨 → 대상도 삭제
|
|
211
|
+
await fsx.rm(destPath);
|
|
165
212
|
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
|
|
213
|
+
} catch (err) {
|
|
214
|
+
logger.error(
|
|
215
|
+
`[${e.targetName}] 복사 실패 (${relativePath}): ${err instanceof Error ? err.message : err}`,
|
|
216
|
+
);
|
|
169
217
|
}
|
|
170
|
-
} catch (err) {
|
|
171
|
-
logger.error(
|
|
172
|
-
`[${e.targetName}] 복사 실패 (${relativePath}): ${err instanceof Error ? err.message : err}`,
|
|
173
|
-
);
|
|
174
218
|
}
|
|
175
219
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
});
|
|
220
|
+
options?.onChanged?.();
|
|
221
|
+
});
|
|
179
222
|
|
|
180
|
-
|
|
223
|
+
watchers.push(watcher);
|
|
224
|
+
} catch (err) {
|
|
225
|
+
logger.error(
|
|
226
|
+
`[${entry.targetName}] 감시 설정 실패: ${err instanceof Error ? err.message : err}`,
|
|
227
|
+
);
|
|
228
|
+
}
|
|
181
229
|
}
|
|
182
230
|
|
|
183
231
|
logger.success("replace-deps 워치 준비 완료");
|
package/src/electron/electron.ts
CHANGED
|
@@ -60,7 +60,7 @@ export class Electron {
|
|
|
60
60
|
//#region Public Methods
|
|
61
61
|
|
|
62
62
|
async initialize(): Promise<void> {
|
|
63
|
-
Electron._logger.
|
|
63
|
+
Electron._logger.start("initialize 중...");
|
|
64
64
|
|
|
65
65
|
Electron._logger.debug("package.json 설정 시작");
|
|
66
66
|
await this._setupNpmConf();
|
|
@@ -83,11 +83,11 @@ export class Electron {
|
|
|
83
83
|
await this._exec("pnpm", ["exec", "electron-rebuild"], this._srcPath);
|
|
84
84
|
Electron._logger.debug("electron-rebuild 완료");
|
|
85
85
|
}
|
|
86
|
-
Electron._logger.
|
|
86
|
+
Electron._logger.success("initialize 완료");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
async run(url: string): Promise<void> {
|
|
90
|
-
Electron._logger.
|
|
90
|
+
Electron._logger.start(`run 중... (url: ${url})`);
|
|
91
91
|
|
|
92
92
|
await this.initialize();
|
|
93
93
|
await this._copyPublicAssets();
|
|
@@ -126,7 +126,7 @@ export class Electron {
|
|
|
126
126
|
setup: (build) => {
|
|
127
127
|
build.onEnd(async (result) => {
|
|
128
128
|
if (result.errors.length > 0) {
|
|
129
|
-
Electron._logger.
|
|
129
|
+
Electron._logger.error("번들링 실패. Electron을 재시작하지 않습니다.");
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -181,11 +181,11 @@ export class Electron {
|
|
|
181
181
|
process.once("SIGINT", signalHandler);
|
|
182
182
|
process.once("SIGTERM", signalHandler);
|
|
183
183
|
});
|
|
184
|
-
Electron._logger.
|
|
184
|
+
Electron._logger.success("run 완료");
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
async build(outPath: string): Promise<void> {
|
|
188
|
-
Electron._logger.
|
|
188
|
+
Electron._logger.start("build 중...");
|
|
189
189
|
|
|
190
190
|
await this.initialize();
|
|
191
191
|
|
|
@@ -205,7 +205,7 @@ export class Electron {
|
|
|
205
205
|
await this._copyBuildOutput(outPath);
|
|
206
206
|
Electron._logger.debug("빌드 산출물 복사 완료");
|
|
207
207
|
|
|
208
|
-
Electron._logger.
|
|
208
|
+
Electron._logger.success("build 완료");
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
//#endregion
|
|
@@ -163,14 +163,10 @@ export abstract class BaseEngine<
|
|
|
163
163
|
(data as CommonBuildWorkerEvents["build"]).build,
|
|
164
164
|
});
|
|
165
165
|
|
|
166
|
-
// BaseEngine 전용:
|
|
166
|
+
// BaseEngine 전용: 린트 결과 보고
|
|
167
167
|
this._worker!.on("build", (data) => {
|
|
168
168
|
const event = data;
|
|
169
169
|
|
|
170
|
-
if (event.build.warnings != null && event.build.warnings.length > 0) {
|
|
171
|
-
logger.warn(`${this._pkg.name}: ${event.build.warnings.join(", ")}`);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
170
|
if (event.lint != null) {
|
|
175
171
|
const lintResult: BuildResult = {
|
|
176
172
|
name: this._pkg.name,
|
|
@@ -184,7 +180,7 @@ export abstract class BaseEngine<
|
|
|
184
180
|
});
|
|
185
181
|
|
|
186
182
|
this._callStartWatch(output).catch((err: unknown) => {
|
|
187
|
-
logger.
|
|
183
|
+
logger.debug(`[${this._pkg.name}] startWatch 실패:`, errNs.message(err));
|
|
188
184
|
this._resultCollector?.add({
|
|
189
185
|
name: this._pkg.name,
|
|
190
186
|
target: this._getTarget(),
|
|
@@ -101,20 +101,14 @@ export class EsbuildClientEngine implements BuildEngine {
|
|
|
101
101
|
});
|
|
102
102
|
|
|
103
103
|
// 공통 이벤트 처리 (buildStart/build/error)
|
|
104
|
-
setupWatchEvents(this._worker!, {
|
|
104
|
+
const { resolveInitialBuild } = setupWatchEvents(this._worker!, {
|
|
105
105
|
name: this._pkg.name,
|
|
106
106
|
target: "client",
|
|
107
107
|
resultCollector: this._resultCollector,
|
|
108
108
|
rebuildManager: this._rebuildManager,
|
|
109
109
|
normalizeBuild: (data) => data as NormalizedBuildInfo,
|
|
110
110
|
});
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
// EsbuildClientEngine 전용: error 로깅
|
|
114
|
-
this._worker!.on("error", (data) => {
|
|
115
|
-
const event = data as { message: string };
|
|
116
|
-
logger.error(`${this._pkg.name}: ${event.message}`);
|
|
117
|
-
});
|
|
111
|
+
resolveInitialBuild(); // EsbuildClientEngine은 worker.startWatch() await로 초기 빌드 완료를 감지하므로 즉시 정리
|
|
118
112
|
|
|
119
113
|
const port =
|
|
120
114
|
typeof this._pkg.config.server === "number"
|
|
@@ -132,15 +126,27 @@ export class EsbuildClientEngine implements BuildEngine {
|
|
|
132
126
|
browserSupport: this._pkg.config.browserSupport,
|
|
133
127
|
});
|
|
134
128
|
|
|
129
|
+
const warningsText = result.warnings != null && result.warnings.length > 0
|
|
130
|
+
? result.warnings.join("\n")
|
|
131
|
+
: undefined;
|
|
132
|
+
|
|
135
133
|
if (!result.success) {
|
|
136
|
-
const errorDetail = result.errors?.join("
|
|
137
|
-
logger.error(`[${this._pkg.name}] 초기 빌드 실패: ${errorDetail}`);
|
|
134
|
+
const errorDetail = result.errors?.join("\n") ?? "unknown error";
|
|
138
135
|
this._resultCollector?.add({
|
|
139
136
|
name: this._pkg.name,
|
|
140
137
|
target: "client",
|
|
141
138
|
type: "build",
|
|
142
139
|
status: "error",
|
|
143
140
|
message: errorDetail,
|
|
141
|
+
warnings: warningsText,
|
|
142
|
+
});
|
|
143
|
+
} else if (warningsText != null) {
|
|
144
|
+
this._resultCollector?.add({
|
|
145
|
+
name: this._pkg.name,
|
|
146
|
+
target: "client",
|
|
147
|
+
type: "build",
|
|
148
|
+
status: "success",
|
|
149
|
+
warnings: warningsText,
|
|
144
150
|
});
|
|
145
151
|
}
|
|
146
152
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type * as
|
|
1
|
+
import type * as LibraryBuildWorkerModule from "../workers/library-build.worker";
|
|
2
2
|
import type { ResultCollector } from "../runtime/ResultCollector";
|
|
3
3
|
import type { RebuildManager } from "../runtime/rebuild-manager";
|
|
4
4
|
import type { BuildOutput, BuildPackageInfo, EngineResult } from "./types";
|
|
@@ -24,19 +24,19 @@ export interface NgtscEngineOptions {
|
|
|
24
24
|
/**
|
|
25
25
|
* NgtscProgram 기반 Angular 라이브러리 패키지용 빌드 엔진
|
|
26
26
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
27
|
+
* 통합된 library-build.worker를 사용하며, globalScss: true를 전달하여
|
|
28
|
+
* Angular AOT 컴파일 + SCSS 빌드를 활성화한다.
|
|
29
29
|
*/
|
|
30
30
|
export class NgtscEngine extends BaseEngine<
|
|
31
31
|
BuildPackageInfo,
|
|
32
|
-
typeof
|
|
32
|
+
typeof LibraryBuildWorkerModule & CommonBuildWorkerModule
|
|
33
33
|
> {
|
|
34
34
|
constructor(options: NgtscEngineOptions) {
|
|
35
35
|
super(options);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
protected _getWorkerPath(): string {
|
|
39
|
-
return import.meta.resolve("../workers/
|
|
39
|
+
return import.meta.resolve("../workers/library-build.worker");
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
protected _getTarget(): string {
|
|
@@ -49,7 +49,7 @@ export class NgtscEngine extends BaseEngine<
|
|
|
49
49
|
name: this._pkg.name,
|
|
50
50
|
cwd: this._cwd,
|
|
51
51
|
pkgDir: this._pkg.dir,
|
|
52
|
-
output,
|
|
52
|
+
output: { ...output, globalScss: true },
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
return this._normalizeResult(result);
|
|
@@ -61,7 +61,7 @@ export class NgtscEngine extends BaseEngine<
|
|
|
61
61
|
name: this._pkg.name,
|
|
62
62
|
cwd: this._cwd,
|
|
63
63
|
pkgDir: this._pkg.dir,
|
|
64
|
-
output,
|
|
64
|
+
output: { ...output, globalScss: true },
|
|
65
65
|
replaceDeps: this._replaceDeps,
|
|
66
66
|
});
|
|
67
67
|
}
|
package/src/engines/TscEngine.ts
CHANGED
|
@@ -47,7 +47,6 @@ export class TscEngine extends BaseEngine<
|
|
|
47
47
|
logger.debug(`[${this._pkg.name}] worker.build 호출`);
|
|
48
48
|
const result = await this._worker!.build({
|
|
49
49
|
name: this._pkg.name,
|
|
50
|
-
config: this._pkg.config,
|
|
51
50
|
cwd: this._cwd,
|
|
52
51
|
pkgDir: this._pkg.dir,
|
|
53
52
|
output,
|
|
@@ -60,7 +59,6 @@ export class TscEngine extends BaseEngine<
|
|
|
60
59
|
logger.debug(`[${this._pkg.name}] worker.startWatch 호출`);
|
|
61
60
|
await this._worker!.startWatch({
|
|
62
61
|
name: this._pkg.name,
|
|
63
|
-
config: this._pkg.config,
|
|
64
62
|
cwd: this._cwd,
|
|
65
63
|
pkgDir: this._pkg.dir,
|
|
66
64
|
output,
|