@simplysm/sd-cli 10.0.37 → 10.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/SdLinter.js.map +1 -1
  2. package/dist/SdTsIncrementalBuilder.d.ts +17 -4
  3. package/dist/SdTsIncrementalBuilder.js +18 -32
  4. package/dist/SdTsIncrementalBuilder.js.map +1 -1
  5. package/dist/build-cluster.js +98 -30
  6. package/dist/build-cluster.js.map +1 -1
  7. package/dist/builders/SdCliClientBuilder.d.ts +6 -2
  8. package/dist/builders/SdCliClientBuilder.js +107 -114
  9. package/dist/builders/SdCliClientBuilder.js.map +1 -1
  10. package/dist/builders/SdCliServerBuilder.d.ts +2 -1
  11. package/dist/builders/SdCliServerBuilder.js +38 -12
  12. package/dist/builders/SdCliServerBuilder.js.map +1 -1
  13. package/dist/builders/SdCliTsLibBuilder.d.ts +5 -2
  14. package/dist/builders/SdCliTsLibBuilder.js +64 -10
  15. package/dist/builders/SdCliTsLibBuilder.js.map +1 -1
  16. package/dist/commons.d.ts +28 -2
  17. package/dist/entry/SdCliElectron.d.ts +7 -0
  18. package/dist/entry/SdCliElectron.js +42 -0
  19. package/dist/entry/SdCliElectron.js.map +1 -0
  20. package/dist/entry/SdCliLocalUpdate.d.ts +12 -0
  21. package/dist/entry/SdCliLocalUpdate.js +94 -0
  22. package/dist/entry/SdCliLocalUpdate.js.map +1 -0
  23. package/dist/entry/SdCliProject.d.ts +3 -3
  24. package/dist/entry/SdCliProject.js +92 -31
  25. package/dist/entry/SdCliProject.js.map +1 -1
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.js +2 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/sd-cli.d.ts +1 -1
  30. package/dist/sd-cli.js +74 -13
  31. package/dist/sd-cli.js.map +1 -1
  32. package/dist/utils/SdCliBuildResultUtil.js +1 -1
  33. package/dist/utils/SdCliBuildResultUtil.js.map +1 -1
  34. package/dist/utils/SdCliViteElectronMainPlugin.d.ts +6 -0
  35. package/dist/utils/SdCliViteElectronMainPlugin.js +81 -0
  36. package/dist/utils/SdCliViteElectronMainPlugin.js.map +1 -0
  37. package/dist/utils/SdCliViteExternalPlugin.d.ts +7 -0
  38. package/dist/utils/SdCliViteExternalPlugin.js +98 -0
  39. package/dist/utils/SdCliViteExternalPlugin.js.map +1 -0
  40. package/dist/utils/SdCliViteLoggerPlugin.d.ts +6 -0
  41. package/dist/utils/SdCliViteLoggerPlugin.js +24 -0
  42. package/dist/utils/SdCliViteLoggerPlugin.js.map +1 -0
  43. package/dist/utils/SdCliViteNodeGlobalPlugin.d.ts +2 -0
  44. package/dist/utils/SdCliViteNodeGlobalPlugin.js +29 -0
  45. package/dist/utils/SdCliViteNodeGlobalPlugin.js.map +1 -0
  46. package/dist/utils/SdCliViteReactSwcPlugin.d.ts +2 -0
  47. package/dist/utils/SdCliViteReactSwcPlugin.js +141 -0
  48. package/dist/utils/SdCliViteReactSwcPlugin.js.map +1 -0
  49. package/dist/utils/SdCliViteWatchWithResolutionsPlugin.d.ts +2 -0
  50. package/dist/utils/SdCliViteWatchWithResolutionsPlugin.js +26 -0
  51. package/dist/utils/SdCliViteWatchWithResolutionsPlugin.js.map +1 -0
  52. package/dist/utils/getElectronReactExternals.d.ts +1 -0
  53. package/dist/utils/getElectronReactExternals.js +17 -0
  54. package/dist/utils/getElectronReactExternals.js.map +1 -0
  55. package/dist/utils/sdCliTsDefineTransformer.d.ts +4 -0
  56. package/dist/utils/sdCliTsDefineTransformer.js +26 -0
  57. package/dist/utils/sdCliTsDefineTransformer.js.map +1 -0
  58. package/package.json +26 -12
  59. package/src/SdLinter.ts +2 -2
  60. package/src/SdTsIncrementalBuilder.ts +116 -105
  61. package/src/build-cluster.ts +173 -111
  62. package/src/builders/SdCliClientBuilder.ts +226 -221
  63. package/src/builders/SdCliServerBuilder.ts +311 -275
  64. package/src/builders/SdCliTsLibBuilder.ts +160 -89
  65. package/src/commons.ts +66 -34
  66. package/src/entry/SdCliElectron.ts +55 -0
  67. package/src/entry/SdCliLocalUpdate.ts +125 -0
  68. package/src/entry/SdCliProject.ts +457 -394
  69. package/src/index.ts +1 -0
  70. package/src/sd-cli.ts +185 -122
  71. package/src/utils/SdCliBuildResultUtil.ts +1 -2
  72. package/src/utils/SdCliViteElectronMainPlugin.ts +86 -0
  73. package/src/utils/SdCliViteExternalPlugin.ts +112 -0
  74. package/src/utils/SdCliViteLoggerPlugin.ts +29 -0
  75. package/src/utils/SdCliViteNodeGlobalPlugin.ts +31 -0
  76. package/src/utils/SdCliViteReactSwcPlugin.ts +154 -0
  77. package/src/utils/SdCliViteWatchWithResolutionsPlugin.ts +29 -0
  78. package/src/utils/getElectronReactExternals.ts +19 -0
  79. package/src/utils/sdCliTsDefineTransformer.ts +31 -0
  80. package/.eslintrc.cjs +0 -18
  81. package/dist/utils/SdCliConfigUtil.d.ts +0 -7
  82. package/dist/utils/SdCliConfigUtil.js +0 -69
  83. package/dist/utils/SdCliConfigUtil.js.map +0 -1
  84. package/src/utils/SdCliConfigUtil.ts +0 -94
@@ -1,13 +1,19 @@
1
1
  import { FsUtil, Logger, SdFsWatcher } from "@simplysm/sd-core-node";
2
2
  import path from "path";
3
3
  import { EventEmitter } from "events";
4
- import { FunctionQueue } from "@simplysm/sd-core-common";
4
+ import { FunctionQueue, Uuid } from "@simplysm/sd-core-common";
5
5
  import { SdTsIncrementalBuilder } from "../SdTsIncrementalBuilder";
6
6
  import { SdLinter } from "../SdLinter";
7
+ import { pathToFileURL } from "url";
8
+ import less from "less";
9
+ import ts from "typescript";
10
+ import transformKeys from "ts-transformer-keys/transformer";
7
11
  export class SdCliTsLibBuilder extends EventEmitter {
8
- constructor(_pkgPath) {
12
+ constructor(_pkgPath, _pkgConf, _withLint) {
9
13
  super();
10
14
  this._pkgPath = _pkgPath;
15
+ this._pkgConf = _pkgConf;
16
+ this._withLint = _withLint;
11
17
  this._logger = Logger.get(["simplysm", "sd-cli", "SdCliTsLibBuilder"]);
12
18
  }
13
19
  on(event, listener) {
@@ -16,33 +22,54 @@ export class SdCliTsLibBuilder extends EventEmitter {
16
22
  }
17
23
  async buildAsync() {
18
24
  this._debug("빌드 준비...");
19
- const sdTsProgram = await SdTsIncrementalBuilder.createAsync(this._pkgPath, true, false);
25
+ const sdTsProgram = await SdTsIncrementalBuilder.createAsync(this._pkgPath, (opt) => ({
26
+ emitJs: true,
27
+ transforms: opt.jsx === ts.JsxEmit.ReactJSX ? [{ fn: transformKeys, args: undefined }] : undefined
28
+ }));
20
29
  this._debug("dist 초기화...");
21
30
  await FsUtil.removeAsync(path.resolve(this._pkgPath, "dist"));
22
31
  this._debug("BUILD...");
23
32
  const buildResult = await sdTsProgram.buildAsync();
24
33
  this._debug("LINT...");
25
- const lintResults = await SdLinter.lintAsync(buildResult.affectedFilePaths, sdTsProgram.builderProgram.getProgram());
34
+ const lintResults = !this._withLint ? [] : await SdLinter.lintAsync(buildResult.affectedFilePaths, sdTsProgram.builderProgram.getProgram());
35
+ let styleResult;
36
+ if (this._pkgConf.style !== undefined) {
37
+ this._debug("STYLE...");
38
+ styleResult = await this._genStyleAsync();
39
+ }
40
+ this._debug("COPY...");
41
+ await FsUtil.copyAsync(path.resolve(this._pkgPath, "src/assets"), path.resolve(this._pkgPath, "dist/assets"));
26
42
  this._debug(`빌드 완료`);
27
43
  return {
28
44
  affectedFilePaths: buildResult.affectedFilePaths,
29
- buildResults: [...buildResult.results, ...lintResults]
45
+ buildResults: [...buildResult.results, ...lintResults, ...styleResult ? [styleResult] : []]
30
46
  };
31
47
  }
32
48
  async watchAsync() {
33
49
  this._debug("빌드 준비...");
34
- const sdTsProgram = await SdTsIncrementalBuilder.createAsync(this._pkgPath, true, true);
50
+ const sdTsProgram = await SdTsIncrementalBuilder.createAsync(this._pkgPath, (opt) => ({
51
+ emitJs: true,
52
+ compilerOptions: opt.jsx === ts.JsxEmit.ReactJSX ? { jsx: ts.JsxEmit.ReactJSXDev } : undefined,
53
+ transforms: opt.jsx === ts.JsxEmit.ReactJSX ? [{ fn: transformKeys, args: undefined },] : undefined
54
+ }));
35
55
  this._debug("dist 초기화...");
36
56
  await FsUtil.removeAsync(path.resolve(this._pkgPath, "dist"));
37
57
  this.emit("change");
38
58
  this._debug("BUILD...");
39
59
  const buildResult = await sdTsProgram.buildAsync();
40
60
  this._debug("LINT...");
41
- const lintResults = await SdLinter.lintAsync(buildResult.affectedFilePaths, sdTsProgram.builderProgram.getProgram());
61
+ const lintResults = !this._withLint ? [] : await SdLinter.lintAsync(buildResult.affectedFilePaths, sdTsProgram.builderProgram.getProgram());
62
+ let styleResult;
63
+ if (this._pkgConf.style !== undefined) {
64
+ this._debug("STYLE...");
65
+ styleResult = await this._genStyleAsync();
66
+ }
67
+ this._debug("COPY...");
68
+ await FsUtil.copyAsync(path.resolve(this._pkgPath, "src/assets"), path.resolve(this._pkgPath, "dist/assets"));
42
69
  this._debug(`빌드 완료`);
43
70
  this.emit("complete", {
44
71
  affectedFilePaths: buildResult.affectedFilePaths,
45
- buildResults: [...buildResult.results, ...lintResults]
72
+ buildResults: [...buildResult.results, ...lintResults, ...styleResult ? [styleResult] : []]
46
73
  });
47
74
  this._debug("WATCH...");
48
75
  const fnQ = new FunctionQueue();
@@ -59,11 +86,18 @@ export class SdCliTsLibBuilder extends EventEmitter {
59
86
  this._debug(`BUILD...`);
60
87
  const watchBuildResult = await sdTsProgram.buildAsync();
61
88
  this._debug(`LINT...`);
62
- const watchLintResults = await SdLinter.lintAsync(watchBuildResult.affectedFilePaths, sdTsProgram.builderProgram.getProgram());
89
+ const watchLintResults = !this._withLint ? [] : await SdLinter.lintAsync(watchBuildResult.affectedFilePaths, sdTsProgram.builderProgram.getProgram());
90
+ let watchStyleResult;
91
+ if (this._pkgConf.style !== undefined && watchBuildResult.affectedFilePaths.some((item) => item.endsWith(this._pkgConf.style))) {
92
+ this._debug("STYLE...");
93
+ watchStyleResult = await this._genStyleAsync();
94
+ }
95
+ this._debug("COPY...");
96
+ await FsUtil.copyAsync(path.resolve(this._pkgPath, "src/assets"), path.resolve(this._pkgPath, "dist/assets"));
63
97
  this._debug(`빌드 완료`);
64
98
  this.emit("complete", {
65
99
  affectedFilePaths: watchBuildResult.affectedFilePaths,
66
- buildResults: [...watchBuildResult.results, ...watchLintResults]
100
+ buildResults: [...watchBuildResult.results, ...watchLintResults, ...watchStyleResult ? [watchStyleResult] : []]
67
101
  });
68
102
  });
69
103
  });
@@ -71,5 +105,25 @@ export class SdCliTsLibBuilder extends EventEmitter {
71
105
  _debug(msg) {
72
106
  this._logger.debug(`[${path.basename(this._pkgPath)}] ${msg}`);
73
107
  }
108
+ async _genStyleAsync() {
109
+ const srcFilePath = path.resolve(this._pkgPath, "dist", this._pkgConf.style + ".js");
110
+ try {
111
+ const styleImport = await import(pathToFileURL(srcFilePath).href + "?token=" + Uuid.new().toString());
112
+ const styleText = styleImport.default.join("");
113
+ const styleRendered = await less.render(styleText);
114
+ await FsUtil.writeFileAsync(path.resolve(this._pkgPath, "style.css"), styleRendered.css);
115
+ }
116
+ catch (err) {
117
+ return {
118
+ code: undefined,
119
+ message: err.message,
120
+ severity: "error",
121
+ char: undefined,
122
+ line: undefined,
123
+ filePath: srcFilePath
124
+ };
125
+ }
126
+ return;
127
+ }
74
128
  }
75
129
  //# sourceMappingURL=SdCliTsLibBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SdCliTsLibBuilder.js","sourceRoot":"","sources":["../../src/builders/SdCliTsLibBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SdCliTsLibBuilder.js","sourceRoot":"","sources":["../../src/builders/SdCliTsLibBuilder.ts"],"names":[],"mappings":"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"}
package/dist/commons.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export interface INpmConfig {
2
2
  name: string;
3
+ description?: string;
3
4
  version: string;
4
5
  workspaces?: string[];
5
6
  dependencies?: Record<string, string>;
@@ -15,6 +16,8 @@ export interface ISdCliBuildClusterReqMessage {
15
16
  cmd: "watch" | "build";
16
17
  pkgPath: string;
17
18
  pkgConf: TSdCliPackageConfig;
19
+ builderKey?: "web" | "electron";
20
+ withLint: boolean;
18
21
  }
19
22
  export interface ISdCliBuildClusterResMessage {
20
23
  req: ISdCliBuildClusterReqMessage;
@@ -38,18 +41,41 @@ export interface ISdCliConfig {
38
41
  packages: Record<string, TSdCliPackageConfig | undefined>;
39
42
  localUpdates?: Record<string, string>;
40
43
  }
44
+ export type TSdCliConfigFn = (isDev: boolean, opts?: string[]) => ISdCliConfig;
41
45
  export type TSdCliPackageConfig = ISdCliLibPackageConfig | ISdCliServerPackageConfig | ISdCliClientPackageConfig;
42
46
  export interface ISdCliLibPackageConfig {
43
47
  type: "library";
48
+ style?: string;
44
49
  publish?: "npm";
45
50
  }
46
51
  export interface ISdCliServerPackageConfig {
47
52
  type: "server";
48
53
  externals?: string[];
49
- publish?: any;
54
+ publish?: ISdCliLocalDirectoryPublishConfig;
55
+ configs?: Record<string, any>;
50
56
  }
51
57
  export interface ISdCliClientPackageConfig {
52
58
  type: "client";
53
59
  server?: string;
54
- publish?: any;
60
+ publish?: ISdCliLocalDirectoryPublishConfig;
61
+ env?: Record<string, string>;
62
+ configs?: Record<string, any>;
63
+ builder?: {
64
+ web?: ISdCliClientBuilderWebConfig;
65
+ electron?: ISdCliClientBuilderElectronConfig;
66
+ };
67
+ }
68
+ export interface ISdCliLocalDirectoryPublishConfig {
69
+ type: "local-directory";
70
+ path: string;
71
+ }
72
+ export interface ISdCliClientBuilderElectronConfig {
73
+ appId: string;
74
+ installerIcon?: string;
75
+ postInstallScript?: string;
76
+ devServerPort?: number;
77
+ reinstallDependencies?: string[];
78
+ }
79
+ export interface ISdCliClientBuilderWebConfig {
80
+ devServerPort?: number;
55
81
  }
@@ -0,0 +1,7 @@
1
+ export declare class SdCliElectron {
2
+ static runAsync(opt: {
3
+ confFileRelPath: string;
4
+ optNames: string[];
5
+ pkgName: string;
6
+ }): Promise<void>;
7
+ }
@@ -0,0 +1,42 @@
1
+ import { FsUtil, Logger, SdProcess } from "@simplysm/sd-core-node";
2
+ import { pathToFileURL } from "url";
3
+ import path from "path";
4
+ export class SdCliElectron {
5
+ static async runAsync(opt) {
6
+ const logger = Logger.get(["simplysm", "sd-cli", "SdCliElectron", "runAsync"]);
7
+ const pkgPath = path.resolve(process.cwd(), `packages/${opt.pkgName}`);
8
+ const electronPath = path.resolve(pkgPath, ".cache/dev/electron/src");
9
+ logger.log("설정 가져오기...");
10
+ const projConf = (await import(pathToFileURL(path.resolve(process.cwd(), opt.confFileRelPath)).href)).default(true, opt.optNames);
11
+ const pkgConf = projConf.packages[opt.pkgName];
12
+ if (pkgConf?.type !== "client" || pkgConf.builder?.electron === undefined) {
13
+ throw new Error();
14
+ }
15
+ logger.log("package.json 파일 쓰기...");
16
+ const npmConfig = (await FsUtil.readJsonAsync(path.resolve(pkgPath, `package.json`)));
17
+ const externalPkgNames = pkgConf.builder.electron.reinstallDependencies ?? [];
18
+ await FsUtil.writeJsonAsync(path.resolve(electronPath, `package.json`), {
19
+ name: npmConfig.name,
20
+ version: npmConfig.version,
21
+ description: npmConfig.description,
22
+ main: "electron-main.js",
23
+ ...pkgConf.builder.electron.postInstallScript !== undefined ? {
24
+ scripts: {
25
+ "postinstall": pkgConf.builder.electron.postInstallScript
26
+ },
27
+ } : {},
28
+ dependencies: externalPkgNames.toObject((item) => item, (item) => npmConfig.dependencies[item])
29
+ });
30
+ logger.log("npm install...");
31
+ await SdProcess.spawnAsync(`npm install`, { cwd: electronPath }, true);
32
+ for (const externalPkgName of externalPkgNames) {
33
+ if (FsUtil.exists(path.resolve(electronPath, "node_modules", externalPkgName, "binding.gyp"))) {
34
+ logger.log(`electron rebuild (${externalPkgName})...`);
35
+ await SdProcess.spawnAsync(`electron-rebuild -m ./node_modules/${externalPkgName}`, { cwd: electronPath }, true);
36
+ }
37
+ }
38
+ logger.log("electron...");
39
+ await SdProcess.spawnAsync(`electron .`, { cwd: electronPath }, true);
40
+ }
41
+ }
42
+ //# sourceMappingURL=SdCliElectron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdCliElectron.js","sourceRoot":"","sources":["../../src/entry/SdCliElectron.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare class SdCliLocalUpdate {
2
+ static runAsync(opt: {
3
+ confFileRelPath: string;
4
+ optNames: string[];
5
+ }): Promise<void>;
6
+ static watchAsync(opt: {
7
+ confFileRelPath: string;
8
+ optNames: string[];
9
+ }): Promise<void>;
10
+ private static _getUpdatePathInfosAsync;
11
+ private static _getWatchPathsAsync;
12
+ }
@@ -0,0 +1,94 @@
1
+ import { FsUtil, Logger, PathUtil, SdFsWatcher } from "@simplysm/sd-core-node";
2
+ import path from "path";
3
+ import { pathToFileURL } from "url";
4
+ export class SdCliLocalUpdate {
5
+ static async runAsync(opt) {
6
+ const logger = Logger.get(["simplysm", "sd-cli", "SdCliLocalUpdate", "runAsync"]);
7
+ logger.debug("프로젝트 설정 가져오기...");
8
+ const projConf = (await import(pathToFileURL(path.resolve(process.cwd(), opt.confFileRelPath)).href)).default(true, opt.optNames);
9
+ if (!projConf.localUpdates)
10
+ return;
11
+ logger.debug("로컬 업데이트 구성...");
12
+ const updatePathInfos = await this._getUpdatePathInfosAsync(projConf.localUpdates);
13
+ logger.log("로컬 라이브러리 업데이트...");
14
+ for (const updatePathInfo of updatePathInfos) {
15
+ if (!FsUtil.exists(updatePathInfo.source)) {
16
+ logger.warn(`소스경로를 찾을 수 없어 무시됩니다(${updatePathInfo.source})`);
17
+ return;
18
+ }
19
+ // 소스경로에서 대상경로로 파일 복사
20
+ await FsUtil.copyAsync(updatePathInfo.source, updatePathInfo.target, (src) => {
21
+ return !src.includes("node_modules") && !src.endsWith("package.json");
22
+ });
23
+ }
24
+ logger.info("로컬 라이브러리 업데이트 완료");
25
+ }
26
+ static async watchAsync(opt) {
27
+ const logger = Logger.get(["simplysm", "sd-cli", "SdCliLocalUpdate", "watchAsync"]);
28
+ logger.debug("프로젝트 설정 가져오기...");
29
+ const projConf = (await import(pathToFileURL(path.resolve(process.cwd(), opt.confFileRelPath)).href)).default(true, opt.optNames);
30
+ if (!projConf.localUpdates)
31
+ return;
32
+ logger.debug("로컬 업데이트 구성...");
33
+ const updatePathInfos = await this._getUpdatePathInfosAsync(projConf.localUpdates);
34
+ const watchPaths = (await updatePathInfos.mapManyAsync(async (item) => await this._getWatchPathsAsync(item.source))).distinct();
35
+ const watcher = SdFsWatcher.watch(watchPaths);
36
+ watcher.onChange({ delay: 1000 }, async (changedInfos) => {
37
+ const changeFilePaths = changedInfos.filter((item) => ["add", "change", "unlink"].includes(item.event)).map((item) => item.path);
38
+ if (changeFilePaths.length === 0)
39
+ return;
40
+ logger.log("로컬 라이브러리 변경감지...");
41
+ for (const changedFilePath of changeFilePaths) {
42
+ if (!FsUtil.exists(changedFilePath))
43
+ continue;
44
+ for (const updatePathInfo of updatePathInfos) {
45
+ if (!PathUtil.isChildPath(changedFilePath, updatePathInfo.source))
46
+ continue;
47
+ const sourceRelPath = path.relative(updatePathInfo.source, changedFilePath);
48
+ const targetFilePath = path.resolve(updatePathInfo.target, sourceRelPath);
49
+ logger.debug(`변경파일감지(복사): ${changedFilePath} => ${targetFilePath}`);
50
+ await FsUtil.copyAsync(changedFilePath, targetFilePath);
51
+ }
52
+ }
53
+ const watchWatchPaths = (await updatePathInfos.mapManyAsync(async (item) => await this._getWatchPathsAsync(item.source))).distinct();
54
+ watcher.add(watchWatchPaths);
55
+ logger.info("로컬 라이브러리 복사 완료");
56
+ });
57
+ }
58
+ static async _getUpdatePathInfosAsync(record) {
59
+ const result = [];
60
+ for (const pkgGlobPath of Object.keys(record)) {
61
+ // "node_modules'에서 로컬업데이트 설정에 맞는 패키지를 "glob"하여 대상 패키지경로 목록 가져오기
62
+ const targetPaths = [
63
+ ...await FsUtil.globAsync(path.resolve(process.cwd(), "node_modules", pkgGlobPath)),
64
+ ...await FsUtil.globAsync(path.resolve(process.cwd(), "packages", "*", "node_modules", pkgGlobPath))
65
+ ];
66
+ result.push(...targetPaths
67
+ .map((targetPath) => {
68
+ // 대상의 명칭 추출
69
+ const regexpText = pkgGlobPath.replace(/[\\/.*]/g, (item) => (item === "/" ? "[\\\\\\/]"
70
+ : item === "." ? "\\."
71
+ : item === "*" ? "(.*)"
72
+ : item));
73
+ const targetNameMatch = new RegExp(regexpText).exec(targetPath);
74
+ if (!targetNameMatch || typeof targetNameMatch[1] === "undefined")
75
+ return undefined;
76
+ const targetName = targetNameMatch[1];
77
+ // 가져올 소스 경로 추출
78
+ const sourcePath = path.resolve(record[pkgGlobPath].replace(/\*/g, targetName));
79
+ return { source: sourcePath, target: targetPath };
80
+ })
81
+ .filterExists());
82
+ }
83
+ return result;
84
+ }
85
+ static async _getWatchPathsAsync(sourcePath) {
86
+ return await FsUtil.globAsync(path.resolve(sourcePath, "**"), {
87
+ ignore: [
88
+ "**/node_modules/**",
89
+ "**/package.json"
90
+ ]
91
+ });
92
+ }
93
+ }
94
+ //# sourceMappingURL=SdCliLocalUpdate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdCliLocalUpdate.js","sourceRoot":"","sources":["../../src/entry/SdCliLocalUpdate.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,22 @@
1
1
  export declare class SdCliProject {
2
2
  static watchAsync(opt: {
3
- rootPath: string;
4
3
  confFileRelPath: string;
5
4
  optNames: string[];
6
5
  pkgNames: string[];
6
+ withLint: boolean;
7
7
  }): Promise<void>;
8
8
  static buildAsync(opt: {
9
- rootPath: string;
10
9
  confFileRelPath: string;
11
10
  optNames: string[];
12
11
  pkgNames: string[];
12
+ withLint: boolean;
13
13
  }): Promise<void>;
14
14
  static publishAsync(opt: {
15
- rootPath: string;
16
15
  noBuild: boolean;
17
16
  confFileRelPath: string;
18
17
  optNames: string[];
19
18
  pkgNames: string[];
19
+ withLint: boolean;
20
20
  }): Promise<void>;
21
21
  private static _publishPkgAsync;
22
22
  private static _waitSecMessageAsync;