@simplysm/sd-cli 7.0.37 → 7.0.41
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 +2 -2
- package/dist/bin/sd-cli.mjs +3 -1
- package/dist/build-tool/SdCliNgCacheCompilerHost.mjs +3 -3
- package/dist/builder/SdCliClientBuilder.d.ts +3 -3
- package/dist/builder/SdCliClientBuilder.mjs +157 -130
- package/dist/builder/SdCliJsLibBuilder.mjs +2 -2
- package/dist/builder/SdCliServerBuilder.mjs +6 -5
- package/dist/builder/SdCliTsLibBuilder.d.ts +1 -1
- package/dist/builder/SdCliTsLibBuilder.mjs +5 -5
- package/dist/commons.d.ts +5 -1
- package/dist/entry-points/SdCliLocalUpdate.mjs +15 -9
- package/dist/entry-points/SdCliPrepare.mjs +3 -2
- package/dist/entry-points/SdCliWorkspace.d.ts +1 -0
- package/dist/entry-points/SdCliWorkspace.mjs +47 -19
- package/dist/packages/SdCliPackage.d.ts +4 -4
- package/dist/packages/SdCliPackage.mjs +11 -10
- package/dist/utils/SdCliBuildResultUtil.mjs +4 -4
- package/package.json +10 -7
- package/src/bin/sd-cli.ts +2 -0
- package/src/build-tool/SdCliNgCacheCompilerHost.ts +3 -3
- package/src/builder/SdCliClientBuilder.ts +159 -132
- package/src/builder/SdCliJsLibBuilder.ts +2 -2
- package/src/builder/SdCliServerBuilder.ts +5 -6
- package/src/builder/SdCliTsLibBuilder.ts +5 -5
- package/src/commons.ts +6 -1
- package/src/entry-points/SdCliLocalUpdate.ts +14 -8
- package/src/entry-points/SdCliPrepare.ts +2 -1
- package/src/entry-points/SdCliWorkspace.ts +54 -21
- package/src/packages/SdCliPackage.ts +12 -11
- package/src/utils/SdCliBuildResultUtil.ts +3 -3
- package/tsconfig.json +1 -1
|
@@ -6,12 +6,13 @@ import { SdCliTsLibBuilder } from "../builder/SdCliTsLibBuilder";
|
|
|
6
6
|
import { SdCliJsLibBuilder } from "../builder/SdCliJsLibBuilder";
|
|
7
7
|
import { SdCliServerBuilder } from "../builder/SdCliServerBuilder";
|
|
8
8
|
import { SdCliNpmConfigUtil } from "../utils/SdCliNpmConfigUtil";
|
|
9
|
+
import { SdCliClientBuilder } from "../builder/SdCliClientBuilder";
|
|
9
10
|
export class SdCliPackage extends EventEmitter {
|
|
10
|
-
constructor(_workspaceRootPath, rootPath,
|
|
11
|
+
constructor(_workspaceRootPath, rootPath, config) {
|
|
11
12
|
super();
|
|
12
13
|
this._workspaceRootPath = _workspaceRootPath;
|
|
13
14
|
this.rootPath = rootPath;
|
|
14
|
-
this.
|
|
15
|
+
this.config = config;
|
|
15
16
|
const npmConfigFilePath = path.resolve(this.rootPath, "package.json");
|
|
16
17
|
this._npmConfig = FsUtil.readJson(npmConfigFilePath);
|
|
17
18
|
}
|
|
@@ -24,9 +25,6 @@ export class SdCliPackage extends EventEmitter {
|
|
|
24
25
|
get main() {
|
|
25
26
|
return this._npmConfig.main;
|
|
26
27
|
}
|
|
27
|
-
get type() {
|
|
28
|
-
return this._config.type;
|
|
29
|
-
}
|
|
30
28
|
get allDependencies() {
|
|
31
29
|
return [
|
|
32
30
|
...SdCliNpmConfigUtil.getDependencies(this._npmConfig).defaults,
|
|
@@ -55,7 +53,7 @@ export class SdCliPackage extends EventEmitter {
|
|
|
55
53
|
await FsUtil.writeJsonAsync(npmConfigFilePath, this._npmConfig, { space: 2 });
|
|
56
54
|
}
|
|
57
55
|
async watchAsync() {
|
|
58
|
-
await (await this._createBuilderAsync())
|
|
56
|
+
return await (await this._createBuilderAsync())
|
|
59
57
|
.on("change", () => {
|
|
60
58
|
this.emit("change");
|
|
61
59
|
})
|
|
@@ -68,7 +66,7 @@ export class SdCliPackage extends EventEmitter {
|
|
|
68
66
|
return await (await this._createBuilderAsync()).buildAsync();
|
|
69
67
|
}
|
|
70
68
|
async publishAsync() {
|
|
71
|
-
if (this.
|
|
69
|
+
if (this.config.type === "library" && this.config.publish === "npm") {
|
|
72
70
|
await SdProcess.spawnAsync("npm publish --quiet --access public", { cwd: this.rootPath });
|
|
73
71
|
}
|
|
74
72
|
}
|
|
@@ -77,12 +75,15 @@ export class SdCliPackage extends EventEmitter {
|
|
|
77
75
|
if (isTs) {
|
|
78
76
|
await this._genBuildTsconfigAsync();
|
|
79
77
|
}
|
|
80
|
-
if (this.
|
|
78
|
+
if (this.config.type === "library") {
|
|
81
79
|
// const isAngular = isTs && this.allDependencies.includes("@angular/core");
|
|
82
80
|
return isTs ? new SdCliTsLibBuilder(this.rootPath) : new SdCliJsLibBuilder(this.rootPath);
|
|
83
81
|
}
|
|
82
|
+
else if (this.config.type === "server") {
|
|
83
|
+
return new SdCliServerBuilder(this.rootPath, this.config, this._workspaceRootPath);
|
|
84
|
+
}
|
|
84
85
|
else {
|
|
85
|
-
return new
|
|
86
|
+
return new SdCliClientBuilder(this.rootPath, this.config, this._workspaceRootPath);
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
async _genBuildTsconfigAsync() {
|
|
@@ -96,4 +97,4 @@ export class SdCliPackage extends EventEmitter {
|
|
|
96
97
|
await FsUtil.writeJsonAsync(buildTsconfigFilePath, buildTsconfig, { space: 2 });
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlQYWNrYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhY2thZ2VzL1NkQ2xpUGFja2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUduRSxNQUFNLE9BQU8sWUFBYSxTQUFRLFlBQVk7SUFzQjVDLFlBQW9DLGtCQUEwQixFQUMzQixRQUFnQixFQUNoQixNQUEyQjtRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQUgwQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7UUFDM0IsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUc1RCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBMUJELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFB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
|
|
@@ -8,7 +8,7 @@ export class SdCliBuildResultUtil {
|
|
|
8
8
|
: undefined;
|
|
9
9
|
if (!severity)
|
|
10
10
|
return undefined;
|
|
11
|
-
const code =
|
|
11
|
+
const code = `TS${diag.code}`;
|
|
12
12
|
const message = ts.flattenDiagnosticMessageText(diag.messageText, os.EOL);
|
|
13
13
|
const filePath = diag.file ? path.resolve(diag.file.fileName) : undefined;
|
|
14
14
|
const position = diag.file && diag.start !== undefined ? diag.file.getLineAndCharacterOfPosition(diag.start) : undefined;
|
|
@@ -38,8 +38,8 @@ export class SdCliBuildResultUtil {
|
|
|
38
38
|
static _convertFromWebpackError(severity, err) {
|
|
39
39
|
return {
|
|
40
40
|
filePath: err.file,
|
|
41
|
-
line: err.loc["start"]
|
|
42
|
-
char: err.loc["start"]
|
|
41
|
+
line: err.file ? err.loc["start"]?.line : undefined,
|
|
42
|
+
char: err.file ? err.loc["start"]?.column : undefined,
|
|
43
43
|
code: err.name,
|
|
44
44
|
severity,
|
|
45
45
|
message: err.message
|
|
@@ -57,4 +57,4 @@ export class SdCliBuildResultUtil {
|
|
|
57
57
|
return str;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlCdWlsZFJlc3VsdFV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvU2RDbGlCdWlsZFJlc3VsdFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBSTdCLE1BQU0sT0FBTyxvQkFBb0I7SUFDeEIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQW1CO1FBQ2pELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTztZQUN0RSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUMzRCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFaEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRzFFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzFFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/sd-cli",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.41",
|
|
4
4
|
"description": "심플리즘 패키지 - CLI",
|
|
5
5
|
"author": "김석래",
|
|
6
6
|
"repository": {
|
|
@@ -43,17 +43,20 @@
|
|
|
43
43
|
"webpack-dev-middleware": "^5.3.1",
|
|
44
44
|
"webpack-hot-middleware": "^2.25.1",
|
|
45
45
|
"css-loader": "^6.6.0",
|
|
46
|
-
"
|
|
47
|
-
"sass-loader": "^12.4.0"
|
|
46
|
+
"resolve-url-loader": "^5.0.0",
|
|
47
|
+
"sass-loader": "^12.4.0",
|
|
48
|
+
"connect": "^3.7.0",
|
|
49
|
+
"node-polyfill-webpack-plugin": "^1.1.4"
|
|
48
50
|
},
|
|
49
51
|
"devDependencies": {
|
|
50
52
|
"@types/semver": "^7.3.9",
|
|
51
53
|
"@types/yargs": "^17.0.8",
|
|
52
|
-
"@types/webpack-hot-middleware": "^2.25.5"
|
|
54
|
+
"@types/webpack-hot-middleware": "^2.25.5",
|
|
55
|
+
"@types/connect": "^3.4.35"
|
|
53
56
|
},
|
|
54
57
|
"peerDependencies": {
|
|
55
|
-
"@simplysm/sd-core-common": "7.0.
|
|
56
|
-
"@simplysm/sd-core-node": "7.0.
|
|
57
|
-
"@simplysm/sd-service": "7.0.
|
|
58
|
+
"@simplysm/sd-core-common": "7.0.41",
|
|
59
|
+
"@simplysm/sd-core-node": "7.0.41",
|
|
60
|
+
"@simplysm/sd-service": "7.0.41"
|
|
58
61
|
}
|
|
59
62
|
}
|
package/src/bin/sd-cli.ts
CHANGED
|
@@ -145,6 +145,7 @@ const logger = Logger.get(["simplysm", "sd-cli", "bin", "sd-cli"]);
|
|
|
145
145
|
confFileRelPath: argv.config ?? "simplysm.json",
|
|
146
146
|
optNames: argv.options ?? []
|
|
147
147
|
});
|
|
148
|
+
process.exit(0);
|
|
148
149
|
}
|
|
149
150
|
else if (argv._[0] === "publish") {
|
|
150
151
|
await new SdCliWorkspace(process.cwd())
|
|
@@ -159,4 +160,5 @@ const logger = Logger.get(["simplysm", "sd-cli", "bin", "sd-cli"]);
|
|
|
159
160
|
}
|
|
160
161
|
})().catch((err) => {
|
|
161
162
|
logger.error(err);
|
|
163
|
+
process.exit(1);
|
|
162
164
|
});
|
|
@@ -17,7 +17,7 @@ export class SdCliNgCacheCompilerHost {
|
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
cacheCompilerHost["transformResource"] = async (data, context) => {
|
|
20
|
-
if (context.resourceFile || context.type !== "style") {
|
|
20
|
+
if (context.resourceFile != null || context.type !== "style") {
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -25,10 +25,10 @@ export class SdCliNgCacheCompilerHost {
|
|
|
25
25
|
if (cache.styleContent === undefined) {
|
|
26
26
|
cache.styleContent = (
|
|
27
27
|
await sass.compileStringAsync(data, {
|
|
28
|
-
url: new URL(context.containingFile + ".sd.scss"),
|
|
28
|
+
url: new URL((context.containingFile as string) + ".sd.scss"),
|
|
29
29
|
importer: {
|
|
30
30
|
findFileUrl: (url) => {
|
|
31
|
-
if (!url.startsWith("~")) return
|
|
31
|
+
if (!url.startsWith("~")) return pathToFileURL(url);
|
|
32
32
|
return new URL(url.substring(1), pathToFileURL("node_modules"));
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { INpmConfig,
|
|
1
|
+
import { INpmConfig, ISdCliClientPackageConfig, ISdCliPackageBuildResult } from "../commons";
|
|
2
2
|
import { EventEmitter } from "events";
|
|
3
3
|
import { FsUtil, Logger, PathUtil } from "@simplysm/sd-core-node";
|
|
4
4
|
import webpack from "webpack";
|
|
@@ -16,12 +16,15 @@ import CopyWebpackPlugin from "copy-webpack-plugin";
|
|
|
16
16
|
import MiniCssExtractPlugin from "mini-css-extract-plugin";
|
|
17
17
|
import { AngularWebpackPlugin } from "@ngtools/webpack";
|
|
18
18
|
import { IndexHtmlWebpackPlugin } from "@angular-devkit/build-angular/src/webpack/plugins/index-html-webpack-plugin";
|
|
19
|
-
import { createHash } from "crypto";
|
|
20
19
|
import { SassWorkerImplementation } from "@angular-devkit/build-angular/src/sass/sass-service";
|
|
21
20
|
import { HmrLoader } from "@angular-devkit/build-angular/src/webpack/plugins/hmr/hmr-loader";
|
|
22
21
|
import wdm from "webpack-dev-middleware";
|
|
23
22
|
import whm from "webpack-hot-middleware";
|
|
24
23
|
import { NextHandleFunction } from "connect";
|
|
24
|
+
import { LicenseWebpackPlugin } from "license-webpack-plugin";
|
|
25
|
+
import { Type } from "@angular-devkit/build-angular";
|
|
26
|
+
import NodePolyfillPlugin from "node-polyfill-webpack-plugin";
|
|
27
|
+
import { createHash } from "crypto";
|
|
25
28
|
|
|
26
29
|
export class SdCliClientBuilder extends EventEmitter {
|
|
27
30
|
private readonly _logger = Logger.get(["simplysm", "sd-cli", this.constructor.name]);
|
|
@@ -31,7 +34,7 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
31
34
|
private readonly _npmConfigMap = new Map<string, INpmConfig>();
|
|
32
35
|
|
|
33
36
|
public constructor(private readonly _rootPath: string,
|
|
34
|
-
private readonly _config:
|
|
37
|
+
private readonly _config: ISdCliClientPackageConfig,
|
|
35
38
|
private readonly _workspaceRootPath: string) {
|
|
36
39
|
super();
|
|
37
40
|
|
|
@@ -52,7 +55,7 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
52
55
|
await FsUtil.removeAsync(this._parsedTsconfig.options.outDir!);
|
|
53
56
|
|
|
54
57
|
// 빌드 준비
|
|
55
|
-
const webpackConfig = this.
|
|
58
|
+
const webpackConfig = this._getWebpackConfig(true);
|
|
56
59
|
const compiler = webpack(webpackConfig);
|
|
57
60
|
return await new Promise<NextHandleFunction[]>((resolve, reject) => {
|
|
58
61
|
compiler.hooks.watchRun.tapAsync(this.constructor.name, (args, callback) => {
|
|
@@ -96,7 +99,7 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
96
99
|
|
|
97
100
|
// 빌드
|
|
98
101
|
this._logger.debug("Webpack 빌드 수행...");
|
|
99
|
-
const webpackConfig = this.
|
|
102
|
+
const webpackConfig = this._getWebpackConfig(false);
|
|
100
103
|
const compiler = webpack(webpackConfig);
|
|
101
104
|
const buildResults = await new Promise<ISdCliPackageBuildResult[]>((resolve, reject) => {
|
|
102
105
|
compiler.run((err, stats) => {
|
|
@@ -116,9 +119,7 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
116
119
|
return buildResults;
|
|
117
120
|
}
|
|
118
121
|
|
|
119
|
-
private
|
|
120
|
-
console.log(watch);
|
|
121
|
-
|
|
122
|
+
private _getWebpackConfig(watch: boolean): webpack.Configuration {
|
|
122
123
|
const npmConfig = this._getNpmConfig(this._rootPath)!;
|
|
123
124
|
const pkgVersion = npmConfig.version;
|
|
124
125
|
|
|
@@ -132,8 +133,102 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
132
133
|
|
|
133
134
|
const sassImplementation = new SassWorkerImplementation();
|
|
134
135
|
|
|
136
|
+
const mainFilePath = path.resolve(this._rootPath, "src/main.ts");
|
|
137
|
+
const polyfillsFilePath = path.resolve(this._rootPath, "src/polyfills.ts");
|
|
138
|
+
const stylesFilePath = path.resolve(this._rootPath, "src/styles.scss");
|
|
139
|
+
|
|
135
140
|
return {
|
|
141
|
+
mode: watch ? "development" : "production",
|
|
142
|
+
devtool: false,
|
|
143
|
+
target: ["web", "es2015"],
|
|
144
|
+
profile: false,
|
|
145
|
+
resolve: {
|
|
146
|
+
roots: [this._rootPath],
|
|
147
|
+
extensions: [".ts", ".tsx", ".mjs", ".js"],
|
|
148
|
+
symlinks: true,
|
|
149
|
+
modules: [this._workspaceRootPath, "node_modules"],
|
|
150
|
+
mainFields: ["es2015", "browser", "module", "main"],
|
|
151
|
+
conditionNames: ["es2015", "..."]
|
|
152
|
+
},
|
|
153
|
+
resolveLoader: {
|
|
154
|
+
symlinks: true
|
|
155
|
+
},
|
|
156
|
+
context: this._workspaceRootPath,
|
|
157
|
+
entry: {
|
|
158
|
+
main: [
|
|
159
|
+
...watch ? [
|
|
160
|
+
`webpack-hot-middleware/client?path=${publicPath}__webpack_hmr&timeout=20000&reload=true&overlay=true`
|
|
161
|
+
] : [],
|
|
162
|
+
mainFilePath
|
|
163
|
+
],
|
|
164
|
+
...FsUtil.exists(polyfillsFilePath) ? { polyfills: polyfillsFilePath } : {},
|
|
165
|
+
...FsUtil.exists(stylesFilePath) ? { styles: stylesFilePath } : {}
|
|
166
|
+
},
|
|
167
|
+
output: {
|
|
168
|
+
uniqueName: pkgKey,
|
|
169
|
+
hashFunction: "xxhash64",
|
|
170
|
+
clean: true,
|
|
171
|
+
path: distPath,
|
|
172
|
+
publicPath,
|
|
173
|
+
filename: "[name].js",
|
|
174
|
+
chunkFilename: "[name].js",
|
|
175
|
+
libraryTarget: undefined,
|
|
176
|
+
crossOriginLoading: false,
|
|
177
|
+
trustedTypes: "angular#bundler",
|
|
178
|
+
scriptType: "module"
|
|
179
|
+
},
|
|
180
|
+
watch: false,
|
|
181
|
+
watchOptions: { poll: undefined, ignored: undefined },
|
|
182
|
+
performance: { hints: false },
|
|
183
|
+
ignoreWarnings: [
|
|
184
|
+
/Failed to parse source map from/,
|
|
185
|
+
/Add postcss as project dependency/,
|
|
186
|
+
/"@charset" must be the first rule in the file/
|
|
187
|
+
],
|
|
188
|
+
experiments: { backCompat: false, syncWebAssembly: true, asyncWebAssembly: true },
|
|
189
|
+
infrastructureLogging: { level: "error" },
|
|
190
|
+
stats: "errors-warnings",
|
|
191
|
+
cache: {
|
|
192
|
+
type: "filesystem",
|
|
193
|
+
profile: watch ? undefined : false,
|
|
194
|
+
cacheDirectory: path.resolve(cachePath, "angular-webpack"),
|
|
195
|
+
maxMemoryGenerations: 1,
|
|
196
|
+
name: createHash("sha1").update(pkgVersion).digest("hex")
|
|
197
|
+
},
|
|
198
|
+
node: false,
|
|
199
|
+
optimization: {
|
|
200
|
+
minimizer: [],
|
|
201
|
+
moduleIds: "deterministic",
|
|
202
|
+
chunkIds: watch ? "named" : "deterministic",
|
|
203
|
+
emitOnErrors: watch,
|
|
204
|
+
runtimeChunk: "single",
|
|
205
|
+
splitChunks: {
|
|
206
|
+
maxAsyncRequests: Infinity,
|
|
207
|
+
cacheGroups: {
|
|
208
|
+
default: {
|
|
209
|
+
chunks: "async",
|
|
210
|
+
minChunks: 2,
|
|
211
|
+
priority: 10
|
|
212
|
+
},
|
|
213
|
+
common: {
|
|
214
|
+
name: "common",
|
|
215
|
+
chunks: "async",
|
|
216
|
+
minChunks: 2,
|
|
217
|
+
enforce: true,
|
|
218
|
+
priority: 5
|
|
219
|
+
},
|
|
220
|
+
vendors: false,
|
|
221
|
+
defaultVendors: watch ? {
|
|
222
|
+
name: "vendor",
|
|
223
|
+
chunks: (chunk) => chunk.name === "main",
|
|
224
|
+
enforce: true,
|
|
225
|
+
test: /[\\/]node_modules[\\/]/
|
|
226
|
+
} : false
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
},
|
|
136
230
|
plugins: [
|
|
231
|
+
new NodePolyfillPlugin(),
|
|
137
232
|
new NamedChunksPlugin(),
|
|
138
233
|
new DedupeModuleResolvePlugin(),
|
|
139
234
|
/*new webpack.ProgressPlugin({
|
|
@@ -144,6 +239,14 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
144
239
|
}
|
|
145
240
|
}),*/
|
|
146
241
|
new CommonJsUsageWarnPlugin(),
|
|
242
|
+
...watch ? [] : [
|
|
243
|
+
new LicenseWebpackPlugin({
|
|
244
|
+
stats: { warnings: false, errors: false },
|
|
245
|
+
perChunkOutput: false,
|
|
246
|
+
outputFilename: "3rdpartylicenses.txt",
|
|
247
|
+
skipChildCompilers: true
|
|
248
|
+
})
|
|
249
|
+
],
|
|
147
250
|
new CopyWebpackPlugin({
|
|
148
251
|
patterns: [
|
|
149
252
|
...["favicon.ico", "assets/", "manifest.webmanifest"].map((item) => ({
|
|
@@ -165,26 +268,30 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
165
268
|
}))
|
|
166
269
|
]
|
|
167
270
|
}),
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
271
|
+
...watch ? [
|
|
272
|
+
new webpack.SourceMapDevToolPlugin({
|
|
273
|
+
filename: "[file].map",
|
|
274
|
+
include: [/js$/, /css$/],
|
|
275
|
+
sourceRoot: "webpack:///",
|
|
276
|
+
moduleFilenameTemplate: "[resource-path]",
|
|
277
|
+
append: undefined
|
|
278
|
+
})
|
|
279
|
+
] : [],
|
|
175
280
|
new AngularWebpackPlugin({
|
|
176
281
|
tsconfig: this._tsconfigFilePath,
|
|
177
282
|
compilerOptions: {
|
|
178
|
-
sourceMap:
|
|
283
|
+
sourceMap: watch,
|
|
179
284
|
declaration: false,
|
|
180
285
|
declarationMap: false,
|
|
181
286
|
preserveSymlinks: false
|
|
182
287
|
},
|
|
183
288
|
jitMode: false,
|
|
184
|
-
emitNgModuleScope:
|
|
289
|
+
emitNgModuleScope: watch,
|
|
185
290
|
inlineStyleFileExtension: "scss"
|
|
186
291
|
}),
|
|
187
|
-
new AnyComponentStyleBudgetChecker([]
|
|
292
|
+
new AnyComponentStyleBudgetChecker(watch ? [] : [
|
|
293
|
+
{ type: Type.AnyComponentStyle, maximumWarning: "2kb", maximumError: "4kb" }
|
|
294
|
+
]),
|
|
188
295
|
{
|
|
189
296
|
apply: (compiler: webpack.Compiler) => {
|
|
190
297
|
compiler.hooks.shutdown.tap("sass-worker", () => {
|
|
@@ -215,14 +322,16 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
215
322
|
},
|
|
216
323
|
postTransform: undefined,
|
|
217
324
|
optimization: {
|
|
218
|
-
scripts:
|
|
219
|
-
styles: { minify:
|
|
220
|
-
fonts: { inline:
|
|
325
|
+
scripts: !watch,
|
|
326
|
+
styles: { minify: !watch, inlineCritical: !watch },
|
|
327
|
+
fonts: { inline: !watch }
|
|
221
328
|
},
|
|
222
329
|
crossOrigin: "none",
|
|
223
330
|
lang: undefined
|
|
224
331
|
}),
|
|
225
|
-
|
|
332
|
+
...watch ? [
|
|
333
|
+
new webpack.HotModuleReplacementPlugin()
|
|
334
|
+
] : []
|
|
226
335
|
] as any[],
|
|
227
336
|
module: {
|
|
228
337
|
strictExportPresence: true,
|
|
@@ -235,7 +344,7 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
235
344
|
},
|
|
236
345
|
{
|
|
237
346
|
test: /[/\\]rxjs[/\\]add[/\\].+\.js$/,
|
|
238
|
-
sideEffects: true
|
|
347
|
+
sideEffects: true
|
|
239
348
|
},
|
|
240
349
|
{
|
|
241
350
|
test: /\.[cm]?[tj]sx?$/,
|
|
@@ -248,26 +357,28 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
248
357
|
cacheDirectory: path.resolve(cachePath, "babel-webpack"),
|
|
249
358
|
scriptTarget: ts.ScriptTarget.ES2017,
|
|
250
359
|
aot: true,
|
|
251
|
-
optimize:
|
|
360
|
+
optimize: !watch,
|
|
252
361
|
instrumentCode: undefined
|
|
253
362
|
}
|
|
254
363
|
}
|
|
255
|
-
]
|
|
364
|
+
]
|
|
256
365
|
},
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
366
|
+
...watch ? [
|
|
367
|
+
{
|
|
368
|
+
test: /\.[cm]?jsx?$/,
|
|
369
|
+
enforce: "pre" as const,
|
|
370
|
+
loader: "source-map-loader",
|
|
371
|
+
options: {
|
|
372
|
+
filterSourceMappingUrl: (mapUri: string, resourcePath: string) => {
|
|
373
|
+
return !resourcePath.includes("node_modules") || (/@simplysm[\\/]sd/).test(resourcePath);
|
|
374
|
+
}
|
|
264
375
|
}
|
|
265
376
|
}
|
|
266
|
-
|
|
377
|
+
] : [],
|
|
267
378
|
{
|
|
268
379
|
test: /\.[cm]?tsx?$/,
|
|
269
380
|
loader: "@ngtools/webpack",
|
|
270
|
-
exclude: [/[/\\](?:css-loader|mini-css-extract-plugin|webpack-dev-server|webpack)[/\\]/]
|
|
381
|
+
exclude: [/[/\\](?:css-loader|mini-css-extract-plugin|webpack-dev-server|webpack)[/\\]/]
|
|
271
382
|
},
|
|
272
383
|
{
|
|
273
384
|
test: /\.css$/i,
|
|
@@ -285,22 +396,23 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
285
396
|
},
|
|
286
397
|
{
|
|
287
398
|
loader: "css-loader",
|
|
288
|
-
options: { url: false, sourceMap:
|
|
399
|
+
options: { url: false, sourceMap: watch }
|
|
289
400
|
}
|
|
290
401
|
],
|
|
291
|
-
include:
|
|
402
|
+
include: [stylesFilePath],
|
|
292
403
|
resourceQuery: { not: [/\?ngResource/] }
|
|
293
404
|
},
|
|
294
405
|
{
|
|
295
|
-
type: "asset/source"
|
|
406
|
+
type: "asset/source",
|
|
407
|
+
resourceQuery: /\?ngResource/
|
|
296
408
|
}
|
|
297
409
|
]
|
|
298
410
|
},
|
|
299
411
|
{
|
|
300
412
|
use: [
|
|
301
413
|
{
|
|
302
|
-
loader: "
|
|
303
|
-
options: { sourceMap:
|
|
414
|
+
loader: "resolve-url-loader",
|
|
415
|
+
options: { sourceMap: watch }
|
|
304
416
|
},
|
|
305
417
|
{
|
|
306
418
|
loader: "sass-loader",
|
|
@@ -313,7 +425,7 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
313
425
|
includePaths: [],
|
|
314
426
|
outputStyle: "expanded",
|
|
315
427
|
quietDeps: true,
|
|
316
|
-
verbose: undefined
|
|
428
|
+
verbose: watch ? undefined : false
|
|
317
429
|
}
|
|
318
430
|
}
|
|
319
431
|
}
|
|
@@ -321,99 +433,14 @@ export class SdCliClientBuilder extends EventEmitter {
|
|
|
321
433
|
}
|
|
322
434
|
]
|
|
323
435
|
},
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
]
|
|
329
|
-
},
|
|
330
|
-
mode: "development",
|
|
331
|
-
devtool: false,
|
|
332
|
-
target: ["web", "es2015"],
|
|
333
|
-
profile: false,
|
|
334
|
-
resolve: {
|
|
335
|
-
roots: [this._rootPath],
|
|
336
|
-
extensions: [".ts", ".tsx", ".mjs", ".js"],
|
|
337
|
-
symlinks: true,
|
|
338
|
-
modules: [this._workspaceRootPath, "node_modules"],
|
|
339
|
-
mainFields: ["es2015", "browser", "module", "main"],
|
|
340
|
-
conditionNames: ["es2015", "..."]
|
|
341
|
-
},
|
|
342
|
-
resolveLoader: {
|
|
343
|
-
symlinks: true
|
|
344
|
-
},
|
|
345
|
-
context: this._workspaceRootPath,
|
|
346
|
-
entry: {
|
|
347
|
-
main: [
|
|
348
|
-
`webpack-hot-middleware/client?path=${publicPath}__webpack_hmr&timeout=20000&reload=true&overlay=true`,
|
|
349
|
-
path.resolve(this._rootPath, "src/main.ts")
|
|
350
|
-
],
|
|
351
|
-
polyfills: [path.resolve(this._rootPath, "src/polyfills.ts")],
|
|
352
|
-
styles: [path.resolve(this._rootPath, "src/styles.scss")]
|
|
353
|
-
},
|
|
354
|
-
output: {
|
|
355
|
-
uniqueName: pkgKey,
|
|
356
|
-
hashFunction: "xxhash64",
|
|
357
|
-
clean: true,
|
|
358
|
-
path: distPath,
|
|
359
|
-
publicPath,
|
|
360
|
-
filename: "[name].js",
|
|
361
|
-
chunkFilename: "[name].js",
|
|
362
|
-
libraryTarget: undefined,
|
|
363
|
-
crossOriginLoading: false,
|
|
364
|
-
trustedTypes: "angular#bundler",
|
|
365
|
-
scriptType: "module",
|
|
366
|
-
},
|
|
367
|
-
watch: false,
|
|
368
|
-
watchOptions: { poll: undefined, ignored: undefined },
|
|
369
|
-
performance: { hints: false },
|
|
370
|
-
ignoreWarnings: [
|
|
371
|
-
/Failed to parse source map from/,
|
|
372
|
-
/Add postcss as project dependency/,
|
|
373
|
-
/"@charset" must be the first rule in the file/,
|
|
374
|
-
],
|
|
375
|
-
experiments: { backCompat: false, syncWebAssembly: true, asyncWebAssembly: true },
|
|
376
|
-
infrastructureLogging: { level: "error" },
|
|
377
|
-
stats: "errors-warnings",
|
|
378
|
-
cache: {
|
|
379
|
-
type: "filesystem",
|
|
380
|
-
profile: undefined,
|
|
381
|
-
cacheDirectory: path.resolve(cachePath, "angular-webpack"),
|
|
382
|
-
maxMemoryGenerations: 1,
|
|
383
|
-
name: createHash("sha1").update(pkgVersion).digest("hex")
|
|
384
|
-
},
|
|
385
|
-
optimization: {
|
|
386
|
-
minimizer: [],
|
|
387
|
-
moduleIds: "deterministic",
|
|
388
|
-
chunkIds: "named",
|
|
389
|
-
emitOnErrors: false,
|
|
390
|
-
runtimeChunk: "single",
|
|
391
|
-
splitChunks: {
|
|
392
|
-
maxAsyncRequests: Infinity,
|
|
393
|
-
cacheGroups: {
|
|
394
|
-
default: {
|
|
395
|
-
chunks: "async",
|
|
396
|
-
minChunks: 2,
|
|
397
|
-
priority: 10
|
|
398
|
-
},
|
|
399
|
-
common: {
|
|
400
|
-
name: "common",
|
|
401
|
-
chunks: "async",
|
|
402
|
-
minChunks: 2,
|
|
403
|
-
enforce: true,
|
|
404
|
-
priority: 5
|
|
405
|
-
},
|
|
406
|
-
vendors: false,
|
|
407
|
-
defaultVendors: {
|
|
408
|
-
name: "vendor",
|
|
409
|
-
chunks: (chunk) => chunk.name === "main",
|
|
410
|
-
enforce: true,
|
|
411
|
-
test: /[\\/]node_modules[\\/]/
|
|
436
|
+
...watch ? [
|
|
437
|
+
{
|
|
438
|
+
loader: HmrLoader,
|
|
439
|
+
include: [mainFilePath]
|
|
412
440
|
}
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
}
|
|
416
|
-
node: false
|
|
441
|
+
] : []
|
|
442
|
+
]
|
|
443
|
+
}
|
|
417
444
|
};
|
|
418
445
|
}
|
|
419
446
|
|
|
@@ -25,9 +25,9 @@ export class SdCliJsLibBuilder extends EventEmitter {
|
|
|
25
25
|
|
|
26
26
|
const relatedPaths = await this.getRelatedPathsAsync();
|
|
27
27
|
const watcher = SdFsWatcher.watch(relatedPaths);
|
|
28
|
-
watcher.onChange(async (changeInfos) => {
|
|
28
|
+
watcher.onChange({}, async (changeInfos) => {
|
|
29
29
|
const changeFilePaths = changeInfos.filter((item) => ["add", "change", "unlink"].includes(item.event)).map((item) => item.path);
|
|
30
|
-
if(changeFilePaths.length === 0) return;
|
|
30
|
+
if (changeFilePaths.length === 0) return;
|
|
31
31
|
|
|
32
32
|
this._logger.debug("파일 변경 감지", changeInfos);
|
|
33
33
|
this.emit("change");
|