@pinnacle0/webpack-util 0.3.16-beta1 → 0.3.16-beta2

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 (139) hide show
  1. package/package.json +1 -1
  2. package/src/CanadyarnRunner.d.ts +14 -0
  3. package/src/CanadyarnRunner.js +38 -0
  4. package/src/CanadyarnRunner.js.map +1 -0
  5. package/src/CodeStyleChecker.d.ts +10 -0
  6. package/src/CodeStyleChecker.js +44 -0
  7. package/src/CodeStyleChecker.js.map +1 -0
  8. package/src/Constant.d.ts +21 -0
  9. package/src/{Constant.ts → Constant.js} +5 -1
  10. package/src/Constant.js.map +1 -0
  11. package/src/CoreUtil.d.ts +11 -0
  12. package/src/CoreUtil.js +26 -0
  13. package/src/CoreUtil.js.map +1 -0
  14. package/src/ProjectStructureChecker.d.ts +18 -0
  15. package/src/ProjectStructureChecker.js +113 -0
  16. package/src/ProjectStructureChecker.js.map +1 -0
  17. package/src/TestRunner.d.ts +8 -0
  18. package/src/TestRunner.js +30 -0
  19. package/src/TestRunner.js.map +1 -0
  20. package/src/WebpackBuilder.d.ts +38 -0
  21. package/src/{WebpackBuilder.ts → WebpackBuilder.js} +49 -69
  22. package/src/WebpackBuilder.js.map +1 -0
  23. package/src/WebpackConfigGenerator/ConfigEntryDescriptorsFactory.d.ts +13 -0
  24. package/src/WebpackConfigGenerator/{ConfigEntryDescriptorsFactory.ts → ConfigEntryDescriptorsFactory.js} +29 -36
  25. package/src/WebpackConfigGenerator/ConfigEntryDescriptorsFactory.js.map +1 -0
  26. package/src/WebpackConfigGenerator/HTMLWebpackPluginsFactory.d.ts +9 -0
  27. package/src/WebpackConfigGenerator/HTMLWebpackPluginsFactory.js +20 -0
  28. package/src/WebpackConfigGenerator/HTMLWebpackPluginsFactory.js.map +1 -0
  29. package/src/WebpackConfigGenerator/Plugin/css.plugin.d.ts +16 -0
  30. package/src/WebpackConfigGenerator/Plugin/css.plugin.js +33 -0
  31. package/src/WebpackConfigGenerator/Plugin/css.plugin.js.map +1 -0
  32. package/src/WebpackConfigGenerator/Plugin/esbuild.plugin.d.ts +2 -0
  33. package/src/WebpackConfigGenerator/Plugin/esbuild.plugin.js +14 -0
  34. package/src/WebpackConfigGenerator/Plugin/esbuild.plugin.js.map +1 -0
  35. package/src/WebpackConfigGenerator/Plugin/html.plugin.d.ts +16 -0
  36. package/src/WebpackConfigGenerator/Plugin/html.plugin.js +48 -0
  37. package/src/WebpackConfigGenerator/Plugin/html.plugin.js.map +1 -0
  38. package/src/WebpackConfigGenerator/Plugin/index.d.ts +29 -0
  39. package/src/WebpackConfigGenerator/Plugin/index.js +34 -0
  40. package/src/WebpackConfigGenerator/Plugin/index.js.map +1 -0
  41. package/src/WebpackConfigGenerator/Plugin/moment.plugin.d.ts +10 -0
  42. package/src/WebpackConfigGenerator/Plugin/{moment.plugin.ts → moment.plugin.js} +12 -5
  43. package/src/WebpackConfigGenerator/Plugin/moment.plugin.js.map +1 -0
  44. package/src/WebpackConfigGenerator/Plugin/script-tag-crossorigin-plugin.d.ts +4 -0
  45. package/src/WebpackConfigGenerator/Plugin/script-tag-crossorigin-plugin.js +28 -0
  46. package/src/WebpackConfigGenerator/Plugin/script-tag-crossorigin-plugin.js.map +1 -0
  47. package/src/WebpackConfigGenerator/Plugin/ts.plugin.d.ts +16 -0
  48. package/src/WebpackConfigGenerator/Plugin/ts.plugin.js +31 -0
  49. package/src/WebpackConfigGenerator/Plugin/ts.plugin.js.map +1 -0
  50. package/src/WebpackConfigGenerator/Plugin/webpack.plugin.d.ts +14 -0
  51. package/src/WebpackConfigGenerator/Plugin/webpack.plugin.js +24 -0
  52. package/src/WebpackConfigGenerator/Plugin/webpack.plugin.js.map +1 -0
  53. package/src/WebpackConfigGenerator/Rule/RegExpUtil.d.ts +4 -0
  54. package/src/WebpackConfigGenerator/Rule/{RegExpUtil.ts → RegExpUtil.js} +14 -8
  55. package/src/WebpackConfigGenerator/Rule/RegExpUtil.js.map +1 -0
  56. package/src/WebpackConfigGenerator/Rule/core-fe-hmr-babel-plugin.d.ts +13 -0
  57. package/src/WebpackConfigGenerator/Rule/{core-fe-hmr-babel-plugin.ts → core-fe-hmr-babel-plugin.js} +9 -43
  58. package/src/WebpackConfigGenerator/Rule/core-fe-hmr-babel-plugin.js.map +1 -0
  59. package/src/WebpackConfigGenerator/Rule/image.rule.d.ts +9 -0
  60. package/src/WebpackConfigGenerator/Rule/{image.rule.ts → image.rule.js} +8 -5
  61. package/src/WebpackConfigGenerator/Rule/image.rule.js.map +1 -0
  62. package/src/WebpackConfigGenerator/Rule/index.d.ts +13 -0
  63. package/src/WebpackConfigGenerator/Rule/index.js +18 -0
  64. package/src/WebpackConfigGenerator/Rule/index.js.map +1 -0
  65. package/src/WebpackConfigGenerator/Rule/other.rule.d.ts +12 -0
  66. package/src/WebpackConfigGenerator/Rule/other.rule.js +22 -0
  67. package/src/WebpackConfigGenerator/Rule/other.rule.js.map +1 -0
  68. package/src/WebpackConfigGenerator/Rule/stylesheet.rule.d.ts +17 -0
  69. package/src/WebpackConfigGenerator/Rule/{stylesheet.rule.ts → stylesheet.rule.js} +30 -34
  70. package/src/WebpackConfigGenerator/Rule/stylesheet.rule.js.map +1 -0
  71. package/src/WebpackConfigGenerator/Rule/ts.rule.d.ts +19 -0
  72. package/src/WebpackConfigGenerator/Rule/{ts.rule.ts → ts.rule.js} +16 -19
  73. package/src/WebpackConfigGenerator/Rule/ts.rule.js.map +1 -0
  74. package/src/WebpackConfigGenerator/WebpackConfigSerializationUtil.d.ts +10 -0
  75. package/src/WebpackConfigGenerator/{WebpackConfigSerializationUtil.ts → WebpackConfigSerializationUtil.js} +22 -23
  76. package/src/WebpackConfigGenerator/WebpackConfigSerializationUtil.js.map +1 -0
  77. package/src/WebpackConfigGenerator/WebpackEntryFactory.d.ts +9 -0
  78. package/src/WebpackConfigGenerator/WebpackEntryFactory.js +14 -0
  79. package/src/WebpackConfigGenerator/WebpackEntryFactory.js.map +1 -0
  80. package/src/WebpackConfigGenerator/WebpackOutputPublicURLFactory.d.ts +11 -0
  81. package/src/WebpackConfigGenerator/WebpackOutputPublicURLFactory.js +16 -0
  82. package/src/WebpackConfigGenerator/WebpackOutputPublicURLFactory.js.map +1 -0
  83. package/src/WebpackConfigGenerator/WebpackResolveAliasFactory.d.ts +11 -0
  84. package/src/WebpackConfigGenerator/{WebpackResolveAliasFactory.ts → WebpackResolveAliasFactory.js} +13 -16
  85. package/src/WebpackConfigGenerator/WebpackResolveAliasFactory.js.map +1 -0
  86. package/src/WebpackConfigGenerator/WebpackResolveExtensionsFactory.d.ts +7 -0
  87. package/src/WebpackConfigGenerator/WebpackResolveExtensionsFactory.js +16 -0
  88. package/src/WebpackConfigGenerator/WebpackResolveExtensionsFactory.js.map +1 -0
  89. package/src/WebpackConfigGenerator/WebpackResolveModulesFactory.d.ts +7 -0
  90. package/src/WebpackConfigGenerator/{WebpackResolveModulesFactory.ts → WebpackResolveModulesFactory.js} +7 -9
  91. package/src/WebpackConfigGenerator/WebpackResolveModulesFactory.js.map +1 -0
  92. package/src/WebpackConfigGenerator/index.d.ts +31 -0
  93. package/src/WebpackConfigGenerator/index.js +191 -0
  94. package/src/WebpackConfigGenerator/index.js.map +1 -0
  95. package/src/WebpackServerStarter.d.ts +28 -0
  96. package/src/WebpackServerStarter.js +111 -0
  97. package/src/WebpackServerStarter.js.map +1 -0
  98. package/src/index.d.ts +10 -0
  99. package/src/index.js +8 -0
  100. package/src/index.js.map +1 -0
  101. package/src/{type.ts → type.d.ts} +4 -8
  102. package/src/type.js +3 -0
  103. package/src/type.js.map +1 -0
  104. package/config/jest.config.ts +0 -35
  105. package/config/tsconfig.script.json +0 -11
  106. package/config/tsconfig.src.json +0 -12
  107. package/config/tsconfig.test.json +0 -12
  108. package/script/build.ts +0 -65
  109. package/script/format.ts +0 -7
  110. package/src/CanadyarnRunner.ts +0 -35
  111. package/src/CodeStyleChecker.ts +0 -44
  112. package/src/CoreUtil.ts +0 -24
  113. package/src/ProjectStructureChecker.ts +0 -119
  114. package/src/TestRunner.ts +0 -28
  115. package/src/WebpackConfigGenerator/HTMLWebpackPluginsFactory.ts +0 -24
  116. package/src/WebpackConfigGenerator/Plugin/css.plugin.ts +0 -31
  117. package/src/WebpackConfigGenerator/Plugin/esbuild.plugin.ts +0 -11
  118. package/src/WebpackConfigGenerator/Plugin/html.plugin.ts +0 -47
  119. package/src/WebpackConfigGenerator/Plugin/index.ts +0 -35
  120. package/src/WebpackConfigGenerator/Plugin/script-tag-crossorigin-plugin.ts +0 -22
  121. package/src/WebpackConfigGenerator/Plugin/ts.plugin.ts +0 -29
  122. package/src/WebpackConfigGenerator/Plugin/webpack.plugin.ts +0 -21
  123. package/src/WebpackConfigGenerator/Rule/index.ts +0 -17
  124. package/src/WebpackConfigGenerator/Rule/other.rule.ts +0 -23
  125. package/src/WebpackConfigGenerator/WebpackEntryFactory.ts +0 -22
  126. package/src/WebpackConfigGenerator/WebpackOutputPublicURLFactory.ts +0 -22
  127. package/src/WebpackConfigGenerator/WebpackResolveExtensionsFactory.ts +0 -19
  128. package/src/WebpackConfigGenerator/index.ts +0 -213
  129. package/src/WebpackServerStarter.ts +0 -138
  130. package/src/index.ts +0 -9
  131. package/test/WebpackConfigGenerator/Rule/core-fe-hmr-babel-plugin/__snapshots__/shouldIgnore.test.ts.snap +0 -21
  132. package/test/WebpackConfigGenerator/Rule/core-fe-hmr-babel-plugin/__snapshots__/shouldTransform.test.ts.snap +0 -53
  133. package/test/WebpackConfigGenerator/Rule/core-fe-hmr-babel-plugin/shouldIgnore.test.ts +0 -36
  134. package/test/WebpackConfigGenerator/Rule/core-fe-hmr-babel-plugin/shouldTransform.test.ts +0 -72
  135. package/test/WebpackConfigGenerator/plugin/fixture/script.js +0 -2
  136. package/test/WebpackConfigGenerator/plugin/fixture/script1.js +0 -1
  137. package/test/WebpackConfigGenerator/plugin/script-tag-crossorigin-plugin.test.ts +0 -58
  138. package/test/test-project/package.json +0 -5
  139. package/tsconfig.json +0 -15
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pinnacle0/webpack-util",
3
- "version": "0.3.16-beta1",
3
+ "version": "0.3.16-beta2",
4
4
  "license": "MIT",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `canadyarn` is a mono-repo package version checker for single version installation, developed by Pinnacle team.
3
+ *
4
+ * Ref: https://www.npmjs.com/package/canadyarn
5
+ */
6
+ export declare class CanadyarnRunner {
7
+ private readonly rootDirectory;
8
+ private readonly logger;
9
+ constructor({ rootDirectory }: {
10
+ rootDirectory: string;
11
+ });
12
+ run(): void;
13
+ private runCanadyarn;
14
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CanadyarnRunner = void 0;
7
+ const devtool_util_1 = require("@pinnacle0/devtool-util");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ /**
10
+ * `canadyarn` is a mono-repo package version checker for single version installation, developed by Pinnacle team.
11
+ *
12
+ * Ref: https://www.npmjs.com/package/canadyarn
13
+ */
14
+ class CanadyarnRunner {
15
+ constructor({ rootDirectory }) {
16
+ this.logger = devtool_util_1.Utility.createConsoleLogger("CanadyarnRunner");
17
+ this.rootDirectory = rootDirectory;
18
+ }
19
+ run() {
20
+ this.runCanadyarn();
21
+ }
22
+ runCanadyarn() {
23
+ var _a;
24
+ const packageJSONPath = this.rootDirectory + "/package.json";
25
+ if (fs_1.default.existsSync(packageJSONPath) && fs_1.default.statSync(packageJSONPath).isFile()) {
26
+ const packageJSONContents = JSON.parse(fs_1.default.readFileSync(packageJSONPath, { encoding: "utf8" }));
27
+ if ((_a = packageJSONContents === null || packageJSONContents === void 0 ? void 0 : packageJSONContents.scripts) === null || _a === void 0 ? void 0 : _a.canadyarn) {
28
+ this.logger.task("Running `canadyarn` at " + this.rootDirectory);
29
+ devtool_util_1.Utility.runCommand("yarn", ["--cwd", this.rootDirectory, "canadyarn"]);
30
+ }
31
+ }
32
+ else {
33
+ throw new Error(`Cannot load root directory [${this.rootDirectory}] package.json`);
34
+ }
35
+ }
36
+ }
37
+ exports.CanadyarnRunner = CanadyarnRunner;
38
+ //# sourceMappingURL=CanadyarnRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanadyarnRunner.js","sourceRoot":"","sources":["../../src/CanadyarnRunner.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAgD;AAChD,4CAAoB;AAEpB;;;;GAIG;AACH,MAAa,eAAe;IAIxB,YAAY,EAAC,aAAa,EAA0B;QAFnC,WAAM,GAAG,sBAAO,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAGrE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAED,GAAG;QACC,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAEO,YAAY;;QAChB,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;QAE7D,IAAI,YAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,YAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE;YACzE,MAAM,mBAAmB,GAAwB,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC;YAElH,IAAI,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,OAAO,0CAAE,SAAS,EAAE;gBACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACjE,sBAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;aAC1E;SACJ;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,aAAa,gBAAgB,CAAC,CAAC;SACtF;IACL,CAAC;CACJ;AA1BD,0CA0BC"}
@@ -0,0 +1,10 @@
1
+ import type { InternalCheckerOptions } from "./type";
2
+ export declare class CodeStyleChecker {
3
+ private readonly checkableSrcDirectories;
4
+ private readonly logger;
5
+ constructor({ projectDirectory, extraCheckDirectories }: InternalCheckerOptions);
6
+ run(): void;
7
+ private checkPrettier;
8
+ private checkESLint;
9
+ private checkStylelint;
10
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CodeStyleChecker = void 0;
7
+ const devtool_util_1 = require("@pinnacle0/devtool-util");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ class CodeStyleChecker {
11
+ constructor({ projectDirectory, extraCheckDirectories = [] }) {
12
+ this.logger = devtool_util_1.Utility.createConsoleLogger("CodeStyleChecker");
13
+ this.checkableSrcDirectories = [path_1.default.join(projectDirectory, "src")];
14
+ for (const directory of extraCheckDirectories) {
15
+ const others = ["test", "script"].map(folder => path_1.default.join(directory, folder)).filter(path => fs_1.default.existsSync(path));
16
+ this.checkableSrcDirectories.push(path_1.default.join(directory, "src"), ...others);
17
+ }
18
+ }
19
+ run() {
20
+ this.checkPrettier();
21
+ this.checkESLint();
22
+ this.checkStylelint();
23
+ }
24
+ checkPrettier() {
25
+ this.logger.task("Checking Prettier");
26
+ for (const srcDirectory of this.checkableSrcDirectories) {
27
+ devtool_util_1.PrettierUtil.check(srcDirectory);
28
+ }
29
+ }
30
+ checkESLint() {
31
+ this.logger.task("Checking ESLint");
32
+ for (const srcDirectory of this.checkableSrcDirectories) {
33
+ devtool_util_1.Utility.runCommand("eslint", ["--no-error-on-unmatched-pattern", "--max-warnings=1", "--ext=.js,.jsx,.ts,.tsx", srcDirectory]);
34
+ }
35
+ }
36
+ checkStylelint() {
37
+ this.logger.task("Checking Stylelint");
38
+ for (const srcDirectory of this.checkableSrcDirectories) {
39
+ devtool_util_1.Utility.runCommand("stylelint", ["--allow-empty-input", "--max-warnings=1", path_1.default.join(srcDirectory, "**/*.{css,less}")]);
40
+ }
41
+ }
42
+ }
43
+ exports.CodeStyleChecker = CodeStyleChecker;
44
+ //# sourceMappingURL=CodeStyleChecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeStyleChecker.js","sourceRoot":"","sources":["../../src/CodeStyleChecker.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA8D;AAC9D,4CAAoB;AACpB,gDAAwB;AAGxB,MAAa,gBAAgB;IAIzB,YAAY,EAAC,gBAAgB,EAAE,qBAAqB,GAAG,EAAE,EAAyB;QAFjE,WAAM,GAAG,sBAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAGtE,IAAI,CAAC,uBAAuB,GAAG,CAAC,cAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,SAAS,IAAI,qBAAqB,EAAE;YAC3C,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAClH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;SAC7E;IACL,CAAC;IAED,GAAG;QACC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtC,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACrD,2BAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SACpC;IACL,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpC,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACrD,sBAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,iCAAiC,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,YAAY,CAAC,CAAC,CAAC;SAClI;IACL,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvC,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACrD,sBAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;SAC5H;IACL,CAAC;CACJ;AAtCD,4CAsCC"}
@@ -0,0 +1,21 @@
1
+ export declare const Constant: Readonly<{
2
+ maxEntryPointKiloByte: 1500;
3
+ maxAssetKiloByte: 4000;
4
+ /**
5
+ * List of file extensions that should be resolvable by webpack.resolve.extensions.
6
+ */
7
+ resolveExtensions: string[];
8
+ /**
9
+ * List of font file extensions that should be bundled by webpack asset modules.
10
+ */
11
+ fontExtensions: string[];
12
+ /**
13
+ * List of media file extensions that should be bundled by webpack asset modules.
14
+ */
15
+ mediaExtensions: string[];
16
+ /**
17
+ * List of filename candidates for webpack.config#entry.main that should reside in `<projectDirectory>/src/`.
18
+ * Candidates placed at the front of the array has higher priority.
19
+ */
20
+ mainEntryFilenames: string[];
21
+ }>;
@@ -1,4 +1,7 @@
1
- export const Constant = Object.freeze({
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Constant = void 0;
4
+ exports.Constant = Object.freeze({
2
5
  maxEntryPointKiloByte: 1500,
3
6
  maxAssetKiloByte: 4000,
4
7
  /**
@@ -19,3 +22,4 @@ export const Constant = Object.freeze({
19
22
  */
20
23
  mainEntryFilenames: ["index.tsx", "index.ts", "index.jsx", "index.js", "index.less", "index.css"],
21
24
  });
25
+ //# sourceMappingURL=Constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constant.js","sourceRoot":"","sources":["../../src/Constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,qBAAqB,EAAE,IAAI;IAC3B,gBAAgB,EAAE,IAAI;IACtB;;OAEG;IACH,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IAClE;;OAEG;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3D;;OAEG;IACH,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IACjE;;;OAGG;IACH,kBAAkB,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC;CACpG,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ declare function currentEnv(): string | null;
2
+ declare function profilingEnabled(): boolean;
3
+ declare function isFastMode(): boolean;
4
+ declare function verbose(): boolean;
5
+ export declare const CoreUtil: Readonly<{
6
+ currentEnv: typeof currentEnv;
7
+ profilingEnabled: typeof profilingEnabled;
8
+ isFastMode: typeof isFastMode;
9
+ verbose: typeof verbose;
10
+ }>;
11
+ export {};
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CoreUtil = void 0;
7
+ const yargs_1 = __importDefault(require("yargs"));
8
+ function currentEnv() {
9
+ return yargs_1.default.parseSync().env || null;
10
+ }
11
+ function profilingEnabled() {
12
+ return Boolean(yargs_1.default.parseSync().profile);
13
+ }
14
+ function isFastMode() {
15
+ return yargs_1.default.parseSync().mode === "fast";
16
+ }
17
+ function verbose() {
18
+ return Boolean(yargs_1.default.parseSync().verbose);
19
+ }
20
+ exports.CoreUtil = Object.freeze({
21
+ currentEnv,
22
+ profilingEnabled,
23
+ isFastMode,
24
+ verbose,
25
+ });
26
+ //# sourceMappingURL=CoreUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreUtil.js","sourceRoot":"","sources":["../../src/CoreUtil.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,SAAS,UAAU;IACf,OAAQ,eAAK,CAAC,SAAS,EAAE,CAAC,GAAc,IAAI,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB;IACrB,OAAO,OAAO,CAAC,eAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,UAAU;IACf,OAAO,eAAK,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC;AAC7C,CAAC;AAED,SAAS,OAAO;IACZ,OAAO,OAAO,CAAC,eAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAEY,QAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,UAAU;IACV,gBAAgB;IAChB,UAAU;IACV,OAAO;CACV,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { InternalCheckerOptions } from "./type";
2
+ export declare class ProjectStructureChecker {
3
+ private readonly options;
4
+ private readonly projectDirectory;
5
+ private readonly extraCheckDirectories;
6
+ private readonly packageJSONPath;
7
+ private readonly tsConfigPath;
8
+ constructor(options: InternalCheckerOptions);
9
+ run(): void;
10
+ private checkMainProjectDirectory;
11
+ private checkMainProjectSrcDirectory;
12
+ private checkExtraDirectories;
13
+ private checkPackageJSON;
14
+ private checkTSConfig;
15
+ private checkPrettierInstallation;
16
+ private checkESLintInstallation;
17
+ private checkStyleLintInstallation;
18
+ }
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ProjectStructureChecker = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const Constant_1 = require("./Constant");
10
+ class ProjectStructureChecker {
11
+ constructor(options) {
12
+ var _a;
13
+ this.options = options;
14
+ this.projectDirectory = options.projectDirectory;
15
+ this.extraCheckDirectories = (_a = options.extraCheckDirectories) !== null && _a !== void 0 ? _a : [];
16
+ this.packageJSONPath = path_1.default.join(options.projectDirectory, "package.json");
17
+ this.tsConfigPath = path_1.default.join(options.projectDirectory, "tsconfig.json");
18
+ }
19
+ run() {
20
+ this.checkMainProjectDirectory();
21
+ this.checkMainProjectSrcDirectory();
22
+ this.checkExtraDirectories();
23
+ this.checkPackageJSON();
24
+ this.checkTSConfig();
25
+ this.checkPrettierInstallation();
26
+ this.checkESLintInstallation();
27
+ this.checkStyleLintInstallation();
28
+ }
29
+ checkMainProjectDirectory() {
30
+ if (!(fs_1.default.existsSync(this.projectDirectory) && fs_1.default.statSync(this.projectDirectory).isDirectory())) {
31
+ throw new Error(`Cannot check project directory at "${this.projectDirectory}" because it is not a folder.`);
32
+ }
33
+ const mainProjectStaticDirectory = path_1.default.join(this.projectDirectory, "static");
34
+ if (!(fs_1.default.existsSync(mainProjectStaticDirectory) && fs_1.default.statSync(mainProjectStaticDirectory).isDirectory())) {
35
+ throw new Error(`Cannot find "static" directory in project at "${this.projectDirectory}"`);
36
+ }
37
+ }
38
+ checkMainProjectSrcDirectory() {
39
+ const mainProjectSrcDirectory = path_1.default.join(this.projectDirectory, "src");
40
+ if (!(fs_1.default.existsSync(mainProjectSrcDirectory) && fs_1.default.statSync(mainProjectSrcDirectory).isDirectory())) {
41
+ throw new Error(`Cannot find "src" folder inside directory at "${this.projectDirectory}".`);
42
+ }
43
+ let isMainEntryFound = false;
44
+ Constant_1.Constant.mainEntryFilenames
45
+ .map(entryName => path_1.default.join(mainProjectSrcDirectory, entryName))
46
+ .forEach(entryPath => {
47
+ if (fs_1.default.existsSync(entryPath) && fs_1.default.statSync(entryPath).isFile()) {
48
+ isMainEntryFound = true;
49
+ }
50
+ });
51
+ if (!isMainEntryFound) {
52
+ throw new Error(`Cannot find main entry file in src/ at "${mainProjectSrcDirectory}"; checked: ${Constant_1.Constant.mainEntryFilenames.map(_ => `"${_}"`).join(" / ")}.`);
53
+ }
54
+ }
55
+ checkExtraDirectories() {
56
+ for (const extraCheckDirectory of this.extraCheckDirectories) {
57
+ if (!(fs_1.default.existsSync(extraCheckDirectory) && fs_1.default.statSync(extraCheckDirectory).isDirectory())) {
58
+ throw new Error(`Cannot check extra directory at "${extraCheckDirectory}" because it is not a folder.`);
59
+ }
60
+ }
61
+ }
62
+ checkPackageJSON() {
63
+ if (!(fs_1.default.existsSync(this.packageJSONPath) && fs_1.default.statSync(this.packageJSONPath).isFile())) {
64
+ throw new Error(`Cannot find package.json at "${this.packageJSONPath}".`);
65
+ }
66
+ const packageJSONContents = JSON.parse(fs_1.default.readFileSync(this.packageJSONPath, { encoding: "utf8" }));
67
+ for (const [depName, depVersion] of Object.entries(packageJSONContents.dependencies || {})) {
68
+ if (!/^\d/.test(depVersion)) {
69
+ throw new Error(`Dependency "${depName}" must be an exact version, but found "${depVersion}" in package.json at "${this.packageJSONPath}".`);
70
+ }
71
+ }
72
+ for (const [depName, depVersion] of Object.entries(packageJSONContents.devDependencies || {})) {
73
+ if (!/^\d/.test(depVersion)) {
74
+ throw new Error(`Dependency "${depName}" must be an exact version, but found "${depVersion}" in package.json at "${this.packageJSONPath}".`);
75
+ }
76
+ }
77
+ }
78
+ checkTSConfig() {
79
+ const mainProjectSrcDirectory = path_1.default.join(this.projectDirectory, "src");
80
+ // Checking the first-level of src/* is enough here
81
+ const hasTSFiles = fs_1.default.readdirSync(mainProjectSrcDirectory).some(fileName => fileName.endsWith(".ts") || fileName.endsWith(".tsx"));
82
+ const hasTSConfigFile = fs_1.default.existsSync(this.tsConfigPath) && fs_1.default.statSync(this.tsConfigPath).isFile();
83
+ if (hasTSFiles && !hasTSConfigFile) {
84
+ throw new Error(`Cannot find tsconfig.json at "${this.tsConfigPath}".`);
85
+ }
86
+ }
87
+ checkPrettierInstallation() {
88
+ try {
89
+ require("prettier");
90
+ }
91
+ catch (_a) {
92
+ throw new Error(`Cannot load prettier module (requiring from "webpack-util"), make sure prettier is installed.`);
93
+ }
94
+ }
95
+ checkESLintInstallation() {
96
+ try {
97
+ require("eslint");
98
+ }
99
+ catch (_a) {
100
+ throw new Error(`Cannot load eslint module (requiring from "webpack-util"), make sure eslint is installed.`);
101
+ }
102
+ }
103
+ checkStyleLintInstallation() {
104
+ try {
105
+ require("stylelint");
106
+ }
107
+ catch (_a) {
108
+ throw new Error(`Cannot load stylelint module (requiring from "webpack-util"), make sure stylelint is installed.`);
109
+ }
110
+ }
111
+ }
112
+ exports.ProjectStructureChecker = ProjectStructureChecker;
113
+ //# sourceMappingURL=ProjectStructureChecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectStructureChecker.js","sourceRoot":"","sources":["../../src/ProjectStructureChecker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { InternalCheckerOptions } from "./type";
2
+ export declare class TestRunner {
3
+ private readonly directories;
4
+ private readonly logger;
5
+ constructor({ projectDirectory, extraCheckDirectories }: InternalCheckerOptions);
6
+ run(): void;
7
+ private runTestScript;
8
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TestRunner = void 0;
7
+ const devtool_util_1 = require("@pinnacle0/devtool-util");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ class TestRunner {
10
+ constructor({ projectDirectory, extraCheckDirectories = [] }) {
11
+ this.logger = devtool_util_1.Utility.createConsoleLogger("TestRunner");
12
+ this.directories = [projectDirectory, ...extraCheckDirectories];
13
+ }
14
+ run() {
15
+ this.directories.forEach(dir => this.runTestScript(dir));
16
+ }
17
+ runTestScript(directory) {
18
+ var _a;
19
+ const packageJSONPath = directory + "/package.json";
20
+ if (fs_1.default.existsSync(packageJSONPath) && fs_1.default.statSync(packageJSONPath).isFile()) {
21
+ const packageJSONContents = JSON.parse(fs_1.default.readFileSync(packageJSONPath, { encoding: "utf8" }));
22
+ if ((_a = packageJSONContents === null || packageJSONContents === void 0 ? void 0 : packageJSONContents.scripts) === null || _a === void 0 ? void 0 : _a.test) {
23
+ this.logger.task("Running `yarn test` at " + directory);
24
+ devtool_util_1.Utility.runCommand("yarn", ["--cwd", directory, "test"]);
25
+ }
26
+ }
27
+ }
28
+ }
29
+ exports.TestRunner = TestRunner;
30
+ //# sourceMappingURL=TestRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestRunner.js","sourceRoot":"","sources":["../../src/TestRunner.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAgD;AAEhD,4CAAoB;AAEpB,MAAa,UAAU;IAInB,YAAY,EAAC,gBAAgB,EAAE,qBAAqB,GAAG,EAAE,EAAyB;QAFjE,WAAM,GAAG,sBAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAGhE,IAAI,CAAC,WAAW,GAAG,CAAC,gBAAgB,EAAE,GAAG,qBAAqB,CAAC,CAAC;IACpE,CAAC;IAED,GAAG;QACC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEO,aAAa,CAAC,SAAiB;;QACnC,MAAM,eAAe,GAAG,SAAS,GAAG,eAAe,CAAC;QACpD,IAAI,YAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,YAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE;YACzE,MAAM,mBAAmB,GAAwB,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC;YAElH,IAAI,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,OAAO,0CAAE,IAAI,EAAE;gBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;gBACxD,sBAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;aAC5D;SACJ;IACL,CAAC;CACJ;AAvBD,gCAuBC"}
@@ -0,0 +1,38 @@
1
+ import type { InternalCheckerOptions } from "./type";
2
+ import type { WebpackConfigGeneratorOptions } from "./WebpackConfigGenerator";
3
+ export interface WebpackBuilderOptions extends WebpackConfigGeneratorOptions, InternalCheckerOptions {
4
+ onSuccess?: () => void;
5
+ }
6
+ /**
7
+ * Build the website by webpack.
8
+ *
9
+ * Runs static analysis checkers before starting the webpack build (`prettier --check`, `eslint`, `stylelint`).
10
+ *
11
+ ***************************************
12
+ *
13
+ * Add "--env envName" to command line, if you want to switch config folder dynamically.
14
+ *
15
+ * Add "--profile" to command line, if you want to generate a profile for analysis in project folder.
16
+ * Then you can use visualizer to analyze: https://chrisbateman.github.io/webpack-visualizer/
17
+ *
18
+ * Add "--mode fast" to command line, if you want to skip style and lint checks.
19
+ */
20
+ export declare class WebpackBuilder {
21
+ private readonly projectDirectory;
22
+ private readonly rootDirectory;
23
+ private readonly extraCheckDirectories;
24
+ private readonly projectStaticDirectory;
25
+ private readonly projectProfilingJSONOutputPath;
26
+ private readonly outputDirectory;
27
+ private readonly webpackConfig;
28
+ private readonly isFastMode;
29
+ private readonly enableProfiling;
30
+ private readonly onSuccess?;
31
+ private readonly logger;
32
+ constructor(options: WebpackBuilderOptions);
33
+ run(): void;
34
+ private cleanDistFolder;
35
+ private copyStatic;
36
+ private bundleByWebpack;
37
+ private getRawWarningsAndErrors;
38
+ }
@@ -1,20 +1,19 @@
1
- import {Utility} from "@pinnacle0/devtool-util";
2
- import fs from "fs-extra";
3
- import path from "path";
4
- import webpack from "webpack";
5
- import type {InternalCheckerOptions} from "./type";
6
- import type {WebpackConfigGeneratorOptions} from "./WebpackConfigGenerator";
7
- import {ProjectStructureChecker} from "./ProjectStructureChecker";
8
- import {CodeStyleChecker} from "./CodeStyleChecker";
9
- import {WebpackConfigGenerator} from "./WebpackConfigGenerator";
10
- import {TestRunner} from "./TestRunner";
11
- import {CanadyarnRunner} from "./CanadyarnRunner";
12
- import {CoreUtil} from "./CoreUtil";
13
-
14
- export interface WebpackBuilderOptions extends WebpackConfigGeneratorOptions, InternalCheckerOptions {
15
- onSuccess?: () => void;
16
- }
17
-
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WebpackBuilder = void 0;
7
+ const devtool_util_1 = require("@pinnacle0/devtool-util");
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const webpack_1 = __importDefault(require("webpack"));
11
+ const ProjectStructureChecker_1 = require("./ProjectStructureChecker");
12
+ const CodeStyleChecker_1 = require("./CodeStyleChecker");
13
+ const WebpackConfigGenerator_1 = require("./WebpackConfigGenerator");
14
+ const TestRunner_1 = require("./TestRunner");
15
+ const CanadyarnRunner_1 = require("./CanadyarnRunner");
16
+ const CoreUtil_1 = require("./CoreUtil");
18
17
  /**
19
18
  * Build the website by webpack.
20
19
  *
@@ -29,51 +28,36 @@ export interface WebpackBuilderOptions extends WebpackConfigGeneratorOptions, In
29
28
  *
30
29
  * Add "--mode fast" to command line, if you want to skip style and lint checks.
31
30
  */
32
- export class WebpackBuilder {
33
- private readonly projectDirectory: string;
34
- private readonly rootDirectory: string;
35
- private readonly extraCheckDirectories: string[];
36
- private readonly projectStaticDirectory: string;
37
- private readonly projectProfilingJSONOutputPath: string;
38
- private readonly outputDirectory: string;
39
- private readonly webpackConfig: webpack.Configuration;
40
- private readonly isFastMode: boolean;
41
- private readonly enableProfiling: boolean;
42
- private readonly onSuccess?: (() => void) | undefined;
43
-
44
- private readonly logger = Utility.createConsoleLogger("WebpackBuilder");
45
-
46
- constructor(options: WebpackBuilderOptions) {
47
- const webpackConfigGenerator = new WebpackConfigGenerator(options);
48
-
31
+ class WebpackBuilder {
32
+ constructor(options) {
33
+ var _a;
34
+ this.logger = devtool_util_1.Utility.createConsoleLogger("WebpackBuilder");
35
+ const webpackConfigGenerator = new WebpackConfigGenerator_1.WebpackConfigGenerator(options);
49
36
  this.projectDirectory = options.projectDirectory;
50
37
  this.rootDirectory = options.rootDirectory ? options.rootDirectory : this.projectDirectory;
51
- this.extraCheckDirectories = options.extraCheckDirectories ?? [];
52
- this.projectStaticDirectory = path.join(this.projectDirectory, "static");
53
- this.projectProfilingJSONOutputPath = path.join(this.projectDirectory, "profile.json");
54
- this.outputDirectory = path.join(this.projectDirectory, "build/dist");
55
-
56
- this.isFastMode = CoreUtil.isFastMode();
57
- this.enableProfiling = CoreUtil.profilingEnabled();
38
+ this.extraCheckDirectories = (_a = options.extraCheckDirectories) !== null && _a !== void 0 ? _a : [];
39
+ this.projectStaticDirectory = path_1.default.join(this.projectDirectory, "static");
40
+ this.projectProfilingJSONOutputPath = path_1.default.join(this.projectDirectory, "profile.json");
41
+ this.outputDirectory = path_1.default.join(this.projectDirectory, "build/dist");
42
+ this.isFastMode = CoreUtil_1.CoreUtil.isFastMode();
43
+ this.enableProfiling = CoreUtil_1.CoreUtil.profilingEnabled();
58
44
  this.onSuccess = options.onSuccess;
59
-
60
45
  this.webpackConfig = webpackConfigGenerator.production(this.outputDirectory);
61
46
  }
62
-
63
47
  run() {
64
48
  if (!this.isFastMode) {
65
- new CanadyarnRunner({
49
+ new CanadyarnRunner_1.CanadyarnRunner({
66
50
  rootDirectory: this.rootDirectory,
67
51
  }).run();
68
- new TestRunner({
52
+ new TestRunner_1.TestRunner({
69
53
  projectDirectory: this.projectDirectory,
70
54
  extraCheckDirectories: this.extraCheckDirectories,
71
55
  }).run();
72
- new ProjectStructureChecker({
56
+ new ProjectStructureChecker_1.ProjectStructureChecker({
73
57
  projectDirectory: this.projectDirectory,
74
58
  extraCheckDirectories: this.extraCheckDirectories,
75
59
  }).run();
76
- new CodeStyleChecker({
60
+ new CodeStyleChecker_1.CodeStyleChecker({
77
61
  projectDirectory: this.projectDirectory,
78
62
  extraCheckDirectories: this.extraCheckDirectories,
79
63
  }).run();
@@ -82,52 +66,46 @@ export class WebpackBuilder {
82
66
  this.copyStatic();
83
67
  this.bundleByWebpack();
84
68
  }
85
-
86
- private cleanDistFolder() {
69
+ cleanDistFolder() {
87
70
  this.logger.task("Cleaning build dist folder");
88
- fs.emptyDirSync(this.outputDirectory);
71
+ fs_extra_1.default.emptyDirSync(this.outputDirectory);
89
72
  }
90
-
91
- private copyStatic() {
73
+ copyStatic() {
92
74
  this.logger.task("Copying static assets to build dist folder");
93
- fs.copySync(this.projectStaticDirectory, this.outputDirectory, {dereference: true});
75
+ fs_extra_1.default.copySync(this.projectStaticDirectory, this.outputDirectory, { dereference: true });
94
76
  }
95
-
96
- private bundleByWebpack() {
77
+ bundleByWebpack() {
97
78
  this.logger.task("Starting webpack");
98
-
99
- webpack(this.webpackConfig).run((error?: Error | null, stats?: webpack.Stats) => {
79
+ (0, webpack_1.default)(this.webpackConfig).run((error, stats) => {
100
80
  if (error) {
101
81
  throw error;
102
- } else if (stats) {
82
+ }
83
+ else if (stats) {
103
84
  const statsJSON = stats.toJson();
104
85
  if (this.enableProfiling) {
105
86
  this.logger.task(["Generating profile for analysis", this.projectProfilingJSONOutputPath]);
106
- fs.writeFileSync(this.projectProfilingJSONOutputPath, JSON.stringify(statsJSON, null, 2), {encoding: "utf8"});
87
+ fs_extra_1.default.writeFileSync(this.projectProfilingJSONOutputPath, JSON.stringify(statsJSON, null, 2), { encoding: "utf8" });
107
88
  }
108
-
109
89
  if (stats.hasErrors() || stats.hasWarnings()) {
110
90
  this.logger.error("Webpack compiled with the following errors/warnings:");
111
91
  console.error(stats.toString("errors-warnings"));
112
92
  process.exit(1);
113
93
  }
114
-
115
94
  this.logger.info("Build successfully");
116
-
117
95
  if (this.onSuccess) {
118
96
  this.logger.info("Running onSuccess callback");
119
97
  this.onSuccess();
120
98
  }
121
- } else {
99
+ }
100
+ else {
122
101
  this.logger.error("Webpack compiler `run()` returns no `error` and no `stats`, this is unexpected.");
123
102
  process.exit(1);
124
103
  }
125
104
  });
126
105
  }
127
-
128
- private getRawWarningsAndErrors(info: any): {warnings: any[]; errors: any[]} {
129
- const warnings: any[] = [];
130
- const errors: any[] = [];
106
+ getRawWarningsAndErrors(info) {
107
+ const warnings = [];
108
+ const errors = [];
131
109
  if (typeof info === "object" && info !== null) {
132
110
  if (Array.isArray(info.warnings)) {
133
111
  warnings.push(...info.warnings);
@@ -136,13 +114,15 @@ export class WebpackBuilder {
136
114
  errors.push(...info.errors);
137
115
  }
138
116
  if (Array.isArray(info.children)) {
139
- info.children.forEach((_: any) => {
117
+ info.children.forEach((_) => {
140
118
  const childInfo = this.getRawWarningsAndErrors(_);
141
119
  warnings.push(...childInfo.warnings);
142
120
  errors.push(...childInfo.errors);
143
121
  });
144
122
  }
145
123
  }
146
- return {warnings, errors};
124
+ return { warnings, errors };
147
125
  }
148
126
  }
127
+ exports.WebpackBuilder = WebpackBuilder;
128
+ //# sourceMappingURL=WebpackBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebpackBuilder.js","sourceRoot":"","sources":["../../src/WebpackBuilder.ts"],"names":[],"mappings":"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"}