@simplysm/sd-cli 6.4.5 → 7.0.9
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/.eslintrc.cjs +11 -0
- package/dist/bin/sd-cli.d.ts +1 -0
- package/dist/bin/sd-cli.mjs +86 -0
- package/dist/build-tool/SdCliCacheCompilerHost.d.ts +10 -0
- package/dist/build-tool/SdCliCacheCompilerHost.mjs +44 -0
- package/dist/build-tool/SdCliNgCacheCompilerHost.d.ts +11 -0
- package/dist/build-tool/SdCliNgCacheCompilerHost.mjs +36 -0
- package/dist/build-tool/SdCliPackageLinter.d.ts +8 -0
- package/dist/build-tool/SdCliPackageLinter.mjs +41 -0
- package/dist/builder/SdCliJsLibBuilder.d.ts +14 -0
- package/dist/builder/SdCliJsLibBuilder.mjs +50 -0
- package/dist/builder/SdCliTsLibBuilder.d.ts +27 -0
- package/dist/builder/SdCliTsLibBuilder.mjs +226 -0
- package/dist/commons.d.ts +46 -0
- package/dist/commons.mjs +2 -0
- package/dist/entry-points/SdCliWorkspace.d.ts +18 -0
- package/dist/entry-points/SdCliWorkspace.mjs +193 -0
- package/dist/packages/SdCliPackage.d.ts +19 -0
- package/dist/packages/SdCliPackage.mjs +89 -0
- package/dist/utils/SdCliBuildResultUtil.d.ts +6 -0
- package/dist/utils/SdCliBuildResultUtil.mjs +38 -0
- package/dist/utils/SdCliConfigUtil.d.ts +7 -0
- package/dist/utils/SdCliConfigUtil.mjs +69 -0
- package/lib/ts-node-esm-paths.mjs +15 -0
- package/package.json +27 -59
- package/src/bin/sd-cli.ts +86 -214
- package/src/build-tool/SdCliCacheCompilerHost.ts +71 -0
- package/src/build-tool/SdCliNgCacheCompilerHost.ts +50 -0
- package/src/build-tool/SdCliPackageLinter.ts +54 -0
- package/src/builder/SdCliJsLibBuilder.ts +66 -0
- package/src/builder/SdCliTsLibBuilder.ts +335 -0
- package/src/commons.ts +17 -122
- package/src/entry-points/SdCliWorkspace.ts +229 -0
- package/src/packages/SdCliPackage.ts +111 -0
- package/src/utils/SdCliBuildResultUtil.ts +43 -0
- package/src/utils/SdCliConfigUtil.ts +94 -0
- package/tsconfig-build.json +9 -0
- package/tsconfig.json +7 -18
- package/.eslintrc.js +0 -19
- package/dist-node/bin/sd-cli.js +0 -197
- package/dist-node/bin/sd-cli.js.map +0 -1
- package/dist-node/build-tools/SdCliCordova.js +0 -144
- package/dist-node/build-tools/SdCliCordova.js.map +0 -1
- package/dist-node/build-tools/SdCliIndexFileGenerator.js +0 -51
- package/dist-node/build-tools/SdCliIndexFileGenerator.js.map +0 -1
- package/dist-node/build-tools/SdCliNgModuleFilesGenerator.js +0 -675
- package/dist-node/build-tools/SdCliNgModuleFilesGenerator.js.map +0 -1
- package/dist-node/build-tools/metadata/SdAotMetadataReader.js +0 -274
- package/dist-node/build-tools/metadata/SdAotMetadataReader.js.map +0 -1
- package/dist-node/build-tools/metadata/SdIvyMetadataReader.js +0 -124
- package/dist-node/build-tools/metadata/SdIvyMetadataReader.js.map +0 -1
- package/dist-node/build-tools/metadata/SdMetadataError.js +0 -13
- package/dist-node/build-tools/metadata/SdMetadataError.js.map +0 -1
- package/dist-node/build-tools/metadata/SdMyMetadataReader.js +0 -321
- package/dist-node/build-tools/metadata/SdMyMetadataReader.js.map +0 -1
- package/dist-node/builders/SdCliJavascriptLinter.js +0 -65
- package/dist-node/builders/SdCliJavascriptLinter.js.map +0 -1
- package/dist-node/builders/SdCliNgClientBuilder.js +0 -636
- package/dist-node/builders/SdCliNgClientBuilder.js.map +0 -1
- package/dist-node/builders/SdCliNgLibraryBuilder.js +0 -217
- package/dist-node/builders/SdCliNgLibraryBuilder.js.map +0 -1
- package/dist-node/builders/SdCliPublisher.js +0 -129
- package/dist-node/builders/SdCliPublisher.js.map +0 -1
- package/dist-node/builders/SdCliServerBuilder.js +0 -452
- package/dist-node/builders/SdCliServerBuilder.js.map +0 -1
- package/dist-node/builders/SdCliTypescriptBuilder.js +0 -347
- package/dist-node/builders/SdCliTypescriptBuilder.js.map +0 -1
- package/dist-node/commons.js +0 -3
- package/dist-node/commons.js.map +0 -1
- package/dist-node/entry-points/SdCliLocalUpdater.js +0 -88
- package/dist-node/entry-points/SdCliLocalUpdater.js.map +0 -1
- package/dist-node/entry-points/SdCliPrepare.js +0 -56
- package/dist-node/entry-points/SdCliPrepare.js.map +0 -1
- package/dist-node/entry-points/SdCliProject.js +0 -302
- package/dist-node/entry-points/SdCliProject.js.map +0 -1
- package/dist-node/packages/SdCliClientPackage.js +0 -91
- package/dist-node/packages/SdCliClientPackage.js.map +0 -1
- package/dist-node/packages/SdCliLibraryPackage.js +0 -99
- package/dist-node/packages/SdCliLibraryPackage.js.map +0 -1
- package/dist-node/packages/SdCliPackageBase.js +0 -33
- package/dist-node/packages/SdCliPackageBase.js.map +0 -1
- package/dist-node/packages/SdCliServerPackage.js +0 -69
- package/dist-node/packages/SdCliServerPackage.js.map +0 -1
- package/dist-node/packages/SdCliUnknownPackage.js +0 -15
- package/dist-node/packages/SdCliUnknownPackage.js.map +0 -1
- package/dist-node/utils/SdCliFileCrypto.js +0 -76
- package/dist-node/utils/SdCliFileCrypto.js.map +0 -1
- package/dist-node/utils/SdProjectConfigUtil.js +0 -62
- package/dist-node/utils/SdProjectConfigUtil.js.map +0 -1
- package/dist-node/utils/SdTsDiagnosticUtil.js +0 -45
- package/dist-node/utils/SdTsDiagnosticUtil.js.map +0 -1
- package/dist-node/utils/SdWebpackUtil.js +0 -63
- package/dist-node/utils/SdWebpackUtil.js.map +0 -1
- package/dist-node/workers/client-ng-gen-worker.js +0 -57
- package/dist-node/workers/client-ng-gen-worker.js.map +0 -1
- package/dist-node/workers/lib-build-worker.js +0 -88
- package/dist-node/workers/lib-build-worker.js.map +0 -1
- package/dist-types/bin/sd-cli.d.ts +0 -3
- package/dist-types/bin/sd-cli.d.ts.map +0 -1
- package/dist-types/build-tools/SdCliCordova.d.ts +0 -15
- package/dist-types/build-tools/SdCliCordova.d.ts.map +0 -1
- package/dist-types/build-tools/SdCliIndexFileGenerator.d.ts +0 -13
- package/dist-types/build-tools/SdCliIndexFileGenerator.d.ts.map +0 -1
- package/dist-types/build-tools/SdCliNgModuleFilesGenerator.d.ts +0 -43
- package/dist-types/build-tools/SdCliNgModuleFilesGenerator.d.ts.map +0 -1
- package/dist-types/build-tools/metadata/SdAotMetadataReader.d.ts +0 -58
- package/dist-types/build-tools/metadata/SdAotMetadataReader.d.ts.map +0 -1
- package/dist-types/build-tools/metadata/SdIvyMetadataReader.d.ts +0 -43
- package/dist-types/build-tools/metadata/SdIvyMetadataReader.d.ts.map +0 -1
- package/dist-types/build-tools/metadata/SdMetadataError.d.ts +0 -7
- package/dist-types/build-tools/metadata/SdMetadataError.d.ts.map +0 -1
- package/dist-types/build-tools/metadata/SdMyMetadataReader.d.ts +0 -59
- package/dist-types/build-tools/metadata/SdMyMetadataReader.d.ts.map +0 -1
- package/dist-types/builders/SdCliJavascriptLinter.d.ts +0 -14
- package/dist-types/builders/SdCliJavascriptLinter.d.ts.map +0 -1
- package/dist-types/builders/SdCliNgClientBuilder.d.ts +0 -29
- package/dist-types/builders/SdCliNgClientBuilder.d.ts.map +0 -1
- package/dist-types/builders/SdCliNgLibraryBuilder.d.ts +0 -30
- package/dist-types/builders/SdCliNgLibraryBuilder.d.ts.map +0 -1
- package/dist-types/builders/SdCliPublisher.d.ts +0 -9
- package/dist-types/builders/SdCliPublisher.d.ts.map +0 -1
- package/dist-types/builders/SdCliServerBuilder.d.ts +0 -31
- package/dist-types/builders/SdCliServerBuilder.d.ts.map +0 -1
- package/dist-types/builders/SdCliTypescriptBuilder.d.ts +0 -56
- package/dist-types/builders/SdCliTypescriptBuilder.d.ts.map +0 -1
- package/dist-types/commons.d.ts +0 -134
- package/dist-types/commons.d.ts.map +0 -1
- package/dist-types/entry-points/SdCliLocalUpdater.d.ts +0 -12
- package/dist-types/entry-points/SdCliLocalUpdater.d.ts.map +0 -1
- package/dist-types/entry-points/SdCliPrepare.d.ts +0 -6
- package/dist-types/entry-points/SdCliPrepare.d.ts.map +0 -1
- package/dist-types/entry-points/SdCliProject.d.ts +0 -32
- package/dist-types/entry-points/SdCliProject.d.ts.map +0 -1
- package/dist-types/packages/SdCliClientPackage.d.ts +0 -17
- package/dist-types/packages/SdCliClientPackage.d.ts.map +0 -1
- package/dist-types/packages/SdCliLibraryPackage.d.ts +0 -20
- package/dist-types/packages/SdCliLibraryPackage.d.ts.map +0 -1
- package/dist-types/packages/SdCliPackageBase.d.ts +0 -11
- package/dist-types/packages/SdCliPackageBase.d.ts.map +0 -1
- package/dist-types/packages/SdCliServerPackage.d.ts +0 -16
- package/dist-types/packages/SdCliServerPackage.d.ts.map +0 -1
- package/dist-types/packages/SdCliUnknownPackage.d.ts +0 -9
- package/dist-types/packages/SdCliUnknownPackage.d.ts.map +0 -1
- package/dist-types/utils/SdCliFileCrypto.d.ts +0 -8
- package/dist-types/utils/SdCliFileCrypto.d.ts.map +0 -1
- package/dist-types/utils/SdProjectConfigUtil.d.ts +0 -7
- package/dist-types/utils/SdProjectConfigUtil.d.ts.map +0 -1
- package/dist-types/utils/SdTsDiagnosticUtil.d.ts +0 -6
- package/dist-types/utils/SdTsDiagnosticUtil.d.ts.map +0 -1
- package/dist-types/utils/SdWebpackUtil.d.ts +0 -7
- package/dist-types/utils/SdWebpackUtil.d.ts.map +0 -1
- package/dist-types/workers/client-ng-gen-worker.d.ts +0 -2
- package/dist-types/workers/client-ng-gen-worker.d.ts.map +0 -1
- package/dist-types/workers/lib-build-worker.d.ts +0 -2
- package/dist-types/workers/lib-build-worker.d.ts.map +0 -1
- package/schema/schema.json +0 -447
- package/sd-tsconfig.node.json +0 -18
- package/src/build-tools/SdCliCordova.ts +0 -240
- package/src/build-tools/SdCliIndexFileGenerator.ts +0 -61
- package/src/build-tools/SdCliNgModuleFilesGenerator.ts +0 -894
- package/src/build-tools/metadata/SdAotMetadataReader.ts +0 -374
- package/src/build-tools/metadata/SdIvyMetadataReader.ts +0 -183
- package/src/build-tools/metadata/SdMetadataError.ts +0 -7
- package/src/build-tools/metadata/SdMyMetadataReader.ts +0 -407
- package/src/builders/SdCliJavascriptLinter.ts +0 -81
- package/src/builders/SdCliNgClientBuilder.ts +0 -793
- package/src/builders/SdCliNgLibraryBuilder.ts +0 -301
- package/src/builders/SdCliPublisher.ts +0 -144
- package/src/builders/SdCliServerBuilder.ts +0 -555
- package/src/builders/SdCliTypescriptBuilder.ts +0 -552
- package/src/entry-points/SdCliLocalUpdater.ts +0 -114
- package/src/entry-points/SdCliPrepare.ts +0 -104
- package/src/entry-points/SdCliProject.ts +0 -405
- package/src/packages/SdCliClientPackage.ts +0 -111
- package/src/packages/SdCliLibraryPackage.ts +0 -118
- package/src/packages/SdCliPackageBase.ts +0 -34
- package/src/packages/SdCliServerPackage.ts +0 -85
- package/src/packages/SdCliUnknownPackage.ts +0 -14
- package/src/utils/SdCliFileCrypto.ts +0 -87
- package/src/utils/SdCliUtils.ts +0 -56
- package/src/utils/SdProjectConfigUtil.ts +0 -145
- package/src/utils/SdTsDiagnosticUtil.ts +0 -46
- package/src/utils/SdWebpackUtil.ts +0 -71
- package/src/workers/client-ng-gen-worker.ts +0 -63
- package/src/workers/lib-build-worker.ts +0 -97
|
@@ -1,452 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SdCliServerBuilder = void 0;
|
|
4
|
-
const events_1 = require("events");
|
|
5
|
-
const ts = require("typescript");
|
|
6
|
-
const sd_core_node_1 = require("@simplysm/sd-core-node");
|
|
7
|
-
const sd_core_common_1 = require("@simplysm/sd-core-common");
|
|
8
|
-
const webpack = require("webpack");
|
|
9
|
-
const path = require("path");
|
|
10
|
-
const javascript_optimizer_plugin_1 = require("@angular-devkit/build-angular/src/webpack/plugins/javascript-optimizer-plugin");
|
|
11
|
-
const plugins_1 = require("@angular-devkit/build-angular/src/webpack/plugins");
|
|
12
|
-
const license_webpack_plugin_1 = require("license-webpack-plugin");
|
|
13
|
-
const SdWebpackUtil_1 = require("../utils/SdWebpackUtil");
|
|
14
|
-
const os = require("os");
|
|
15
|
-
const decache_1 = require("decache");
|
|
16
|
-
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
|
17
|
-
const ESLintWebpackPlugin = require("eslint-webpack-plugin");
|
|
18
|
-
class SdCliServerBuilder extends events_1.EventEmitter {
|
|
19
|
-
constructor(rootPath, tsconfigFilePath, projectRootPath, config, skipProcesses) {
|
|
20
|
-
super();
|
|
21
|
-
this.rootPath = rootPath;
|
|
22
|
-
this.tsconfigFilePath = tsconfigFilePath;
|
|
23
|
-
this.projectRootPath = projectRootPath;
|
|
24
|
-
this.config = config;
|
|
25
|
-
this.skipProcesses = skipProcesses;
|
|
26
|
-
this.npmConfigCache = new Map();
|
|
27
|
-
const tsconfig = sd_core_node_1.FsUtil.readJson(this.tsconfigFilePath);
|
|
28
|
-
this.parsedTsconfig = ts.parseJsonConfigFileContent(tsconfig, ts.sys, this.rootPath);
|
|
29
|
-
const npmConfig = sd_core_node_1.FsUtil.readJson(path.resolve(this.rootPath, "package.json"));
|
|
30
|
-
this.npmConfigCache.set(this.rootPath, npmConfig);
|
|
31
|
-
this._logger = sd_core_node_1.Logger.get(["simplysm", "sd-cli", this.constructor.name, npmConfig.name]);
|
|
32
|
-
}
|
|
33
|
-
on(event, listener) {
|
|
34
|
-
return super.on(event, listener);
|
|
35
|
-
}
|
|
36
|
-
async buildAsync() {
|
|
37
|
-
this.emit("change");
|
|
38
|
-
await sd_core_node_1.FsUtil.removeAsync(this.parsedTsconfig.options.outDir);
|
|
39
|
-
const externalModuleNames = this._findExternalModules(false).map((item) => item.name);
|
|
40
|
-
this._logger.debug("Webpack 빌드 수행");
|
|
41
|
-
const webpackConfig = this._getWebpackConfig(false, externalModuleNames);
|
|
42
|
-
const compiler = webpack(webpackConfig);
|
|
43
|
-
const buildResults = await new Promise((resolve, reject) => {
|
|
44
|
-
compiler.run((err, stat) => {
|
|
45
|
-
if (err != null) {
|
|
46
|
-
reject(err);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const results = SdWebpackUtil_1.SdWebpackUtil.getWebpackResults(stat);
|
|
50
|
-
resolve(results);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
this._logger.debug("Webpack 빌드 결과", buildResults);
|
|
54
|
-
const targetPath = path.resolve(this.parsedTsconfig.options.outDir, ".config.json");
|
|
55
|
-
await sd_core_node_1.FsUtil.writeFileAsync(targetPath, JSON.stringify(this.config.configs ?? {}, undefined, 2));
|
|
56
|
-
if (this.config.pm2 !== undefined && this.config.pm2 !== false) {
|
|
57
|
-
const npmConfig = this._getNpmConfig(this.rootPath);
|
|
58
|
-
const pm2DistPath = path.resolve(this.parsedTsconfig.options.outDir, "pm2.json");
|
|
59
|
-
await sd_core_node_1.FsUtil.writeFileAsync(pm2DistPath, JSON.stringify(sd_core_common_1.ObjectUtil.merge({
|
|
60
|
-
"name": npmConfig.name.replace(/@/g, "").replace(/\//g, "-"),
|
|
61
|
-
"script": path.basename(path.resolve(this.parsedTsconfig.options.outDir, "main.js")),
|
|
62
|
-
"watch": true,
|
|
63
|
-
"watch_delay": 2000,
|
|
64
|
-
"ignore_watch": [
|
|
65
|
-
"node_modules",
|
|
66
|
-
"www"
|
|
67
|
-
].distinct(),
|
|
68
|
-
"interpreter": "node@" + process.versions.node,
|
|
69
|
-
"env": {
|
|
70
|
-
NODE_ENV: "production",
|
|
71
|
-
VERSION: npmConfig.version,
|
|
72
|
-
TZ: "Asia/Seoul",
|
|
73
|
-
...this.config.env ? this.config.env : {}
|
|
74
|
-
}
|
|
75
|
-
}, (typeof this.config.pm2 !== "boolean") ? this.config.pm2 : {}, {
|
|
76
|
-
arrayProcess: "concat"
|
|
77
|
-
}), undefined, 2));
|
|
78
|
-
}
|
|
79
|
-
if (this.config.iis !== undefined && this.config.iis !== false) {
|
|
80
|
-
const iisDistPath = path.resolve(this.parsedTsconfig.options.outDir, "web.config");
|
|
81
|
-
const serverExeFilePath = (this.config.iis !== true && "serverExeFilePath" in this.config.iis)
|
|
82
|
-
? (this.config.iis.serverExeFilePath ?? "C:\\Program Files\\nodejs\\node.exe")
|
|
83
|
-
: "C:\\Program Files\\nodejs\\node.exe";
|
|
84
|
-
await sd_core_node_1.FsUtil.writeFileAsync(iisDistPath, `
|
|
85
|
-
<configuration>
|
|
86
|
-
<system.webServer>
|
|
87
|
-
<webSocket enabled="false" />
|
|
88
|
-
<handlers>
|
|
89
|
-
<add name="iisnode" path="main.js" verb="*" modules="iisnode" />
|
|
90
|
-
</handlers>
|
|
91
|
-
<iisnode nodeProcessCommandLine="${serverExeFilePath}"
|
|
92
|
-
watchedFiles="web.config;*.js"
|
|
93
|
-
loggingEnabled="true"
|
|
94
|
-
devErrorsEnabled="true" />
|
|
95
|
-
<rewrite>
|
|
96
|
-
<rules>
|
|
97
|
-
<rule name="main">
|
|
98
|
-
<action type="Rewrite" url="main.js" />
|
|
99
|
-
</rule>
|
|
100
|
-
</rules>
|
|
101
|
-
</rewrite>
|
|
102
|
-
<httpErrors errorMode="Detailed" />
|
|
103
|
-
</system.webServer>
|
|
104
|
-
</configuration>
|
|
105
|
-
|
|
106
|
-
`.trim());
|
|
107
|
-
}
|
|
108
|
-
const distNpmConfig = sd_core_common_1.ObjectUtil.clone(this._getNpmConfig(this.rootPath));
|
|
109
|
-
distNpmConfig.dependencies = {};
|
|
110
|
-
for (const externalModuleName of externalModuleNames) {
|
|
111
|
-
distNpmConfig.dependencies[externalModuleName] = "*";
|
|
112
|
-
}
|
|
113
|
-
delete distNpmConfig.optionalDependencies;
|
|
114
|
-
delete distNpmConfig.devDependencies;
|
|
115
|
-
delete distNpmConfig.peerDependencies;
|
|
116
|
-
if (this.config.pm2 !== undefined) {
|
|
117
|
-
distNpmConfig.scripts = { "start": "pm2 start pm2.json" };
|
|
118
|
-
}
|
|
119
|
-
await sd_core_node_1.FsUtil.writeFileAsync(path.resolve(this.parsedTsconfig.options.outDir, "package.json"), JSON.stringify(distNpmConfig, undefined, 2));
|
|
120
|
-
this.emit("complete", buildResults);
|
|
121
|
-
}
|
|
122
|
-
async watchAsync() {
|
|
123
|
-
await sd_core_node_1.FsUtil.removeAsync(this.parsedTsconfig.options.outDir);
|
|
124
|
-
const externalModules = this._findExternalModules(true);
|
|
125
|
-
const externalModuleNames = externalModules.map((item) => item.name);
|
|
126
|
-
const externalModulePaths = externalModules.map((item) => item.path);
|
|
127
|
-
const webpackConfig = this._getWebpackConfig(true, externalModuleNames);
|
|
128
|
-
const compiler = webpack(webpackConfig);
|
|
129
|
-
await new Promise((resolve, reject) => {
|
|
130
|
-
compiler.hooks.watchRun.tapAsync(this.constructor.name, async (args, callback) => {
|
|
131
|
-
this.emit("change");
|
|
132
|
-
callback();
|
|
133
|
-
this._logger.debug("Webpack 빌드 수행");
|
|
134
|
-
await this._stopServerAsync();
|
|
135
|
-
});
|
|
136
|
-
compiler.watch({ poll: undefined }, async (err, stat) => {
|
|
137
|
-
if (err != null) {
|
|
138
|
-
reject(err);
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
const configDistPath = path.resolve(this.parsedTsconfig.options.outDir, ".config.json");
|
|
142
|
-
await sd_core_node_1.FsUtil.writeFileAsync(configDistPath, JSON.stringify(this.config.configs ?? {}, undefined, 2));
|
|
143
|
-
const results = SdWebpackUtil_1.SdWebpackUtil.getWebpackResults(stat);
|
|
144
|
-
try {
|
|
145
|
-
await this._startServerAsync();
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
if (error instanceof Error) {
|
|
149
|
-
results.push({
|
|
150
|
-
filePath: undefined,
|
|
151
|
-
severity: "error",
|
|
152
|
-
message: error.message
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
throw error;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
this.emit("complete", results, this._server);
|
|
160
|
-
this._logger.debug("Webpack 빌드 수행 결과", results);
|
|
161
|
-
resolve();
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
const getWatchPathsAsync = async () => {
|
|
165
|
-
const result = [];
|
|
166
|
-
for (const modulePath of externalModulePaths) {
|
|
167
|
-
const npmConfig = this._getNpmConfig(modulePath);
|
|
168
|
-
if (!npmConfig)
|
|
169
|
-
continue;
|
|
170
|
-
const distPath = path.resolve(modulePath, path.dirname(npmConfig.es2020 ?? npmConfig.module ?? npmConfig.main ?? "dist"));
|
|
171
|
-
const watchPaths = (await sd_core_node_1.FsUtil.globAsync(path.resolve(distPath, "**")))
|
|
172
|
-
.filter((item) => (item.includes("@simplysm")
|
|
173
|
-
&& sd_core_node_1.FsUtil.exists(item)
|
|
174
|
-
&& sd_core_node_1.FsUtil.isDirectory(item)));
|
|
175
|
-
result.push(...watchPaths);
|
|
176
|
-
}
|
|
177
|
-
return result;
|
|
178
|
-
};
|
|
179
|
-
const watchPaths = await getWatchPathsAsync();
|
|
180
|
-
const watcher = new sd_core_node_1.SdFsWatcher();
|
|
181
|
-
watcher
|
|
182
|
-
.onChange(async (changeInfos) => {
|
|
183
|
-
const dirtyFilePaths = changeInfos
|
|
184
|
-
.map((changeInfo) => changeInfo.filePath)
|
|
185
|
-
.filter((item) => path.basename(item).includes("."))
|
|
186
|
-
.distinct();
|
|
187
|
-
if (dirtyFilePaths.length === 0)
|
|
188
|
-
return;
|
|
189
|
-
this.emit("change");
|
|
190
|
-
this._logger.debug("서버 재시작");
|
|
191
|
-
const watchPaths2 = await getWatchPathsAsync();
|
|
192
|
-
watcher.replaceWatchPaths(watchPaths2);
|
|
193
|
-
await this._stopServerAsync();
|
|
194
|
-
const results = [];
|
|
195
|
-
try {
|
|
196
|
-
await this._startServerAsync();
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
if (error instanceof Error) {
|
|
200
|
-
results.push({
|
|
201
|
-
filePath: undefined,
|
|
202
|
-
severity: "error",
|
|
203
|
-
message: error.message
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
throw error;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
this.emit("complete", results, this._server);
|
|
211
|
-
this._logger.debug("서버 재시작 결과", results);
|
|
212
|
-
})
|
|
213
|
-
.watch(watchPaths);
|
|
214
|
-
}
|
|
215
|
-
async _stopServerAsync() {
|
|
216
|
-
if (this._server) {
|
|
217
|
-
await this._server.closeAsync();
|
|
218
|
-
delete this._server;
|
|
219
|
-
}
|
|
220
|
-
const mainFilePath = path.resolve(this.parsedTsconfig.options.outDir, "main.js");
|
|
221
|
-
decache_1.default(mainFilePath);
|
|
222
|
-
}
|
|
223
|
-
async _startServerAsync() {
|
|
224
|
-
await sd_core_common_1.Wait.true(() => this._server === undefined);
|
|
225
|
-
const mainFilePath = path.resolve(this.parsedTsconfig.options.outDir, "main.js");
|
|
226
|
-
this._server = require(mainFilePath);
|
|
227
|
-
if (!this._server) {
|
|
228
|
-
throw new Error(`${mainFilePath}(0, 0): 'SdServiceServer'를 'export'해야 합니다.`);
|
|
229
|
-
}
|
|
230
|
-
await new Promise((resolve) => {
|
|
231
|
-
this._server.on("ready", () => {
|
|
232
|
-
resolve();
|
|
233
|
-
});
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
_getWebpackConfig(watch, externalModuleNames) {
|
|
237
|
-
return {
|
|
238
|
-
mode: watch ? "development" : "production",
|
|
239
|
-
devtool: false,
|
|
240
|
-
target: ["node", "es2020"],
|
|
241
|
-
profile: false,
|
|
242
|
-
resolve: {
|
|
243
|
-
roots: [this.rootPath],
|
|
244
|
-
extensions: [".ts", ".tsx", ".js"],
|
|
245
|
-
symlinks: true,
|
|
246
|
-
mainFields: ["es2020", "module", "main"]
|
|
247
|
-
},
|
|
248
|
-
context: this.projectRootPath,
|
|
249
|
-
entry: {
|
|
250
|
-
main: [
|
|
251
|
-
path.resolve(this.rootPath, "src/main.ts")
|
|
252
|
-
]
|
|
253
|
-
},
|
|
254
|
-
output: {
|
|
255
|
-
clean: true,
|
|
256
|
-
path: this.parsedTsconfig.options.outDir,
|
|
257
|
-
filename: "[name].js",
|
|
258
|
-
chunkFilename: "[name].js",
|
|
259
|
-
assetModuleFilename: "resources/[name][ext][query]",
|
|
260
|
-
libraryTarget: watch ? "umd" : "commonjs"
|
|
261
|
-
},
|
|
262
|
-
performance: { hints: false },
|
|
263
|
-
module: {
|
|
264
|
-
strictExportPresence: true,
|
|
265
|
-
rules: [
|
|
266
|
-
...watch ? [
|
|
267
|
-
{
|
|
268
|
-
test: /\.m?js$/,
|
|
269
|
-
enforce: "pre",
|
|
270
|
-
loader: require.resolve("source-map-loader"),
|
|
271
|
-
options: {
|
|
272
|
-
filterSourceMappingUrl: (mapUri, resourcePath) => {
|
|
273
|
-
return !resourcePath.includes("node_modules") || (/@simplysm[\\/]sd/).test(resourcePath);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
] : [],
|
|
278
|
-
{
|
|
279
|
-
test: /\.ts$/,
|
|
280
|
-
exclude: /node_modules/,
|
|
281
|
-
loader: require.resolve("ts-loader"),
|
|
282
|
-
options: {
|
|
283
|
-
configFile: this.tsconfigFilePath,
|
|
284
|
-
errorFormatter: (msg, colors) => {
|
|
285
|
-
return `${msg.file}(${msg.line}, ${msg.character}): ${msg.code}: ${msg.severity} ${msg.content}`;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
{
|
|
290
|
-
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|otf|xlsx?|pptx?|docx?|zip|pfx|pkl)$/,
|
|
291
|
-
type: "asset/resource"
|
|
292
|
-
}
|
|
293
|
-
]
|
|
294
|
-
},
|
|
295
|
-
...watch ? {
|
|
296
|
-
cache: { type: "memory", maxGenerations: 1 },
|
|
297
|
-
snapshot: {
|
|
298
|
-
immutablePaths: this._findAllInternalModuleCachePaths(),
|
|
299
|
-
managedPaths: this._findAllInternalModuleCachePaths()
|
|
300
|
-
}
|
|
301
|
-
} : {
|
|
302
|
-
cache: false
|
|
303
|
-
},
|
|
304
|
-
optimization: {
|
|
305
|
-
minimizer: watch ? [] : [
|
|
306
|
-
new javascript_optimizer_plugin_1.JavaScriptOptimizerPlugin({
|
|
307
|
-
sourcemap: false,
|
|
308
|
-
target: this.parsedTsconfig.options.target,
|
|
309
|
-
keepNames: true,
|
|
310
|
-
removeLicenses: true,
|
|
311
|
-
advanced: true
|
|
312
|
-
})
|
|
313
|
-
],
|
|
314
|
-
moduleIds: "deterministic",
|
|
315
|
-
chunkIds: watch ? "named" : "deterministic",
|
|
316
|
-
emitOnErrors: watch
|
|
317
|
-
},
|
|
318
|
-
plugins: [
|
|
319
|
-
new plugins_1.DedupeModuleResolvePlugin({ verbose: false }),
|
|
320
|
-
...watch ? [] : [
|
|
321
|
-
new license_webpack_plugin_1.LicenseWebpackPlugin({
|
|
322
|
-
stats: { warnings: false, errors: false },
|
|
323
|
-
perChunkOutput: false,
|
|
324
|
-
outputFilename: "3rdpartylicenses.txt",
|
|
325
|
-
skipChildCompilers: true
|
|
326
|
-
})
|
|
327
|
-
],
|
|
328
|
-
new CopyWebpackPlugin({
|
|
329
|
-
patterns: ["assets/"].map((item) => ({
|
|
330
|
-
context: this.rootPath,
|
|
331
|
-
to: item,
|
|
332
|
-
from: `src/${item}`,
|
|
333
|
-
noErrorOnMissing: true,
|
|
334
|
-
force: true,
|
|
335
|
-
globOptions: {
|
|
336
|
-
dot: true,
|
|
337
|
-
followSymbolicLinks: false,
|
|
338
|
-
ignore: [
|
|
339
|
-
".gitkeep",
|
|
340
|
-
"**/.DS_Store",
|
|
341
|
-
"**/Thumbs.db"
|
|
342
|
-
].map((i) => sd_core_node_1.PathUtil.posix(this.rootPath, i))
|
|
343
|
-
},
|
|
344
|
-
priority: 0
|
|
345
|
-
}))
|
|
346
|
-
}),
|
|
347
|
-
new webpack.EnvironmentPlugin({
|
|
348
|
-
SD_VERSION: this._getNpmConfig(this.rootPath).version,
|
|
349
|
-
...this.config.env
|
|
350
|
-
}),
|
|
351
|
-
...!this.skipProcesses.includes("lint") ? [
|
|
352
|
-
new ESLintWebpackPlugin({
|
|
353
|
-
context: this.rootPath,
|
|
354
|
-
eslintPath: path.resolve(this.projectRootPath, "node_modules", "eslint"),
|
|
355
|
-
extensions: ["js", "ts"],
|
|
356
|
-
exclude: ["node_modules"],
|
|
357
|
-
fix: false,
|
|
358
|
-
threads: false,
|
|
359
|
-
formatter: (results) => {
|
|
360
|
-
const resultMessages = [];
|
|
361
|
-
for (const result of results) {
|
|
362
|
-
for (const msg of result.messages) {
|
|
363
|
-
resultMessages.push(`${result.filePath}(${msg.line}, ${msg.column}): ${msg.ruleId ?? ""}: ${msg.severity === 1 ? "warning" : msg.severity === 2 ? "error" : ""} ${msg.message}`);
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
return resultMessages.join(os.EOL);
|
|
367
|
-
}
|
|
368
|
-
})
|
|
369
|
-
] : [],
|
|
370
|
-
new webpack.ProgressPlugin({
|
|
371
|
-
handler: (per, msg, ...args) => {
|
|
372
|
-
const phaseText = msg ? ` - phase: ${msg}` : "";
|
|
373
|
-
const argsText = args.length > 0 ? ` - args: [${args.join(", ")}]` : "";
|
|
374
|
-
this._logger.debug(`Webpack 빌드 수행중...(${Math.round(per * 100)}%)${phaseText}${argsText}`);
|
|
375
|
-
}
|
|
376
|
-
})
|
|
377
|
-
],
|
|
378
|
-
node: false,
|
|
379
|
-
externals: externalModuleNames,
|
|
380
|
-
stats: "errors-warnings"
|
|
381
|
-
};
|
|
382
|
-
}
|
|
383
|
-
_findAllInternalModuleCachePaths() {
|
|
384
|
-
return this._findAllNodeModules(this.rootPath, this.projectRootPath)
|
|
385
|
-
.mapMany((item) => (sd_core_node_1.FsUtil.readdir(item)
|
|
386
|
-
.filter((item1) => item1 !== "@simplysm")
|
|
387
|
-
.map((item1) => path.resolve(item, item1))));
|
|
388
|
-
}
|
|
389
|
-
_findAllNodeModules(from, root) {
|
|
390
|
-
const nodeModules = [];
|
|
391
|
-
let current = from;
|
|
392
|
-
while (current) {
|
|
393
|
-
const potential = path.join(current, "node_modules");
|
|
394
|
-
if (sd_core_node_1.FsUtil.exists(potential) && sd_core_node_1.FsUtil.isDirectory(potential)) {
|
|
395
|
-
nodeModules.push(potential);
|
|
396
|
-
}
|
|
397
|
-
if (current === root)
|
|
398
|
-
break;
|
|
399
|
-
const next = path.dirname(current);
|
|
400
|
-
if (next === current)
|
|
401
|
-
break;
|
|
402
|
-
current = next;
|
|
403
|
-
}
|
|
404
|
-
return nodeModules;
|
|
405
|
-
}
|
|
406
|
-
_findModulePath(moduleName, currentPath) {
|
|
407
|
-
const nodeModulesPaths = this._findAllNodeModules(currentPath, this.projectRootPath);
|
|
408
|
-
for (const nodeModulePath of nodeModulesPaths) {
|
|
409
|
-
const potential = path.join(nodeModulePath, moduleName);
|
|
410
|
-
if (sd_core_node_1.FsUtil.exists(potential)) {
|
|
411
|
-
return potential;
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
return undefined;
|
|
415
|
-
}
|
|
416
|
-
_findExternalModules(all) {
|
|
417
|
-
const loadedModuleNames = [];
|
|
418
|
-
const externalModules = [];
|
|
419
|
-
const fn = (currPath) => {
|
|
420
|
-
const npmConfig = this._getNpmConfig(currPath);
|
|
421
|
-
if (!npmConfig)
|
|
422
|
-
return;
|
|
423
|
-
for (const moduleName of Object.keys({
|
|
424
|
-
...npmConfig.dependencies,
|
|
425
|
-
...npmConfig.optionalDependencies
|
|
426
|
-
})) {
|
|
427
|
-
if (loadedModuleNames.includes(moduleName))
|
|
428
|
-
continue;
|
|
429
|
-
loadedModuleNames.push(moduleName);
|
|
430
|
-
const modulePath = this._findModulePath(moduleName, currPath);
|
|
431
|
-
if (sd_core_common_1.StringUtil.isNullOrEmpty(modulePath))
|
|
432
|
-
continue;
|
|
433
|
-
if (all
|
|
434
|
-
|| this.config.externalDependencies?.includes(moduleName)
|
|
435
|
-
|| sd_core_node_1.FsUtil.exists(path.resolve(modulePath, "binding.gyp"))) {
|
|
436
|
-
externalModules.push({ path: modulePath, name: moduleName });
|
|
437
|
-
}
|
|
438
|
-
fn(modulePath);
|
|
439
|
-
}
|
|
440
|
-
};
|
|
441
|
-
fn(this.rootPath);
|
|
442
|
-
return externalModules.distinct();
|
|
443
|
-
}
|
|
444
|
-
_getNpmConfig(rootPath) {
|
|
445
|
-
if (!this.npmConfigCache.has(rootPath)) {
|
|
446
|
-
this.npmConfigCache.set(rootPath, sd_core_node_1.FsUtil.readJson(path.resolve(rootPath, "package.json")));
|
|
447
|
-
}
|
|
448
|
-
return this.npmConfigCache.get(rootPath);
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
exports.SdCliServerBuilder = SdCliServerBuilder;
|
|
452
|
-
//# sourceMappingURL=SdCliServerBuilder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SdCliServerBuilder.js","sourceRoot":"","sources":["../../src/builders/SdCliServerBuilder.ts"],"names":[],"mappings":"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"}
|