@simplysm/sd-cli 7.0.66 → 7.0.77

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 (53) hide show
  1. package/.eslintrc.cjs +3 -0
  2. package/dist/bin/sd-cli.mjs +62 -6
  3. package/dist/build-tool/SdCliCordova.d.ts +1 -1
  4. package/dist/build-tool/SdCliCordova.mjs +40 -27
  5. package/dist/build-tool/SdCliNgCacheCompilerHost.d.ts +1 -0
  6. package/dist/build-tool/SdCliNgCacheCompilerHost.mjs +11 -4
  7. package/dist/build-tool/SdCliPackageLinter.mjs +9 -5
  8. package/dist/builder/SdCliClientBuilder.d.ts +1 -0
  9. package/dist/builder/SdCliClientBuilder.mjs +45 -37
  10. package/dist/builder/SdCliJsLibBuilder.mjs +3 -3
  11. package/dist/builder/SdCliServerBuilder.d.ts +0 -1
  12. package/dist/builder/SdCliServerBuilder.mjs +39 -54
  13. package/dist/builder/SdCliTsLibBuilder.d.ts +1 -0
  14. package/dist/builder/SdCliTsLibBuilder.mjs +19 -7
  15. package/dist/commons.d.ts +18 -4
  16. package/dist/entry-points/SdCliFileCrypto.d.ts +7 -0
  17. package/dist/entry-points/SdCliFileCrypto.mjs +72 -0
  18. package/dist/entry-points/SdCliLocalUpdate.mjs +3 -3
  19. package/dist/entry-points/SdCliPrepare.mjs +3 -3
  20. package/dist/entry-points/SdCliWorkspace.d.ts +3 -0
  21. package/dist/entry-points/SdCliWorkspace.mjs +57 -37
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.mjs +2 -1
  24. package/dist/ng-tools/SdCliNgModuleGenerator.d.ts +2 -0
  25. package/dist/ng-tools/SdCliNgModuleGenerator.mjs +97 -18
  26. package/dist/ng-tools/babel/SdCliBbFileMetadata.d.ts +1 -1
  27. package/dist/ng-tools/babel/SdCliBbFileMetadata.mjs +4 -4
  28. package/dist/ng-tools/babel/TSdCliBbNgMetadata.mjs +6 -6
  29. package/dist/ng-tools/typescript/SdCliTsFileMetadata.mjs +2 -3
  30. package/dist/packages/SdCliPackage.mjs +52 -5
  31. package/dist/utils/SdCliBuildResultUtil.mjs +4 -1
  32. package/package.json +7 -9
  33. package/src/bin/sd-cli.ts +77 -6
  34. package/src/build-tool/SdCliCordova.ts +43 -26
  35. package/src/build-tool/SdCliNgCacheCompilerHost.ts +19 -11
  36. package/src/build-tool/SdCliPackageLinter.ts +8 -4
  37. package/src/builder/SdCliClientBuilder.ts +42 -32
  38. package/src/builder/SdCliJsLibBuilder.ts +2 -2
  39. package/src/builder/SdCliServerBuilder.ts +37 -51
  40. package/src/builder/SdCliTsLibBuilder.ts +22 -6
  41. package/src/commons.ts +21 -2
  42. package/src/entry-points/SdCliFileCrypto.ts +87 -0
  43. package/src/entry-points/SdCliLocalUpdate.ts +2 -2
  44. package/src/entry-points/SdCliPrepare.ts +2 -2
  45. package/src/entry-points/SdCliWorkspace.ts +59 -41
  46. package/src/index.ts +1 -0
  47. package/src/ng-tools/SdCliNgModuleGenerator.ts +119 -17
  48. package/src/ng-tools/babel/SdCliBbFileMetadata.ts +5 -5
  49. package/src/ng-tools/babel/TSdCliBbNgMetadata.ts +5 -5
  50. package/src/ng-tools/typescript/SdCliTsFileMetadata.ts +1 -2
  51. package/src/packages/SdCliPackage.ts +55 -4
  52. package/src/utils/SdCliBuildResultUtil.ts +4 -0
  53. package/tsconfig.json +3 -0
@@ -1,12 +1,14 @@
1
1
  import path from "path";
2
- import { FsUtil, SdProcess } from "@simplysm/sd-core-node";
2
+ import { FsUtil, PathUtil, SdProcess } from "@simplysm/sd-core-node";
3
3
  import { EventEmitter } from "events";
4
- import { ObjectUtil } from "@simplysm/sd-core-common";
4
+ import { NeverEntryError, ObjectUtil, StringUtil } from "@simplysm/sd-core-common";
5
5
  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
9
  import { SdCliClientBuilder } from "../builder/SdCliClientBuilder";
10
+ import { SdStorage } from "@simplysm/sd-storage";
11
+ import ts from "typescript";
10
12
  export class SdCliPackage extends EventEmitter {
11
13
  constructor(_workspaceRootPath, rootPath, config) {
12
14
  super();
@@ -66,8 +68,53 @@ export class SdCliPackage extends EventEmitter {
66
68
  return await (await this._createBuilderAsync()).buildAsync();
67
69
  }
68
70
  async publishAsync() {
69
- if (this.config.type === "library" && this.config.publish === "npm") {
70
- await SdProcess.spawnAsync("npm publish --quiet --access public", { cwd: this.rootPath });
71
+ if (this.config.publish !== undefined) {
72
+ if (this.config.type === "library") {
73
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
74
+ if (this.config.publish === "npm") {
75
+ await SdProcess.spawnAsync("npm publish --quiet --access public", { cwd: this.rootPath });
76
+ }
77
+ else {
78
+ throw new NeverEntryError();
79
+ }
80
+ }
81
+ else {
82
+ if (this.config.publish.type === "ftp" || this.config.publish.type === "ftps" || this.config.publish.type === "sftp") {
83
+ const tsconfigPath = path.resolve(this.rootPath, "tsconfig-build.json");
84
+ const tsconfig = FsUtil.readJson(tsconfigPath);
85
+ const parsedTsconfig = ts.parseJsonConfigFileContent(tsconfig, ts.sys, this.rootPath, tsconfig.angularCompilerOptions);
86
+ const ftp = await SdStorage.connectAsync(this.config.publish.type, {
87
+ host: this.config.publish.host,
88
+ port: this.config.publish.port,
89
+ user: this.config.publish.user,
90
+ pass: this.config.publish.pass
91
+ });
92
+ await ftp.uploadDirAsync(parsedTsconfig.options.outDir, this.config.publish.path);
93
+ await ftp.closeAsync();
94
+ }
95
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
96
+ else if (this.config.publish.type === "local-directory") {
97
+ const tsconfigPath = path.resolve(this.rootPath, "tsconfig-build.json");
98
+ const tsconfig = FsUtil.readJson(tsconfigPath);
99
+ const parsedTsconfig = ts.parseJsonConfigFileContent(tsconfig, ts.sys, this.rootPath, tsconfig.angularCompilerOptions);
100
+ const targetRootPath = this.config.publish.path.replace(/%([^%]*)%/g, (item) => {
101
+ const envName = item.replace(/%/g, "");
102
+ if (!StringUtil.isNullOrEmpty(this._npmConfig.version) && envName === "SD_VERSION") {
103
+ return this._npmConfig.version;
104
+ }
105
+ return process.env[envName] ?? item;
106
+ });
107
+ const filePaths = await FsUtil.globAsync(path.resolve(this.rootPath, "**", "*"), {
108
+ dot: true,
109
+ nodir: true
110
+ });
111
+ await filePaths.parallelAsync(async (filePath) => {
112
+ const relativeFilePath = path.relative(parsedTsconfig.options.outDir, filePath);
113
+ const targetPath = PathUtil.posix(targetRootPath, relativeFilePath);
114
+ await FsUtil.copyAsync(filePath, targetPath);
115
+ });
116
+ }
117
+ }
71
118
  }
72
119
  }
73
120
  async _createBuilderAsync() {
@@ -97,4 +144,4 @@ export class SdCliPackage extends EventEmitter {
97
144
  await FsUtil.writeJsonAsync(buildTsconfigFilePath, buildTsconfig, { space: 2 });
98
145
  }
99
146
  }
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlQYWNrYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhY2thZ2VzL1NkQ2xpUGFja2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUduRSxNQUFNLE9BQU8sWUFBYSxTQUFRLFlBQVk7SUFzQjVDLFlBQW9DLGtCQUEwQixFQUMzQixRQUFnQixFQUNoQixNQUEyQjtRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQUgwQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7UUFDM0IsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUc1RCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBMUJELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFB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
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlQYWNrYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhY2thZ2VzL1NkQ2xpUGFja2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxZQUFhLFNBQVEsWUFBWTtJQXNCNUMsWUFBb0Msa0JBQTBCLEVBQzNCLFFBQWdCLEVBQ2hCLE1BQTJCO1FBQzVELEtBQUssRUFBRSxDQUFDO1FBSDBCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBRzVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxVQUFV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
@@ -46,6 +46,9 @@ export class SdCliBuildResultUtil {
46
46
  };
47
47
  }
48
48
  static getMessage(result) {
49
+ if (result.code === "ESLintError") {
50
+ return result.message;
51
+ }
49
52
  let str = "";
50
53
  if (result.filePath !== undefined) {
51
54
  str += `${result.filePath}(${result.line ?? 0}, ${result.char ?? 0}): `;
@@ -57,4 +60,4 @@ export class SdCliBuildResultUtil {
57
60
  return str;
58
61
  }
59
62
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlCdWlsZFJlc3VsdFV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvU2RDbGlCdWlsZFJlc3VsdFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFJeEIsTUFBTSxPQUFPLG9CQUFvQjtJQUN4QixNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBbUI7UUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3RFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzNELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVoQyxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFHMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIs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
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.66",
3
+ "version": "7.0.77",
4
4
  "description": "심플리즘 패키지 - CLI",
5
5
  "author": "김석래",
6
6
  "repository": {
@@ -49,10 +49,14 @@
49
49
  "chokidar": "^3.5.3",
50
50
  "@babel/parser": "^7.17.0",
51
51
  "@babel/types": "^7.17.0",
52
- "babel-loader": "^8.2.3",
53
52
  "jsdom": "^19.0.0",
54
53
  "cordova": "^11.0.0",
55
- "jszip": "^3.7.1"
54
+ "jszip": "^3.7.1",
55
+ "@simplysm/sd-core-common": "7.0.77",
56
+ "@simplysm/sd-core-node": "7.0.77",
57
+ "@simplysm/sd-service-common": "7.0.77",
58
+ "@simplysm/sd-service-server": "7.0.77",
59
+ "@simplysm/sd-storage": "7.0.77"
56
60
  },
57
61
  "devDependencies": {
58
62
  "@types/semver": "^7.3.9",
@@ -61,11 +65,5 @@
61
65
  "@types/connect": "^3.4.35",
62
66
  "@types/source-map-support": "^0.5.4",
63
67
  "@types/jsdom": "^16.2.14"
64
- },
65
- "peerDependencies": {
66
- "@simplysm/sd-core-common": "7.0.66",
67
- "@simplysm/sd-core-node": "7.0.66",
68
- "@simplysm/sd-service-common": "7.0.66",
69
- "@simplysm/sd-service-server": "7.0.66"
70
68
  }
71
69
  }
package/src/bin/sd-cli.ts CHANGED
@@ -5,11 +5,10 @@ import { hideBin } from "yargs/helpers";
5
5
  import { Logger, LoggerSeverity } from "@simplysm/sd-core-node";
6
6
  import { SdCliWorkspace } from "../entry-points/SdCliWorkspace";
7
7
  import { SdCliLocalUpdate } from "../entry-points/SdCliLocalUpdate";
8
- // import sourceMapSupport from "source-map-support";
9
8
  import { SdCliNpm } from "../entry-points/SdCliNpm";
10
9
  import { SdCliPrepare } from "../entry-points/SdCliPrepare";
11
-
12
- // sourceMapSupport.install();
10
+ import { SdCliFileCrypto } from "../entry-points/SdCliFileCrypto";
11
+ import { SdCliCordova } from "../build-tool/SdCliCordova";
13
12
 
14
13
  Error.stackTraceLimit = Infinity;
15
14
 
@@ -58,9 +57,34 @@ const argv = yargs(hideBin(process.argv))
58
57
  type: "string",
59
58
  array: true,
60
59
  describe: "옵션 설정 (설정파일에서 @로 시작하는 부분)"
60
+ },
61
+ packages: {
62
+ type: "string",
63
+ array: true,
64
+ describe: "수행할 패키지 설정"
61
65
  }
62
66
  })
63
67
  )
68
+ .command(
69
+ "run-device <cordovaPath> <platform> <url>",
70
+ "변경감지중인 플랫폼을 디바이스에 앱 형태로 띄웁니다.",
71
+ (cmd) => cmd
72
+ .positional("cordovaPath", {
73
+ type: "string",
74
+ describe: "CORDOVA 프로젝트 경로",
75
+ demandOption: true
76
+ })
77
+ .positional("platform", {
78
+ type: "string",
79
+ describe: "빌드 플랫폼(android,...)",
80
+ demandOption: true
81
+ })
82
+ .positional("url", {
83
+ type: "string",
84
+ describe: "Webview로 오픈할 URL",
85
+ demandOption: true
86
+ })
87
+ )
64
88
  .command(
65
89
  "build",
66
90
  "프로젝트의 각 패키지에 대한 빌드를 수행합니다.",
@@ -74,6 +98,11 @@ const argv = yargs(hideBin(process.argv))
74
98
  type: "string",
75
99
  array: true,
76
100
  describe: "옵션 설정 (설정파일에서 @로 시작하는 부분)"
101
+ },
102
+ packages: {
103
+ type: "string",
104
+ array: true,
105
+ describe: "수행할 패키지 설정"
77
106
  }
78
107
  })
79
108
  )
@@ -95,9 +124,32 @@ const argv = yargs(hideBin(process.argv))
95
124
  type: "string",
96
125
  array: true,
97
126
  describe: "옵션 설정 (설정파일에서 @로 시작하는 부분)"
127
+ },
128
+ packages: {
129
+ type: "string",
130
+ array: true,
131
+ describe: "수행할 패키지 설정"
98
132
  }
99
133
  })
100
134
  )
135
+ .command(
136
+ "enc-file <file>",
137
+ "파일을 암호화 합니다.",
138
+ (cmd) => cmd.version(false)
139
+ .positional("file", {
140
+ type: "string",
141
+ describe: "암호화할 파일명"
142
+ })
143
+ )
144
+ .command(
145
+ "dec-file <file>",
146
+ "파일을 복호화 합니다.",
147
+ (cmd) => cmd.version(false)
148
+ .positional("file", {
149
+ type: "string",
150
+ describe: "암호화된 파일명"
151
+ })
152
+ )
101
153
  .parseSync();
102
154
 
103
155
  if (argv.debug) {
@@ -136,14 +188,23 @@ const logger = Logger.get(["simplysm", "sd-cli", "bin", "sd-cli"]);
136
188
  await new SdCliWorkspace(process.cwd())
137
189
  .watchAsync({
138
190
  confFileRelPath: argv.config ?? "simplysm.json",
139
- optNames: argv.options ?? []
191
+ optNames: argv.options ?? [],
192
+ pkgs: argv.packages ?? []
140
193
  });
141
194
  }
195
+ else if (argv._[0] === "run-device") {
196
+ await SdCliCordova.runWebviewOnDeviceAsync(
197
+ argv.cordovaPath,
198
+ argv.platform as "browser" | "ios" | "android" | "electron",
199
+ argv.url
200
+ );
201
+ }
142
202
  else if (argv._[0] === "build") {
143
203
  await new SdCliWorkspace(process.cwd())
144
204
  .buildAsync({
145
205
  confFileRelPath: argv.config ?? "simplysm.json",
146
- optNames: argv.options ?? []
206
+ optNames: argv.options ?? [],
207
+ pkgs: argv.packages ?? []
147
208
  });
148
209
  process.exit(0);
149
210
  }
@@ -152,8 +213,18 @@ const logger = Logger.get(["simplysm", "sd-cli", "bin", "sd-cli"]);
152
213
  .publishAsync({
153
214
  noBuild: argv.noBuild,
154
215
  confFileRelPath: argv.config ?? "simplysm.json",
155
- optNames: argv.options ?? []
216
+ optNames: argv.options ?? [],
217
+ pkgs: argv.packages ?? []
156
218
  });
219
+ if (!argv.noBuild) {
220
+ process.exit(0);
221
+ }
222
+ }
223
+ else if (argv._[0] === "enc-file") {
224
+ await new SdCliFileCrypto().encryptAsync(argv.file!);
225
+ }
226
+ else if (argv._[0] === "dec-file") {
227
+ await new SdCliFileCrypto().decryptAsync(argv.file!);
157
228
  }
158
229
  else {
159
230
  throw new Error(`명령어가 잘못 되었습니다.\n\t${argv._[0]}\n`);
@@ -29,7 +29,7 @@ export class SdCliCordova {
29
29
 
30
30
  public async initializeAsync(): Promise<void> {
31
31
  if (FsUtil.exists(this.cordovaPath)) {
32
- this._logger.log("미리 생성되어있는 '.cordova'를 사용합니다.");
32
+ this._logger.log("이미 생성되어있는 '.cordova'를 사용합니다.");
33
33
  }
34
34
  else {
35
35
  await this._execAsync(`${this._binPath} telemetry on`, this._rootPath);
@@ -54,9 +54,13 @@ export class SdCliCordova {
54
54
 
55
55
  // 미설치 플러그인들 설치
56
56
  if (this._config.plugins) {
57
- const pluginsFetch = await FsUtil.readJsonAsync(path.resolve(this.cordovaPath, "plugins/fetch.json"));
58
- const alreadyPlugins = Object.values(pluginsFetch)
59
- .map((item: any) => (item.source.id !== undefined ? item.source.id.replace(/@.*$/, "") : item.source.url));
57
+ const pluginsFetch = FsUtil.exists(path.resolve(this.cordovaPath, "plugins/fetch.json"))
58
+ ? await FsUtil.readJsonAsync(path.resolve(this.cordovaPath, "plugins/fetch.json"))
59
+ : undefined;
60
+ const alreadyPlugins = pluginsFetch != undefined
61
+ ? Object.values(pluginsFetch)
62
+ .map((item: any) => (item.source.id !== undefined ? item.source.id.replace(/@.*$/, "") : item.source.url))
63
+ : [];
60
64
 
61
65
  for (const plugin of this._config.plugins.distinct()) {
62
66
  if (!alreadyPlugins.includes(plugin)) {
@@ -91,26 +95,38 @@ export class SdCliCordova {
91
95
  }
92
96
 
93
97
  // CONFIG: ANDROID usesCleartextTraffic 설정
94
- // if (this._config.targets.includes("android")) {
95
- // if (!configFileContent.includes("xmlns:android=\"http://schemas.android.com/apk/res/android\"")) {
96
- // configFileContent = configFileContent.replace(
97
- // "xmlns=\"http://www.w3.org/ns/widgets\"",
98
- // `xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android"`
99
- // );
100
- // }
101
- // if (!configFileContent.includes("application android:usesCleartextTraffic=\"true\" />")) {
102
- // configFileContent = configFileContent.replace("<platform name=\"android\">", `<platform name="android">
103
- // <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
104
- // <application android:usesCleartextTraffic="true" />
105
- // </edit-config>`);
106
- // }
107
- // }
98
+ if (this._config.platforms.includes("android")) {
99
+ if (!configFileContent.includes("xmlns:android=\"http://schemas.android.com/apk/res/android\"")) {
100
+ configFileContent = configFileContent.replace(
101
+ "xmlns=\"http://www.w3.org/ns/widgets\"",
102
+ `xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android"`
103
+ );
104
+ }
105
+ if (!configFileContent.includes("application android:usesCleartextTraffic=\"true\" />")) {
106
+ if (configFileContent.includes("<platform name=\"android\">")) {
107
+ configFileContent = configFileContent.replace("<platform name=\"android\">", `<platform name="android">
108
+ <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
109
+ <application android:usesCleartextTraffic="true" />
110
+ </edit-config>`);
111
+ }
112
+ else {
113
+ configFileContent = configFileContent.replace("<content src=\"index.html\" />", `<content src="index.html" />
114
+ <platform name="android">
115
+ <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
116
+ <application android:usesCleartextTraffic="true" />
117
+ </edit-config>
118
+ </platform>`);
119
+ }
120
+ }
121
+ }
108
122
 
109
123
  // CONFIG: 파일쓰기
110
124
  await FsUtil.writeFileAsync(configFilePath, configFileContent);
111
125
  }
112
126
 
113
127
  public async buildAsync(outPath: string): Promise<void> {
128
+ const packageType = this._config.buildOption?.bundle ? "bundle" : "apk";
129
+
114
130
  // ANDROID 서명 처리
115
131
  if (this._config.buildOption?.sign?.android) {
116
132
  await FsUtil.copyAsync(
@@ -126,7 +142,8 @@ export class SdCliCordova {
126
142
  storePassword: this._config.buildOption.sign.android.storePassword,
127
143
  alias: this._config.buildOption.sign.android.alias,
128
144
  password: this._config.buildOption.sign.android.password,
129
- keystoreType: this._config.buildOption.sign.android.keystoreType
145
+ keystoreType: this._config.buildOption.sign.android.keystoreType,
146
+ packageType
130
147
  }
131
148
  }
132
149
  }
@@ -149,7 +166,6 @@ export class SdCliCordova {
149
166
 
150
167
  // 실행
151
168
  const buildType = this._config.buildOption?.debug ? "debug" : "release";
152
- const packageType = this._config.buildOption?.bundle ? "bundle" : "apk";
153
169
  for (const platform of this.platforms) {
154
170
  await this._execAsync(`${this._binPath} build ${platform} --${buildType} --packageType=${packageType}`, this.cordovaPath);
155
171
  }
@@ -194,13 +210,13 @@ export class SdCliCordova {
194
210
  await FsUtil.writeFileAsync(path.resolve(outPath, "updates/", zipFileName), resultBuffer);
195
211
  }
196
212
 
197
- public async runWebviewOnDeviceAsync(platform: TSdCliCordovaPlatform, url: string): Promise<void> {
198
- await FsUtil.removeAsync(path.resolve(this.cordovaPath, "www"));
199
- await FsUtil.mkdirsAsync(path.resolve(this.cordovaPath, "www"));
200
- await FsUtil.writeFileAsync(path.resolve(this.cordovaPath, "www/index.html"), `'${url}'로 이동중... <script>setTimeout(function () {window.location.href = "${url}"}, 3000);</script>`.trim());
213
+ public static async runWebviewOnDeviceAsync(cordovaPath: string, platform: TSdCliCordovaPlatform, url: string): Promise<void> {
214
+ await FsUtil.removeAsync(path.resolve(cordovaPath, "www"));
215
+ await FsUtil.mkdirsAsync(path.resolve(cordovaPath, "www"));
216
+ await FsUtil.writeFileAsync(path.resolve(cordovaPath, "www/index.html"), `'${url}'로 이동중... <script>setTimeout(function () {window.location.href = "${url}"}, 3000);</script>`.trim());
201
217
 
202
218
  // CONFIG
203
- const configFilePath = path.resolve(this.cordovaPath, "config.xml");
219
+ const configFilePath = path.resolve(cordovaPath, "config.xml");
204
220
  let configFileContent = await FsUtil.readFileAsync(configFilePath);
205
221
 
206
222
  // CONFIG: 접근허용 일단 모두 지우기
@@ -214,6 +230,7 @@ export class SdCliCordova {
214
230
  // CONFIG: 파일쓰기
215
231
  await FsUtil.writeFileAsync(configFilePath, configFileContent);
216
232
 
217
- await SdProcess.spawnAsync(`${this._binPath} run ${platform} --device`, { cwd: this.cordovaPath });
233
+ const binPath = path.resolve(process.cwd(), "node_modules/.bin/cordova.cmd");
234
+ await SdProcess.spawnAsync(`${binPath} run ${platform} --device`, { cwd: cordovaPath }, true);
218
235
  }
219
236
  }
@@ -1,7 +1,7 @@
1
1
  import ts from "typescript";
2
2
  import { PathUtil } from "@simplysm/sd-core-node";
3
3
  import sass from "sass";
4
- import { pathToFileURL, URL } from "url";
4
+ import { fileURLToPath, pathToFileURL, URL } from "url";
5
5
 
6
6
  export class SdCliNgCacheCompilerHost {
7
7
  public static wrap(compilerHost: ts.CompilerHost,
@@ -23,17 +23,24 @@ export class SdCliNgCacheCompilerHost {
23
23
 
24
24
  const cache = sourceFileCache.getOrCreate(PathUtil.posix(context.containingFile), {});
25
25
  if (cache.styleContent === undefined) {
26
- cache.styleContent = (
27
- await sass.compileStringAsync(data, {
28
- url: new URL((context.containingFile as string) + ".sd.scss"),
29
- importer: {
30
- findFileUrl: (url) => {
31
- if (!url.startsWith("~")) return pathToFileURL(url);
32
- return new URL(url.substring(1), pathToFileURL("node_modules"));
33
- }
26
+ const scssResult = await sass.compileStringAsync(data, {
27
+ url: new URL((context.containingFile as string) + ".sd.scss"),
28
+ importer: {
29
+ findFileUrl: (url) => {
30
+ if (!url.startsWith("~")) return pathToFileURL(url);
31
+ return new URL(url.substring(1), pathToFileURL("node_modules"));
34
32
  }
35
- })
36
- ).css.toString();
33
+ }
34
+ });
35
+
36
+ cache.styleContent = scssResult.css.toString();
37
+
38
+ const deps = scssResult.loadedUrls.slice(1).map((item) => PathUtil.posix(fileURLToPath(item.href)));
39
+ for (const dep of deps) {
40
+ const depCache = sourceFileCache.getOrCreate(dep, {});
41
+ depCache.importerSet = depCache.importerSet ?? new Set<string>();
42
+ depCache.importerSet.add(PathUtil.posix(context.containingFile));
43
+ }
37
44
  }
38
45
  return { content: cache.styleContent };
39
46
  };
@@ -47,4 +54,5 @@ interface IFileCache {
47
54
  sourceFile?: ts.SourceFile;
48
55
  content?: string;
49
56
  styleContent?: string;
57
+ importerSet?: Set<string>;
50
58
  }
@@ -20,15 +20,18 @@ export class SdCliPackageLinter {
20
20
  {
21
21
  files: ["*.ts"],
22
22
  parserOptions: {
23
- programs: [program],
23
+ /*programs: [program],
24
24
  tsconfigRootDir: null,
25
- project: null
25
+ project: null*/
26
+ tsconfigRootDir: this._rootPath,
27
+ project: "tsconfig-build.json"
26
28
  },
27
29
  settings: {
28
30
  "import/resolver": {
29
31
  "typescript": {
30
- programs: [program],
31
- project: null
32
+ /*programs: [program],
33
+ project: null*/
34
+ project: path.resolve(this._rootPath, "tsconfig-build.json")
32
35
  }
33
36
  }
34
37
  }
@@ -41,6 +44,7 @@ export class SdCliPackageLinter {
41
44
  const lintFilePaths = await filePaths
42
45
  .filterAsync(async (filePath) => (
43
46
  !filePath.endsWith(".d.ts") &&
47
+ /\.[cm]?[tj]sx?$/.test(filePath) &&
44
48
  !(await linter.isPathIgnored(filePath))
45
49
  ));
46
50
  for (const lintFilePath of lintFilePaths) {