@simplysm/sd-cli 7.0.249 → 7.0.263

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 (102) hide show
  1. package/README.md +48 -0
  2. package/dist/bin/sd-cli.mjs +171 -13
  3. package/dist/build-tool/SdCliElectron.mjs +3 -2
  4. package/dist/builder/SdCliClientBuilder.mjs +11 -7
  5. package/dist/builder/SdCliTsLibBuilder.mjs +18 -12
  6. package/dist/commons.d.ts +6 -1
  7. package/dist/entry-points/SdCliProjectGenerator.d.ts +37 -0
  8. package/dist/entry-points/SdCliProjectGenerator.mjs +288 -0
  9. package/dist/entry-points/SdCliWorkspace.d.ts +6 -6
  10. package/dist/entry-points/SdCliWorkspace.mjs +61 -107
  11. package/dist/entry-points/file/base/fc_package_eslintrc.d.ts +3 -0
  12. package/dist/entry-points/file/base/fc_package_eslintrc.mjs +31 -0
  13. package/dist/entry-points/file/base/fc_package_npmconfig.d.ts +9 -0
  14. package/dist/entry-points/file/base/fc_package_npmconfig.mjs +32 -0
  15. package/dist/entry-points/file/base/fc_package_tsconfig.d.ts +4 -0
  16. package/dist/entry-points/file/base/fc_package_tsconfig.mjs +12 -0
  17. package/dist/entry-points/file/client/fc_package_AppModule.d.ts +1 -0
  18. package/dist/entry-points/file/client/fc_package_AppModule.mjs +37 -0
  19. package/dist/entry-points/file/client/fc_package_AppPage.d.ts +1 -0
  20. package/dist/entry-points/file/client/fc_package_AppPage.mjs +34 -0
  21. package/dist/entry-points/file/client/fc_package_appicons.d.ts +1 -0
  22. package/dist/entry-points/file/client/fc_package_appicons.mjs +6 -0
  23. package/dist/entry-points/file/client/fc_package_client_main.d.ts +1 -0
  24. package/dist/entry-points/file/client/fc_package_client_main.mjs +19 -0
  25. package/dist/entry-points/file/client/fc_package_index.d.ts +3 -0
  26. package/dist/entry-points/file/client/fc_package_index.mjs +88 -0
  27. package/dist/entry-points/file/client/fc_package_manifest.d.ts +5 -0
  28. package/dist/entry-points/file/client/fc_package_manifest.mjs +54 -0
  29. package/dist/entry-points/file/client/fc_package_polyfills.d.ts +1 -0
  30. package/dist/entry-points/file/client/fc_package_polyfills.mjs +11 -0
  31. package/dist/entry-points/file/client/fc_package_styles.d.ts +1 -0
  32. package/dist/entry-points/file/client/fc_package_styles.mjs +7 -0
  33. package/dist/entry-points/file/db/fc_package_DbContext.d.ts +3 -0
  34. package/dist/entry-points/file/db/fc_package_DbContext.mjs +14 -0
  35. package/dist/entry-points/file/db/fc_package_DbModel.d.ts +4 -0
  36. package/dist/entry-points/file/db/fc_package_DbModel.mjs +12 -0
  37. package/dist/entry-points/file/project/fc_project_editor_config.d.ts +1 -0
  38. package/dist/entry-points/file/project/fc_project_editor_config.mjs +22 -0
  39. package/dist/entry-points/file/project/fc_project_eslintrc.d.ts +1 -0
  40. package/dist/entry-points/file/project/fc_project_eslintrc.mjs +30 -0
  41. package/dist/entry-points/file/project/fc_project_gitattributes.d.ts +1 -0
  42. package/dist/entry-points/file/project/fc_project_gitattributes.mjs +6 -0
  43. package/dist/entry-points/file/project/fc_project_gitignore.d.ts +1 -0
  44. package/dist/entry-points/file/project/fc_project_gitignore.mjs +17 -0
  45. package/dist/entry-points/file/project/fc_project_npmconfig.d.ts +7 -0
  46. package/dist/entry-points/file/project/fc_project_npmconfig.mjs +35 -0
  47. package/dist/entry-points/file/project/fc_project_readme.d.ts +3 -0
  48. package/dist/entry-points/file/project/fc_project_readme.mjs +12 -0
  49. package/dist/entry-points/file/project/fc_project_simplysm.d.ts +1 -0
  50. package/dist/entry-points/file/project/fc_project_simplysm.mjs +2 -0
  51. package/dist/entry-points/file/project/fc_project_tsconfig.d.ts +1 -0
  52. package/dist/entry-points/file/project/fc_project_tsconfig.mjs +26 -0
  53. package/dist/entry-points/file/server/fc_package_server_main.d.ts +4 -0
  54. package/dist/entry-points/file/server/fc_package_server_main.mjs +60 -0
  55. package/dist/index.d.ts +23 -0
  56. package/dist/index.mjs +24 -1
  57. package/dist/packages/SdCliPackage.d.ts +1 -0
  58. package/dist/packages/SdCliPackage.mjs +68 -62
  59. package/dist/utils/SdCliBuildResultUtil.mjs +2 -2
  60. package/package.json +10 -8
  61. package/src/bin/sd-cli.ts +198 -12
  62. package/src/build-tool/SdCliElectron.ts +2 -1
  63. package/src/builder/SdCliClientBuilder.ts +13 -7
  64. package/src/builder/SdCliJsLibBuilder.ts +70 -70
  65. package/src/builder/SdCliTsLibBuilder.ts +450 -445
  66. package/src/commons.ts +6 -1
  67. package/src/entry-points/SdCliProjectGenerator.ts +353 -0
  68. package/src/entry-points/SdCliWorkspace.ts +74 -122
  69. package/src/entry-points/file/assets/assets/icons/icon-128x128.png +0 -0
  70. package/src/entry-points/file/assets/assets/icons/icon-144x144.png +0 -0
  71. package/src/entry-points/file/assets/assets/icons/icon-152x152.png +0 -0
  72. package/src/entry-points/file/assets/assets/icons/icon-192x192.png +0 -0
  73. package/src/entry-points/file/assets/assets/icons/icon-384x384.png +0 -0
  74. package/src/entry-points/file/assets/assets/icons/icon-512x512.png +0 -0
  75. package/src/entry-points/file/assets/assets/icons/icon-72x72.png +0 -0
  76. package/src/entry-points/file/assets/assets/icons/icon-96x96.png +0 -0
  77. package/src/entry-points/file/assets/favicon.ico +0 -0
  78. package/src/entry-points/file/base/fc_package_eslintrc.ts +30 -0
  79. package/src/entry-points/file/base/fc_package_npmconfig.ts +43 -0
  80. package/src/entry-points/file/base/fc_package_tsconfig.ts +11 -0
  81. package/src/entry-points/file/client/fc_package_AppModule.ts +36 -0
  82. package/src/entry-points/file/client/fc_package_AppPage.ts +33 -0
  83. package/src/entry-points/file/client/fc_package_appicons.ts +5 -0
  84. package/src/entry-points/file/client/fc_package_client_main.ts +18 -0
  85. package/src/entry-points/file/client/fc_package_index.ts +87 -0
  86. package/src/entry-points/file/client/fc_package_manifest.ts +53 -0
  87. package/src/entry-points/file/client/fc_package_polyfills.ts +10 -0
  88. package/src/entry-points/file/client/fc_package_styles.ts +6 -0
  89. package/src/entry-points/file/db/fc_package_DbContext.ts +14 -0
  90. package/src/entry-points/file/db/fc_package_DbModel.ts +11 -0
  91. package/src/entry-points/file/project/fc_project_editor_config.ts +21 -0
  92. package/src/entry-points/file/project/fc_project_eslintrc.ts +29 -0
  93. package/src/entry-points/file/project/fc_project_gitattributes.ts +5 -0
  94. package/src/entry-points/file/project/fc_project_gitignore.ts +16 -0
  95. package/src/entry-points/file/project/fc_project_npmconfig.ts +34 -0
  96. package/src/entry-points/file/project/fc_project_readme.ts +11 -0
  97. package/src/entry-points/file/project/fc_project_simplysm.ts +1 -0
  98. package/src/entry-points/file/project/fc_project_tsconfig.ts +25 -0
  99. package/src/entry-points/file/server/fc_package_server_main.ts +62 -0
  100. package/src/index.ts +23 -0
  101. package/src/packages/SdCliPackage.ts +75 -58
  102. package/src/utils/SdCliBuildResultUtil.ts +76 -76
@@ -58,72 +58,35 @@ export class SdCliPackage extends EventEmitter {
58
58
  if (isTs) {
59
59
  await this._genBuildTsconfigAsync();
60
60
  }
61
- const workerPath = fileURLToPath(await import.meta.resolve("../worker/build-worker"));
62
- await new Promise((resolve, reject) => {
63
- const worker = cp.fork(workerPath, [
64
- "watch",
65
- this.rootPath,
66
- JsonConvert.stringify(this.config),
67
- this._workspaceRootPath
68
- ], {
69
- stdio: ["pipe", "pipe", "pipe", "ipc"],
70
- env: process.env
71
- });
72
- worker.on("error", (err) => {
73
- reject(err);
74
- });
75
- worker.stdout.pipe(process.stdout);
76
- worker.stderr.pipe(process.stderr);
77
- worker.on("message", (json) => {
78
- const msg = JsonConvert.parse(json);
79
- if (msg.event === "ready") {
80
- resolve();
81
- }
82
- else if (msg.event === "change") {
83
- this.emit("change");
84
- }
85
- else if (msg.event === "complete") {
86
- this.emit("complete", msg.body);
87
- }
88
- else {
89
- throw new NeverEntryError();
90
- }
91
- });
92
- });
61
+ await this._runBuildWorkerAsync("watch", (message) => {
62
+ const msg = JsonConvert.parse(message);
63
+ if (msg.event === "ready") {
64
+ return true;
65
+ }
66
+ else if (msg.event === "change") {
67
+ this.emit("change");
68
+ return undefined;
69
+ }
70
+ else if (msg.event === "complete") {
71
+ this.emit("complete", msg.body);
72
+ return undefined;
73
+ }
74
+ else {
75
+ return new NeverEntryError();
76
+ }
77
+ }, (err) => err);
93
78
  }
94
79
  async buildAsync() {
95
80
  const isTs = FsUtil.exists(path.resolve(this.rootPath, "tsconfig.json"));
96
81
  if (isTs) {
97
82
  await this._genBuildTsconfigAsync();
98
83
  }
99
- const workerPath = fileURLToPath(await import.meta.resolve("../worker/build-worker"));
100
- return await new Promise((resolve, reject) => {
101
- const worker = cp.fork(workerPath, [
102
- "build",
103
- this.rootPath,
104
- JsonConvert.stringify(this.config),
105
- this._workspaceRootPath
106
- ], {
107
- stdio: ["pipe", "pipe", "pipe", "ipc"],
108
- env: process.env
109
- });
110
- worker.on("error", (err) => {
111
- reject(err);
112
- });
113
- worker.stdout.pipe(process.stdout);
114
- worker.stderr.pipe(process.stderr);
115
- let result = [];
116
- worker.on("message", (json) => {
117
- result = JsonConvert.parse(json);
118
- });
119
- worker.on("exit", (code) => {
120
- if (code !== 0) {
121
- reject(new Error(`오류와 함께 닫힘 (${code})`));
122
- return;
123
- }
124
- resolve(result);
125
- });
126
- });
84
+ let result = [];
85
+ await this._runBuildWorkerAsync("build", (message) => {
86
+ result = JsonConvert.parse(message);
87
+ return undefined;
88
+ }, err => err);
89
+ return result;
127
90
  }
128
91
  async publishAsync() {
129
92
  if (this.config.publish !== undefined) {
@@ -138,7 +101,10 @@ export class SdCliPackage extends EventEmitter {
138
101
  }
139
102
  else {
140
103
  if (this.config.publish.type === "github") {
141
- const repoUrl = typeof this._npmConfig.repository === "string" ? this._npmConfig.repository : this._npmConfig.repository.url;
104
+ if (!this._npmConfig.repository) {
105
+ throw new Error("패키지의 package.json에 repository가 설정되지 않아 github로 배포할 수 없습니다.");
106
+ }
107
+ const repoUrl = this._npmConfig.repository.url;
142
108
  const repoOwner = repoUrl.split("/").slice(-2)[0];
143
109
  const repoName = repoUrl.split("/").slice(-2)[1].replace(/\..*/g, "");
144
110
  const github = new SdCliGithubApi(this.config.publish.apiKey, repoOwner, repoName);
@@ -196,5 +162,45 @@ export class SdCliPackage extends EventEmitter {
196
162
  const buildTsconfigFilePath = path.resolve(this.rootPath, "tsconfig-build.json");
197
163
  await FsUtil.writeJsonAsync(buildTsconfigFilePath, buildTsconfig, { space: 2 });
198
164
  }
165
+ async _runBuildWorkerAsync(cmd, success, error) {
166
+ return await new Promise(async (resolve, reject) => {
167
+ const worker = cp.fork(fileURLToPath(await import.meta.resolve("../worker/build-worker")), [
168
+ cmd,
169
+ this.rootPath,
170
+ JsonConvert.stringify(this.config),
171
+ this._workspaceRootPath
172
+ ], {
173
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
174
+ env: process.env
175
+ });
176
+ worker.on("error", (err) => {
177
+ const r = error(err);
178
+ if (r === true) {
179
+ resolve();
180
+ }
181
+ else if (r != null) {
182
+ reject(r);
183
+ }
184
+ });
185
+ worker.stdout.pipe(process.stdout);
186
+ worker.stderr.pipe(process.stderr);
187
+ worker.on("message", (json) => {
188
+ const r = success(json);
189
+ if (r === true) {
190
+ resolve();
191
+ }
192
+ else if (r != null) {
193
+ reject(r);
194
+ }
195
+ });
196
+ worker.on("exit", (code) => {
197
+ if (code !== 0) {
198
+ reject(new Error(`오류와 함께 닫힘 (${code})`));
199
+ return;
200
+ }
201
+ resolve();
202
+ });
203
+ });
204
+ }
199
205
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlQYWNrYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhY2thZ2VzL1NkQ2xpUGFja2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFcEMsTUFBTSxPQUFPLFlBQWEsU0FBUSxZQUFZO0lBc0I1QyxZQUFvQyxrQkFBMEIsRUFDM0IsUUFBZ0IsRUFDaEIsTUFBMkI7UUFDNUQsS0FBSyxFQUFFLENBQUM7UUFIMEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFHNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJ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
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlQYWNrYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhY2thZ2VzL1NkQ2xpUGFja2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFcEMsTUFBTSxPQUFPLFlBQWEsU0FBUSxZQUFZO0lBc0I1QyxZQUFvQyxrQkFBMEIsRUFDM0IsUUFBZ0IsRUFDaEIsTUFBMkI7UUFDNUQsS0FBSyxFQUFFLENBQUM7UUFIMEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFHNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJ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
@@ -37,7 +37,7 @@ export class SdCliBuildResultUtil {
37
37
  }
38
38
  static _convertFromWebpackError(severity, err) {
39
39
  return {
40
- filePath: err.file,
40
+ filePath: err.file ?? err.module?.["request"],
41
41
  line: err.file ? err.loc["start"]?.line : undefined,
42
42
  char: err.file ? err.loc["start"]?.column : undefined,
43
43
  code: err.name,
@@ -60,4 +60,4 @@ export class SdCliBuildResultUtil {
60
60
  return str;
61
61
  }
62
62
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlCdWlsZFJlc3VsdFV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvU2RDbGlCdWlsZFJlc3VsdFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFJeEIsTUFBTSxPQUFPLG9CQUFvQjtJQUN4QixNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBbUI7UUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3RFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzNELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVoQyxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFHMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN6SCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTNELE9BQU87WUFDTCxRQUFRO1lBQ1IsSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osUUFBUTtZQUNSLE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFvQjtRQUN4RCxNQUFNLE9BQU8sR0FBK0IsRUFBRSxDQUFDO1FBRS9DLEtBQUssTUFBTSxRQUFRLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7WUFDakQsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFBRSxTQUFTO1lBRTVILE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsS0FBSyxNQUFNLE9BQU8sSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUM5QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMvRDtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxNQUFNLENBQUMsd0JBQXdCLENBQUMsUUFBNkIsRUFBRSxHQUF5QjtRQUM5RixPQUFPO1lBQ0wsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2xCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNuRCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDckQsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsUUFBUTtZQUNSLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztTQUNyQixDQUFDO0lBQ0osQ0FBQztJQUdNLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBZ0M7UUFDdkQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRTtZQUNqQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDdkI7UUFFRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQ2pDLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztTQUN6RTtRQUNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDN0IsR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO1NBQzNCO1FBQ0QsR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUMsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YifQ==
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlCdWlsZFJlc3VsdFV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvU2RDbGlCdWlsZFJlc3VsdFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFJeEIsTUFBTSxPQUFPLG9CQUFvQjtJQUN4QixNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBbUI7UUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3RFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzNELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVoQyxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFHMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-cli",
3
- "version": "7.0.249",
3
+ "version": "7.0.263",
4
4
  "description": "심플리즘 패키지 - CLI",
5
5
  "author": "김석래",
6
6
  "repository": {
@@ -23,11 +23,11 @@
23
23
  "@babel/parser": "^7.17.0",
24
24
  "@babel/types": "^7.17.0",
25
25
  "@ngtools/webpack": "^13.2.2",
26
- "@simplysm/sd-core-common": "7.0.249",
27
- "@simplysm/sd-core-node": "7.0.249",
28
- "@simplysm/sd-service-common": "7.0.249",
29
- "@simplysm/sd-service-server": "7.0.249",
30
- "@simplysm/sd-storage": "7.0.249",
26
+ "@simplysm/sd-core-common": "7.0.263",
27
+ "@simplysm/sd-core-node": "7.0.263",
28
+ "@simplysm/sd-service-common": "7.0.263",
29
+ "@simplysm/sd-service-server": "7.0.263",
30
+ "@simplysm/sd-storage": "7.0.263",
31
31
  "browserslist": "^4.19.1",
32
32
  "chokidar": "^3.5.3",
33
33
  "connect": "^3.7.0",
@@ -35,7 +35,7 @@
35
35
  "cordova": "^11.0.0",
36
36
  "css-loader": "^6.6.0",
37
37
  "electron": "^18.0.1",
38
- "electron-builder": "^22.14.13",
38
+ "electron-builder": "^23.0.3",
39
39
  "eslint": "^8.7.0",
40
40
  "eslint-webpack-plugin": "^3.1.1",
41
41
  "jsdom": "^19.0.0",
@@ -55,7 +55,9 @@
55
55
  "typescript": "~4.5.5",
56
56
  "webpack": "^5.68.0",
57
57
  "xml2js": "^0.4.23",
58
- "yargs": "^17.3.1"
58
+ "yargs": "^17.3.1",
59
+ "typedoc": "^0.22.15",
60
+ "@compodoc/compodoc": "^1.1.7"
59
61
  },
60
62
  "devDependencies": {
61
63
  "@types/connect": "^3.4.35",
package/src/bin/sd-cli.ts CHANGED
@@ -10,11 +10,11 @@ import { SdCliPrepare } from "../entry-points/SdCliPrepare";
10
10
  import { SdCliFileCrypto } from "../entry-points/SdCliFileCrypto";
11
11
  import { SdCliCordova } from "../build-tool/SdCliCordova";
12
12
  import { SdCliElectron } from "../build-tool/SdCliElectron";
13
+ import { SdCliProjectGenerator } from "../entry-points/SdCliProjectGenerator";
13
14
 
14
15
  Error.stackTraceLimit = Infinity;
15
16
 
16
17
  const argv = yargs(hideBin(process.argv))
17
- .version(false)
18
18
  .help("help", "도움말")
19
19
  .alias("help", "h")
20
20
  .options({
@@ -27,17 +27,17 @@ const argv = yargs(hideBin(process.argv))
27
27
  .command(
28
28
  "prepare",
29
29
  "sd-cli 준비",
30
- (cmd) => cmd.version(false)
30
+ (cmd) => cmd.version(false).hide("help").hide("debug")
31
31
  )
32
32
  .command(
33
33
  "update",
34
34
  "패키지 업데이트 (npm update)",
35
- (cmd) => cmd.version(false)
35
+ (cmd) => cmd.version(false).hide("help").hide("debug")
36
36
  )
37
37
  .command(
38
38
  "local-update",
39
39
  "로컬 라이브러리 업데이트를 수행합니다.",
40
- (cmd) => cmd.version(false)
40
+ (cmd) => cmd.version(false).hide("help").hide("debug")
41
41
  .options({
42
42
  config: {
43
43
  type: "string",
@@ -48,7 +48,7 @@ const argv = yargs(hideBin(process.argv))
48
48
  .command(
49
49
  "watch",
50
50
  "프로젝트의 각 패키지에 대한 변경감지 빌드를 수행합니다.",
51
- (cmd) => cmd.version(false)
51
+ (cmd) => cmd.version(false).hide("help").hide("debug")
52
52
  .options({
53
53
  config: {
54
54
  type: "string",
@@ -93,7 +93,7 @@ const argv = yargs(hideBin(process.argv))
93
93
  })
94
94
  )
95
95
  .command(
96
- "run-cordova <platform> <package> [url]",
96
+ "run-cordova <platform> <package> <url>",
97
97
  "변경감지중인 플랫폼을 코도바 디바이스에 앱 형태로 띄웁니다.",
98
98
  (cmd) => cmd
99
99
  .positional("platform", {
@@ -115,7 +115,7 @@ const argv = yargs(hideBin(process.argv))
115
115
  .command(
116
116
  "build",
117
117
  "프로젝트의 각 패키지에 대한 빌드를 수행합니다.",
118
- (cmd) => cmd.version(false)
118
+ (cmd) => cmd.version(false).hide("help").hide("debug")
119
119
  .options({
120
120
  config: {
121
121
  type: "string",
@@ -136,7 +136,7 @@ const argv = yargs(hideBin(process.argv))
136
136
  .command(
137
137
  "publish",
138
138
  "프로젝트의 각 패키지를 배포합니다.",
139
- (cmd) => cmd.version(false)
139
+ (cmd) => cmd.version(false).hide("help").hide("debug")
140
140
  .options({
141
141
  noBuild: {
142
142
  type: "boolean",
@@ -162,20 +162,160 @@ const argv = yargs(hideBin(process.argv))
162
162
  .command(
163
163
  "enc-file <file>",
164
164
  "파일을 암호화 합니다.",
165
- (cmd) => cmd.version(false)
165
+ (cmd) => cmd.version(false).hide("help").hide("debug")
166
166
  .positional("file", {
167
167
  type: "string",
168
- describe: "암호화할 파일명"
168
+ describe: "암호화할 파일명",
169
+ demandOption: true
169
170
  })
170
171
  )
171
172
  .command(
172
173
  "dec-file <file>",
173
174
  "파일을 복호화 합니다.",
174
- (cmd) => cmd.version(false)
175
+ (cmd) => cmd.version(false).hide("help").hide("debug")
175
176
  .positional("file", {
176
177
  type: "string",
177
- describe: "암호화된 파일명"
178
+ describe: "암호화된 파일명",
179
+ demandOption: true
180
+ })
181
+ )
182
+ .command(
183
+ "init [name] <description> <author> <gitUrl>",
184
+ "프로젝트를 초기화 합니다.",
185
+ (cmd) => cmd.version(false).hide("help").hide("debug")
186
+ .positional("name", {
187
+ type: "string",
188
+ describe: "프로젝트 영문명 (기본값: 최종폴더명)"
189
+ })
190
+ .positional("description", {
191
+ type: "string",
192
+ describe: "프로젝트 설명(=명칭)",
193
+ demandOption: true
194
+ })
195
+ .positional("author", {
196
+ type: "string",
197
+ describe: "작성자",
198
+ demandOption: true
199
+ })
200
+ .positional("gitUrl", {
201
+ type: "string",
202
+ describe: "소스코드 관리를 위한 GIT 레파지토리 URL",
203
+ demandOption: true
178
204
  })
205
+ .example([
206
+ ["$0 init sample 샘플프로젝트 홍길동 https://github.com/my/sample.git"]
207
+ ])
208
+ )
209
+ .command(
210
+ "add",
211
+ "프로젝트에 패키지/기능등을 추가합니다.",
212
+ (cmd) => cmd.version(false).hide("help").hide("debug")
213
+ .command(
214
+ "ts-lib <name> <description>",
215
+ "타입스트립트 라이브러리 패키지를 추가합니다.",
216
+ (cmd1) => cmd1.version(false).hide("help").hide("debug")
217
+ .positional("name", {
218
+ type: "string",
219
+ describe: "패키지명",
220
+ demandOption: true
221
+ })
222
+ .positional("description", {
223
+ type: "string",
224
+ describe: "패키지설명",
225
+ demandOption: true
226
+ })
227
+ .options({
228
+ useDom: {
229
+ type: "boolean",
230
+ describe: "DOM객체(window, document 등) 사용 여부",
231
+ default: false
232
+ }
233
+ })
234
+ .example([
235
+ ["$0 add ts-lib common 공통모듈"],
236
+ ["$0 sd-cli add ts-lib client-common \"클라이언트 공통\" --useDom"]
237
+ ])
238
+ )
239
+ .command(
240
+ "db-lib <name>",
241
+ "DB 라이브러리 패키지를 추가합니다.",
242
+ (cmd1) => cmd1.version(false).hide("help").hide("debug")
243
+ .positional("name", {
244
+ type: "string",
245
+ describe: "패키지명",
246
+ demandOption: true
247
+ })
248
+ .example([
249
+ ["$0 add db-lib main"]
250
+ ])
251
+ )
252
+ .command(
253
+ "db-model <dbName> <category> <name> <description>",
254
+ "DB 패키지에 모델를 추가합니다.",
255
+ (cmd1) => cmd1.version(false).hide("help").hide("debug")
256
+ .positional("dbName", {
257
+ type: "string",
258
+ describe: "DB 패키지 영문명 = 'DbContext'명칭",
259
+ demandOption: true
260
+ })
261
+ .positional("category", {
262
+ type: "string",
263
+ describe: "추가할 모델의 분류명",
264
+ demandOption: true
265
+ })
266
+ .positional("name", {
267
+ type: "string",
268
+ describe: "추가할 모델의 명칭 (테이블명)",
269
+ demandOption: true
270
+ })
271
+ .positional("description", {
272
+ type: "string",
273
+ describe: "추가할 모델의 설명 (테이블 설명)",
274
+ demandOption: true
275
+ })
276
+ .example([
277
+ ["$0 add db-model main base Employee 직원"]
278
+ ])
279
+ )
280
+ .command(
281
+ "server [name] [description]",
282
+ "서버 패키지를 추가합니다.",
283
+ (cmd1) => cmd1.version(false).hide("help").hide("debug")
284
+ .positional("name", {
285
+ type: "string",
286
+ describe: "패키지명"
287
+ })
288
+ .positional("description", {
289
+ type: "string",
290
+ describe: "패키지 설명"
291
+ })
292
+ .example([
293
+ ["$0 add server"]
294
+ ])
295
+ )
296
+ .command(
297
+ "client <name> <description> <serverName>",
298
+ "클라이언트 패키지를 추가합니다.",
299
+ (cmd1) => cmd1.version(false).hide("help").hide("debug")
300
+ .positional("name", {
301
+ type: "string",
302
+ describe: "패키지명",
303
+ demandOption: true
304
+ })
305
+ .positional("description", {
306
+ type: "string",
307
+ describe: "패키지 설명",
308
+ demandOption: true
309
+ })
310
+ .positional("serverName", {
311
+ type: "string",
312
+ describe: "서버 패키지명",
313
+ demandOption: true
314
+ })
315
+ .example([
316
+ ["$0 add client admin 관리자 server"]
317
+ ])
318
+ )
179
319
  )
180
320
  .parseSync();
181
321
 
@@ -265,6 +405,52 @@ const logger = Logger.get(["simplysm", "sd-cli", "bin", "sd-cli"]);
265
405
  else if (argv._[0] === "dec-file") {
266
406
  await new SdCliFileCrypto().decryptAsync(argv.file!);
267
407
  }
408
+ else if (argv._[0] === "init") {
409
+ await new SdCliProjectGenerator(process.cwd()).initAsync({
410
+ name: argv.name,
411
+ description: argv.description!,
412
+ author: argv.author,
413
+ gitUrl: argv.gitUrl
414
+ });
415
+ }
416
+ else if (argv._[0] === "add") {
417
+ if (argv._[1] === "ts-lib") {
418
+ await new SdCliProjectGenerator(process.cwd()).addTsLibAsync({
419
+ name: argv.name!,
420
+ description: argv.description!,
421
+ useDom: argv.useDom
422
+ });
423
+ }
424
+ else if (argv._[1] === "db-lib") {
425
+ await new SdCliProjectGenerator(process.cwd()).addDbLibAsync({
426
+ name: argv.name!
427
+ });
428
+ }
429
+ else if (argv._[1] === "db-model") {
430
+ await new SdCliProjectGenerator(process.cwd()).addDbLibModelAsync({
431
+ dbPkgName: argv.dbName,
432
+ category: argv.category,
433
+ name: argv.name!,
434
+ description: argv.description!
435
+ });
436
+ }
437
+ else if (argv._[1] === "server") {
438
+ await new SdCliProjectGenerator(process.cwd()).addServerAsync({
439
+ name: argv.name,
440
+ description: argv.description
441
+ });
442
+ }
443
+ else if (argv._[1] === "client") {
444
+ await new SdCliProjectGenerator(process.cwd()).addClientAsync({
445
+ name: argv.name!,
446
+ description: argv.description!,
447
+ serverName: argv.serverName
448
+ });
449
+ }
450
+ else {
451
+ throw new Error(`명령어가 잘못 되었습니다.\n\t${argv._[1]}\n`);
452
+ }
453
+ }
268
454
  else {
269
455
  throw new Error(`명령어가 잘못 되었습니다.\n\t${argv._[0]}\n`);
270
456
  }
@@ -68,7 +68,8 @@ export class SdCliElectron {
68
68
  `SD_VERSION=${npmConfig.version}`,
69
69
  `SD_ELECTRON_DEV_URL=${url.replace(/\/$/, "")}/${pkgName}/electron/`,
70
70
  (electronConfig.icon !== undefined) ? `SD_ELECTRON_ICON=${electronConfig.icon}` : `SD_ELECTRON_ICON=favicon.ico`,
71
- ...(pkgConfig.env !== undefined) ? Object.keys(pkgConfig.env).map((key) => `${key}=${pkgConfig.env![key]}`) : []
71
+ ...(pkgConfig.env !== undefined) ? Object.keys(pkgConfig.env).map((key) => `${key}=${pkgConfig.env![key]}`) : [],
72
+ ...(electronConfig.env !== undefined) ? Object.keys(electronConfig.env).map((key) => `${key}=${electronConfig.env![key]}`) : [],
72
73
  ].filterExists().join("\n"));
73
74
 
74
75
  let electronTsFileContent = await FsUtil.readFileAsync(path.resolve(pkgRootPath, `src/electron.ts`));
@@ -111,11 +111,15 @@ export class SdCliClientBuilder extends EventEmitter {
111
111
  .map((builderType) => this._getWebpackConfig(true, builderType));
112
112
  const multiCompiler = webpack(webpackConfigs);
113
113
  await new Promise<void>((resolve, reject) => {
114
+ const invalidFiles: string[] = [];
114
115
  multiCompiler.hooks.invalid.tap(this.constructor.name, (fileName) => {
115
116
  if (fileName != null) {
116
117
  this._logger.debug("파일변경 감지", fileName);
118
+
117
119
  // NgModule 캐시 삭제
118
120
  this._ngModuleGenerator.removeCaches([path.resolve(fileName)]);
121
+
122
+ invalidFiles.push(fileName);
119
123
  }
120
124
  });
121
125
 
@@ -144,9 +148,6 @@ export class SdCliClientBuilder extends EventEmitter {
144
148
  return;
145
149
  }
146
150
 
147
- // 결과 반환
148
- const results = multiStats.stats.mapMany((stats) => SdCliBuildResultUtil.convertFromWebpackStats(stats));
149
-
150
151
  // .config.json 파일 쓰기
151
152
  const npmConfig = this._getNpmConfig(this._rootPath)!;
152
153
  const packageKey = npmConfig.name.split("/").last()!;
@@ -156,11 +157,14 @@ export class SdCliClientBuilder extends EventEmitter {
156
157
  : path.resolve(this._parsedTsconfig.options.outDir!, ".config.json");
157
158
  await FsUtil.writeFileAsync(configDistPath, JSON.stringify(this._config.configs ?? {}, undefined, 2));
158
159
 
159
- // 마무리
160
+ // 완료 로그
160
161
  this._logger.debug("Webpack 빌드 완료");
161
- resolve();
162
162
 
163
+ // 결과 반환
164
+ const results = multiStats.stats.mapMany((stats) => SdCliBuildResultUtil.convertFromWebpackStats(stats));
163
165
  this.emit("complete", results);
166
+
167
+ resolve();
164
168
  });
165
169
  });
166
170
  }
@@ -264,7 +268,8 @@ export class SdCliClientBuilder extends EventEmitter {
264
268
  "NODE_ENV=production",
265
269
  `SD_VERSION=${npmConfig.version}`,
266
270
  (this._config.builder.electron.icon !== undefined) ? `SD_ELECTRON_ICON=${this._config.builder.electron.icon}` : `SD_ELECTRON_ICON=favicon.ico`,
267
- ...(this._config.env !== undefined) ? Object.keys(this._config.env).map((key) => `${key}=${this._config.env![key]}`) : []
271
+ ...(this._config.env !== undefined) ? Object.keys(this._config.env).map((key) => `${key}=${this._config.env![key]}`) : [],
272
+ ...(this._config.builder.electron.env !== undefined) ? Object.keys(this._config.builder.electron.env).map((key) => `${key}=${this._config.builder!.electron!.env![key]}`) : []
268
273
  ].filterExists().join("\n"));
269
274
 
270
275
  let electronTsFileContent = await FsUtil.readFileAsync(path.resolve(this._rootPath, `src/electron.ts`));
@@ -703,7 +708,8 @@ export class SdCliClientBuilder extends EventEmitter {
703
708
  }),
704
709
  new webpack.EnvironmentPlugin({
705
710
  SD_VERSION: this._getNpmConfig(this._rootPath)!.version,
706
- ...this._config.env
711
+ ...this._config.env,
712
+ ...this._config.builder?.[builderType]?.env
707
713
  }),
708
714
  new ESLintWebpackPlugin({
709
715
  context: this._rootPath,