@tramvai/cli 5.53.81 → 5.53.111

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 (196) hide show
  1. package/README.md +1 -1
  2. package/bin/const.js +5 -0
  3. package/bin/platform.js +12 -6
  4. package/bin/spawn.js +6 -0
  5. package/lib/api/analyze/index.d.ts.map +1 -1
  6. package/lib/api/analyze/index.js +1 -13
  7. package/lib/api/analyze/index.js.map +1 -1
  8. package/lib/api/benchmark/build.d.ts +1 -6
  9. package/lib/api/benchmark/build.d.ts.map +1 -1
  10. package/lib/api/benchmark/build.js +59 -23
  11. package/lib/api/benchmark/build.js.map +1 -1
  12. package/lib/api/benchmark/const.d.ts +2 -0
  13. package/lib/api/benchmark/const.d.ts.map +1 -0
  14. package/lib/api/benchmark/const.js +5 -0
  15. package/lib/api/benchmark/const.js.map +1 -0
  16. package/lib/api/benchmark/index.d.ts +4 -6
  17. package/lib/api/benchmark/index.d.ts.map +1 -1
  18. package/lib/api/benchmark/index.js.map +1 -1
  19. package/lib/api/benchmark/start.d.ts +1 -7
  20. package/lib/api/benchmark/start.d.ts.map +1 -1
  21. package/lib/api/benchmark/start.js +56 -49
  22. package/lib/api/benchmark/start.js.map +1 -1
  23. package/lib/api/benchmark/types.d.ts +76 -12
  24. package/lib/api/benchmark/types.d.ts.map +1 -1
  25. package/lib/api/benchmark/utils/compilationUtils.d.ts +4 -0
  26. package/lib/api/benchmark/utils/compilationUtils.d.ts.map +1 -0
  27. package/lib/api/benchmark/utils/compilationUtils.js +157 -0
  28. package/lib/api/benchmark/utils/compilationUtils.js.map +1 -0
  29. package/lib/api/benchmark/utils/stats.d.ts +2 -7
  30. package/lib/api/benchmark/utils/stats.d.ts.map +1 -1
  31. package/lib/api/benchmark/utils/stats.js +36 -22
  32. package/lib/api/benchmark/utils/stats.js.map +1 -1
  33. package/lib/api/build/index.d.ts +1 -0
  34. package/lib/api/build/index.d.ts.map +1 -1
  35. package/lib/api/build/index.js.map +1 -1
  36. package/lib/api/index.js +1 -1
  37. package/lib/api/index.js.map +1 -1
  38. package/lib/api/start/index.d.ts +1 -0
  39. package/lib/api/start/index.d.ts.map +1 -1
  40. package/lib/api/start/index.js.map +1 -1
  41. package/lib/builder/webpack/analyzePlugins/rsdoctor.d.ts +5 -5
  42. package/lib/builder/webpack/analyzePlugins/rsdoctor.d.ts.map +1 -1
  43. package/lib/builder/webpack/analyzePlugins/rsdoctor.js +7 -9
  44. package/lib/builder/webpack/analyzePlugins/rsdoctor.js.map +1 -1
  45. package/lib/builder/webpack/index.d.ts.map +1 -1
  46. package/lib/builder/webpack/index.js +14 -12
  47. package/lib/builder/webpack/index.js.map +1 -1
  48. package/lib/builder/webpack/providers/build/client.d.ts.map +1 -1
  49. package/lib/builder/webpack/providers/build/client.js +3 -2
  50. package/lib/builder/webpack/providers/build/client.js.map +1 -1
  51. package/lib/builder/webpack/providers/build/server.d.ts.map +1 -1
  52. package/lib/builder/webpack/providers/build/server.js +3 -2
  53. package/lib/builder/webpack/providers/build/server.js.map +1 -1
  54. package/lib/builder/webpack/providers/shared.d.ts.map +1 -1
  55. package/lib/builder/webpack/providers/shared.js +39 -5
  56. package/lib/builder/webpack/providers/shared.js.map +1 -1
  57. package/lib/builder/webpack/providers/start/shared.d.ts.map +1 -1
  58. package/lib/builder/webpack/providers/start/shared.js +6 -2
  59. package/lib/builder/webpack/providers/start/shared.js.map +1 -1
  60. package/lib/builder/webpack/tokens.d.ts +10 -16
  61. package/lib/builder/webpack/tokens.d.ts.map +1 -1
  62. package/lib/cli/index.d.ts.map +1 -1
  63. package/lib/cli/index.js +12 -12
  64. package/lib/cli/index.js.map +1 -1
  65. package/lib/commands/analyze/command.d.ts +1 -1
  66. package/lib/commands/analyze/command.d.ts.map +1 -1
  67. package/lib/commands/benchmark/benchmark.d.ts +3 -1
  68. package/lib/commands/benchmark/benchmark.d.ts.map +1 -1
  69. package/lib/commands/benchmark/benchmark.js +130 -31
  70. package/lib/commands/benchmark/benchmark.js.map +1 -1
  71. package/lib/commands/benchmark/command.d.ts +9 -0
  72. package/lib/commands/benchmark/command.d.ts.map +1 -1
  73. package/lib/commands/benchmark/command.js +12 -0
  74. package/lib/commands/benchmark/command.js.map +1 -1
  75. package/lib/commands/build/command.d.ts.map +1 -1
  76. package/lib/commands/build/command.js +5 -0
  77. package/lib/commands/build/command.js.map +1 -1
  78. package/lib/commands/start/command.d.ts.map +1 -1
  79. package/lib/commands/start/command.js +5 -0
  80. package/lib/commands/start/command.js.map +1 -1
  81. package/lib/commands/update/checkVersionValidator.d.ts +1 -1
  82. package/lib/commands/update/checkVersionValidator.d.ts.map +1 -1
  83. package/lib/commands/update/checkVersionValidator.js +3 -2
  84. package/lib/commands/update/checkVersionValidator.js.map +1 -1
  85. package/lib/commands/update/command.d.ts +1 -1
  86. package/lib/commands/update/dependantLibs.d.ts +1 -1
  87. package/lib/commands/update/dependantLibs.d.ts.map +1 -1
  88. package/lib/commands/update/dependantLibs.js +3 -2
  89. package/lib/commands/update/dependantLibs.js.map +1 -1
  90. package/lib/commands/update/update.d.ts.map +1 -1
  91. package/lib/commands/update/update.js +6 -3
  92. package/lib/commands/update/update.js.map +1 -1
  93. package/lib/commands/update/updatePackageJson.d.ts +1 -1
  94. package/lib/commands/update/updatePackageJson.d.ts.map +1 -1
  95. package/lib/commands/update/updatePackageJson.js +7 -7
  96. package/lib/commands/update/updatePackageJson.js.map +1 -1
  97. package/lib/config/configManager.d.ts +2 -0
  98. package/lib/config/configManager.d.ts.map +1 -1
  99. package/lib/config/configManager.js +2 -0
  100. package/lib/config/configManager.js.map +1 -1
  101. package/lib/di/tokens/config.d.ts +5 -8
  102. package/lib/di/tokens/config.d.ts.map +1 -1
  103. package/lib/library/webpack/blocks/css.d.ts.map +1 -1
  104. package/lib/library/webpack/blocks/css.js +42 -15
  105. package/lib/library/webpack/blocks/css.js.map +1 -1
  106. package/lib/library/webpack/blocks/js.d.ts.map +1 -1
  107. package/lib/library/webpack/blocks/js.js +57 -11
  108. package/lib/library/webpack/blocks/js.js.map +1 -1
  109. package/lib/library/webpack/common/main.d.ts.map +1 -1
  110. package/lib/library/webpack/common/main.js +7 -0
  111. package/lib/library/webpack/common/main.js.map +1 -1
  112. package/lib/library/webpack/utils/browserslist.d.ts +4 -0
  113. package/lib/library/webpack/utils/browserslist.d.ts.map +1 -0
  114. package/lib/library/webpack/utils/browserslist.js +27 -0
  115. package/lib/library/webpack/utils/browserslist.js.map +1 -0
  116. package/lib/library/webpack/utils/rsdoctor.d.ts +2 -0
  117. package/lib/library/webpack/utils/rsdoctor.d.ts.map +1 -0
  118. package/lib/library/webpack/utils/rsdoctor.js +27 -0
  119. package/lib/library/webpack/utils/rsdoctor.js.map +1 -0
  120. package/lib/library/webpack/utils/threadLoader.d.ts.map +1 -1
  121. package/lib/library/webpack/utils/threadLoader.js +3 -3
  122. package/lib/library/webpack/utils/threadLoader.js.map +1 -1
  123. package/lib/library/webpack/utils/transpiler.d.ts.map +1 -1
  124. package/lib/library/webpack/utils/transpiler.js +3 -16
  125. package/lib/library/webpack/utils/transpiler.js.map +1 -1
  126. package/lib/schema/autogeneratedSchema.json +240 -120
  127. package/lib/typings/build/Builder.d.ts +6 -2
  128. package/lib/typings/build/Builder.d.ts.map +1 -1
  129. package/lib/typings/configEntry/cli.d.ts +9 -0
  130. package/lib/typings/configEntry/cli.d.ts.map +1 -1
  131. package/lib/utils/commands/dependencies/getLatestPackageVersion.d.ts +1 -1
  132. package/lib/utils/commands/dependencies/getLatestPackageVersion.d.ts.map +1 -1
  133. package/lib/utils/commands/dependencies/getLatestPackageVersion.js +4 -2
  134. package/lib/utils/commands/dependencies/getLatestPackageVersion.js.map +1 -1
  135. package/lib/utils/commands/dependencies/packageHasVersion.d.ts +1 -1
  136. package/lib/utils/commands/dependencies/packageHasVersion.d.ts.map +1 -1
  137. package/lib/utils/commands/dependencies/packageHasVersion.js +3 -2
  138. package/lib/utils/commands/dependencies/packageHasVersion.js.map +1 -1
  139. package/package.json +19 -18
  140. package/schema.json +240 -120
  141. package/src/api/analyze/index.ts +3 -16
  142. package/src/api/benchmark/__integration__/start.test.ts +10 -12
  143. package/src/api/benchmark/build.ts +75 -30
  144. package/src/api/benchmark/const.ts +1 -0
  145. package/src/api/benchmark/index.ts +4 -6
  146. package/src/api/benchmark/start.ts +69 -65
  147. package/src/api/benchmark/types.ts +82 -14
  148. package/src/api/benchmark/utils/compilationUtils.ts +213 -0
  149. package/src/api/benchmark/utils/stats.ts +45 -28
  150. package/src/api/build/index.ts +1 -0
  151. package/src/api/index.ts +1 -1
  152. package/src/api/start/index.ts +1 -0
  153. package/src/builder/webpack/analyzePlugins/rsdoctor.ts +11 -14
  154. package/src/builder/webpack/index.ts +16 -21
  155. package/src/builder/webpack/providers/build/client.ts +7 -2
  156. package/src/builder/webpack/providers/build/server.ts +7 -2
  157. package/src/builder/webpack/providers/shared.ts +53 -5
  158. package/src/builder/webpack/providers/start/shared.ts +7 -2
  159. package/src/cli/index.ts +3 -2
  160. package/src/commands/analyze/command.ts +1 -1
  161. package/src/commands/benchmark/benchmark.ts +168 -33
  162. package/src/commands/benchmark/command.ts +12 -0
  163. package/src/commands/build/command.ts +6 -0
  164. package/src/commands/new/templates/shared/package.json.hbs +1 -1
  165. package/src/commands/start/command.ts +6 -0
  166. package/src/commands/update/checkVersionValidator.ts +4 -2
  167. package/src/commands/update/dependantLibs.ts +3 -1
  168. package/src/commands/update/update.ts +6 -3
  169. package/src/commands/update/updatePackageJson.spec.ts +19 -3
  170. package/src/commands/update/updatePackageJson.ts +7 -2
  171. package/src/config/configManager.ts +4 -0
  172. package/src/library/webpack/blocks/css.ts +52 -16
  173. package/src/library/webpack/blocks/js.ts +61 -12
  174. package/src/library/webpack/common/main.ts +8 -0
  175. package/src/library/webpack/utils/browserslist.ts +29 -0
  176. package/src/library/webpack/utils/rsdoctor.ts +26 -0
  177. package/src/library/webpack/utils/threadLoader.ts +1 -0
  178. package/src/library/webpack/utils/transpiler.ts +3 -18
  179. package/src/models/config.spec.ts +4 -0
  180. package/src/schema/autogeneratedSchema.json +240 -120
  181. package/src/schema/tramvai.spec.ts +2 -0
  182. package/src/typings/build/Builder.ts +7 -2
  183. package/src/typings/configEntry/cli.ts +11 -0
  184. package/src/utils/commands/dependencies/getLatestPackageVersion.ts +4 -1
  185. package/src/utils/commands/dependencies/packageHasVersion.ts +7 -2
  186. package/lib/api/analyze/providers/shared.d.ts +0 -3
  187. package/lib/api/analyze/providers/shared.d.ts.map +0 -1
  188. package/lib/api/analyze/providers/shared.js +0 -23
  189. package/lib/api/analyze/providers/shared.js.map +0 -1
  190. package/lib/builder/webpack/providers/analyze/shared.d.ts +0 -3
  191. package/lib/builder/webpack/providers/analyze/shared.d.ts.map +0 -1
  192. package/lib/builder/webpack/providers/analyze/shared.js +0 -141
  193. package/lib/builder/webpack/providers/analyze/shared.js.map +0 -1
  194. package/src/api/analyze/providers/shared.ts +0 -26
  195. package/src/api/benchmark/utils/stats.spec.ts +0 -36
  196. package/src/builder/webpack/providers/analyze/shared.ts +0 -160
@@ -105,6 +105,7 @@ describe('JSON schema для tramvai.json', () => {
105
105
  "runtimeChunk": false,
106
106
  "serverRunner": "thread",
107
107
  "transpilation": {
108
+ "include": "only-modern",
108
109
  "loader": "babel",
109
110
  },
110
111
  "viewTransitions": false,
@@ -181,6 +182,7 @@ describe('JSON schema для tramvai.json', () => {
181
182
  "minifier": "terser",
182
183
  "reactCompiler": false,
183
184
  "transpilation": {
185
+ "include": "only-modern",
184
186
  "loader": "babel",
185
187
  },
186
188
  "webpack": {
@@ -34,9 +34,14 @@ interface BuilderAnalyzeOptions {
34
34
  plugin?: string;
35
35
  }
36
36
 
37
+ export type BuildStats = {
38
+ maxMemoryRss?: number;
39
+ buildTime: number;
40
+ };
41
+
37
42
  export type GetBuildStats = () => {
38
- clientBuildTime?: number;
39
- serverBuildTime?: number;
43
+ client?: BuildStats;
44
+ server?: BuildStats;
40
45
  maxMemoryRss?: number;
41
46
  };
42
47
 
@@ -75,6 +75,12 @@ export type TranspilationExperiments = {
75
75
  * @default "babel"
76
76
  */
77
77
  loader: OverridableOption<TranspilationLoader>;
78
+
79
+ /**
80
+ * @title customize transpiling of node_modules in prod/dev environments
81
+ * @default "only-modern"
82
+ */
83
+ include?: OverridableOption<'all' | 'only-modern' | 'none' | string[]>;
78
84
  };
79
85
 
80
86
  export interface Experiments {
@@ -89,6 +95,11 @@ export interface Experiments {
89
95
  */
90
96
  minicss: MinicssExperiments;
91
97
 
98
+ /**
99
+ * @title experimental css building by [lightningcss](https://lightningcss.dev/)
100
+ */
101
+ lightningcss?: boolean;
102
+
92
103
  /**
93
104
  * @title experimental settings for code transpilation
94
105
  * @default {}
@@ -3,6 +3,7 @@ import latestVersion from 'latest-version';
3
3
 
4
4
  export const getLatestPackageVersion = async (
5
5
  packageName: string,
6
+ registryUrl: string,
6
7
  version = 'latest',
7
8
  silent = false
8
9
  ) => {
@@ -11,7 +12,9 @@ export const getLatestPackageVersion = async (
11
12
  : ora(`Resolving the highest version satifying to ${version}`).start();
12
13
 
13
14
  try {
14
- const result = await latestVersion(packageName, { version });
15
+ // underlying `registry-url` package uses only `.npmrc` file to resolve registry URL
16
+ // @ts-expect-error uncomplete type definition, `registryUrl` is supported
17
+ const result = await latestVersion(packageName, { version, registryUrl });
15
18
 
16
19
  return result;
17
20
  } finally {
@@ -1,8 +1,13 @@
1
1
  import latestVersion from 'latest-version';
2
2
 
3
- export const packageHasVersion = async (packageName: string, version: string): Promise<boolean> => {
3
+ export const packageHasVersion = async (
4
+ packageName: string,
5
+ version: string,
6
+ registryUrl: string
7
+ ): Promise<boolean> => {
4
8
  try {
5
- await latestVersion(packageName, { version });
9
+ // @ts-expect-error uncomplete type definition, `registryUrl` is supported
10
+ await latestVersion(packageName, { version, registryUrl });
6
11
  return true;
7
12
  } catch (e) {
8
13
  return false;
@@ -1,3 +0,0 @@
1
- import type { Provider } from '@tinkoff/dippy';
2
- export declare const sharedProviders: readonly Provider[];
3
- //# sourceMappingURL=shared.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/api/analyze/providers/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAU/C,eAAO,MAAM,eAAe,EAAE,SAAS,QAAQ,EAe9C,CAAC"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sharedProviders = void 0;
4
- const dippy_1 = require("@tinkoff/dippy");
5
- const tokens_1 = require("../../../di/tokens");
6
- const configManager_1 = require("../../../config/configManager");
7
- exports.sharedProviders = [
8
- (0, dippy_1.provide)({
9
- provide: tokens_1.CONFIG_MANAGER_TOKEN,
10
- useFactory: ({ configEntry, parameters }) => {
11
- return (0, configManager_1.createConfigManager)(configEntry, {
12
- ...parameters,
13
- env: 'production',
14
- buildType: 'client',
15
- });
16
- },
17
- deps: {
18
- configEntry: tokens_1.CONFIG_ENTRY_TOKEN,
19
- parameters: tokens_1.COMMAND_PARAMETERS_TOKEN,
20
- },
21
- }),
22
- ];
23
- //# sourceMappingURL=shared.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/api/analyze/providers/shared.ts"],"names":[],"mappings":";;;AACA,0CAAyC;AACzC,+CAI4B;AAC5B,iEAAoE;AAGvD,QAAA,eAAe,GAAwB;IAClD,IAAA,eAAO,EAAC;QACN,OAAO,EAAE,6BAAoB;QAC7B,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE;YAC1C,OAAO,IAAA,mCAAmB,EAAC,WAA6B,EAAE;gBACxD,GAAG,UAAU;gBACb,GAAG,EAAE,YAAY;gBACjB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE;YACJ,WAAW,EAAE,2BAAkB;YAC/B,UAAU,EAAE,iCAAwB;SACrC;KACF,CAAC;CACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Provider } from '@tinkoff/dippy';
2
- export declare const analyzeSharedProviders: Provider[];
3
- //# sourceMappingURL=shared.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../src/builder/webpack/providers/analyze/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAwC/C,eAAO,MAAM,sBAAsB,EAAE,QAAQ,EAuH5C,CAAC"}
@@ -1,141 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.analyzeSharedProviders = void 0;
4
- const tslib_1 = require("tslib");
5
- const dippy_1 = require("@tinkoff/dippy");
6
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
7
- const rimraf_1 = tslib_1.__importDefault(require("rimraf"));
8
- const webpack_1 = tslib_1.__importDefault(require("webpack"));
9
- const tokens_1 = require("../../../../di/tokens");
10
- const toWebpackConfig_1 = require("../../../../library/webpack/utils/toWebpackConfig");
11
- const npmRequire_1 = require("../../../../utils/npmRequire");
12
- const bundle_1 = require("../../analyzePlugins/bundle");
13
- const statoscope_1 = require("../../analyzePlugins/statoscope");
14
- const whyBundled_1 = require("../../analyzePlugins/whyBundled");
15
- const rsdoctor_1 = require("../../analyzePlugins/rsdoctor");
16
- const tokens_2 = require("../../tokens");
17
- const runWebpack_1 = require("../../utils/runWebpack");
18
- const pluginMap = {
19
- bundle: bundle_1.BundleAnalyzePlugin,
20
- whybundled: whyBundled_1.WhyBundledAnalyzePlugin,
21
- statoscope: statoscope_1.StatoscopeAnalyzePlugin,
22
- rsdoctor: rsdoctor_1.RsdoctorAnalyzePlugin,
23
- };
24
- exports.analyzeSharedProviders = [
25
- (0, dippy_1.provide)({
26
- provide: tokens_2.WEBPACK_ANALYZE_PLUGIN_TOKEN,
27
- useFactory: ({ pluginName }) => {
28
- const PluginClass = pluginMap[pluginName];
29
- if (!PluginClass) {
30
- throw new Error('Set correct plugin option');
31
- }
32
- return new PluginClass();
33
- },
34
- deps: {
35
- pluginName: tokens_2.WEBPACK_ANALYZE_PLUGIN_NAME_TOKEN,
36
- },
37
- }),
38
- (0, dippy_1.provide)({
39
- provide: tokens_2.CLIENT_CONFIG_MANAGER_TOKEN,
40
- useFactory: ({ configManager }) => {
41
- return configManager.withSettings({
42
- buildType: 'client',
43
- });
44
- },
45
- deps: {
46
- configManager: tokens_1.CONFIG_MANAGER_TOKEN,
47
- },
48
- }),
49
- (0, dippy_1.provide)({
50
- provide: tokens_2.WEBPACK_CLIENT_COMPILER_TOKEN,
51
- useFactory: ({ webpackConfig, analyzePlugin }) => {
52
- return (0, webpack_1.default)((0, toWebpackConfig_1.toWebpackConfig)(analyzePlugin.patchConfig(webpackConfig)));
53
- },
54
- deps: {
55
- webpackConfig: tokens_2.WEBPACK_CLIENT_CONFIG_TOKEN,
56
- analyzePlugin: tokens_2.WEBPACK_ANALYZE_PLUGIN_TOKEN,
57
- },
58
- }),
59
- (0, dippy_1.provide)({
60
- provide: tokens_2.INIT_HANDLER_TOKEN,
61
- multi: true,
62
- useFactory: ({ configManager }) => {
63
- return function clearBuildDir() {
64
- return rimraf_1.default.sync(`${configManager.buildPath}/**`, {});
65
- };
66
- },
67
- deps: {
68
- configManager: tokens_2.CLIENT_CONFIG_MANAGER_TOKEN,
69
- },
70
- }),
71
- (0, dippy_1.provide)({
72
- provide: tokens_2.INIT_HANDLER_TOKEN,
73
- multi: true,
74
- useFactory: ({ configManager, rootDir, packageManager }) => {
75
- return async function prepareImageOptimization() {
76
- if (configManager.imageOptimization?.enabled) {
77
- await (0, npmRequire_1.npmRequire)({
78
- cliRootDir: rootDir,
79
- packageManager,
80
- packageName: 'image-webpack-loader',
81
- description: 'Устанавливаем зависимости для опции imageOptimization',
82
- });
83
- }
84
- };
85
- },
86
- deps: {
87
- configManager: tokens_2.CLIENT_CONFIG_MANAGER_TOKEN,
88
- rootDir: tokens_1.CLI_ROOT_DIR_TOKEN,
89
- packageManager: tokens_1.CLI_PACKAGE_MANAGER,
90
- },
91
- }),
92
- (0, dippy_1.provide)({
93
- provide: tokens_2.INIT_HANDLER_TOKEN,
94
- multi: true,
95
- useFactory: ({ analyzePlugin, rootDir, packageManager }) => {
96
- const { requireDeps } = analyzePlugin;
97
- return async () => {
98
- if (requireDeps) {
99
- await (0, npmRequire_1.npmRequireList)({
100
- cliRootDir: rootDir,
101
- packageManager,
102
- dependencies: requireDeps,
103
- description: 'Install dependencies for the analyze command',
104
- });
105
- }
106
- };
107
- },
108
- deps: {
109
- analyzePlugin: tokens_2.WEBPACK_ANALYZE_PLUGIN_TOKEN,
110
- rootDir: tokens_1.CLI_ROOT_DIR_TOKEN,
111
- packageManager: tokens_1.CLI_PACKAGE_MANAGER,
112
- },
113
- }),
114
- (0, dippy_1.provide)({
115
- provide: tokens_2.PROCESS_HANDLER_TOKEN,
116
- multi: true,
117
- useFactory: ({ webpackCompiler, configManager }) => {
118
- return function webpackBuild() {
119
- console.log(chalk_1.default.green('Starting build with analyze tool'));
120
- return (0, runWebpack_1.runWebpack)(webpackCompiler, { verboseWebpack: configManager.verboseWebpack });
121
- };
122
- },
123
- deps: {
124
- webpackCompiler: tokens_2.WEBPACK_CLIENT_COMPILER_TOKEN,
125
- configManager: tokens_1.CONFIG_MANAGER_TOKEN,
126
- },
127
- }),
128
- (0, dippy_1.provide)({
129
- provide: tokens_2.CLOSE_HANDLER_TOKEN,
130
- multi: true,
131
- useFactory: ({ analyzePlugin }) => {
132
- return () => {
133
- return analyzePlugin.afterBuild();
134
- };
135
- },
136
- deps: {
137
- analyzePlugin: tokens_2.WEBPACK_ANALYZE_PLUGIN_TOKEN,
138
- },
139
- }),
140
- ];
141
- //# sourceMappingURL=shared.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../src/builder/webpack/providers/analyze/shared.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import type { Provider } from '@tinkoff/dippy';
2
- import { provide } from '@tinkoff/dippy';
3
- import {
4
- CONFIG_MANAGER_TOKEN,
5
- COMMAND_PARAMETERS_TOKEN,
6
- CONFIG_ENTRY_TOKEN,
7
- } from '../../../di/tokens';
8
- import { createConfigManager } from '../../../config/configManager';
9
- import type { CliConfigEntry } from '../../../typings/configEntry/cli';
10
-
11
- export const sharedProviders: readonly Provider[] = [
12
- provide({
13
- provide: CONFIG_MANAGER_TOKEN,
14
- useFactory: ({ configEntry, parameters }) => {
15
- return createConfigManager(configEntry as CliConfigEntry, {
16
- ...parameters,
17
- env: 'production',
18
- buildType: 'client',
19
- });
20
- },
21
- deps: {
22
- configEntry: CONFIG_ENTRY_TOKEN,
23
- parameters: COMMAND_PARAMETERS_TOKEN,
24
- },
25
- }),
26
- ];
@@ -1,36 +0,0 @@
1
- import { getSamplesStats } from './stats';
2
-
3
- describe('getSamplesStats', () => {
4
- it('base case', () => {
5
- const samples = [1, 1, 1, 1, 1];
6
-
7
- expect(getSamplesStats(samples)).toEqual({
8
- samples,
9
- mean: 1,
10
- std: 0,
11
- variance: 0,
12
- });
13
- });
14
-
15
- it('case 1', () => {
16
- const samples = [1, 2, 3, 4, 5, 6, 7];
17
-
18
- expect(getSamplesStats(samples)).toEqual({
19
- samples,
20
- mean: 4,
21
- std: 2,
22
- variance: 50,
23
- });
24
- });
25
-
26
- it('case 2', () => {
27
- const samples = [100, 105, 103, 95, 102, 109, 98];
28
-
29
- expect(getSamplesStats(samples)).toEqual({
30
- samples,
31
- mean: 101.71428571428571,
32
- std: 4.266624149448022,
33
- variance: 4.194714753670809,
34
- });
35
- });
36
- });
@@ -1,160 +0,0 @@
1
- import type { Provider } from '@tinkoff/dippy';
2
- import { provide } from '@tinkoff/dippy';
3
- import chalk from 'chalk';
4
- import rimraf from 'rimraf';
5
- import webpack from 'webpack';
6
- import {
7
- CLI_PACKAGE_MANAGER,
8
- CLI_ROOT_DIR_TOKEN,
9
- CONFIG_MANAGER_TOKEN,
10
- } from '../../../../di/tokens';
11
- import { toWebpackConfig } from '../../../../library/webpack/utils/toWebpackConfig';
12
- import { npmRequire, npmRequireList } from '../../../../utils/npmRequire';
13
- import { BundleAnalyzePlugin } from '../../analyzePlugins/bundle';
14
- import { StatoscopeAnalyzePlugin } from '../../analyzePlugins/statoscope';
15
- import { WhyBundledAnalyzePlugin } from '../../analyzePlugins/whyBundled';
16
- import { RsdoctorAnalyzePlugin } from '../../analyzePlugins/rsdoctor';
17
- import {
18
- CLIENT_CONFIG_MANAGER_TOKEN,
19
- INIT_HANDLER_TOKEN,
20
- CLOSE_HANDLER_TOKEN,
21
- PROCESS_HANDLER_TOKEN,
22
- WEBPACK_ANALYZE_PLUGIN_NAME_TOKEN,
23
- WEBPACK_ANALYZE_PLUGIN_TOKEN,
24
- WEBPACK_CLIENT_COMPILER_TOKEN,
25
- WEBPACK_CLIENT_CONFIG_TOKEN,
26
- } from '../../tokens';
27
- import type { AnalyzePlugin } from '../../types';
28
- import { runWebpack } from '../../utils/runWebpack';
29
-
30
- interface Type<T> extends Function {
31
- new (...args: any[]): T;
32
- }
33
-
34
- const pluginMap: Record<string, Type<AnalyzePlugin>> = {
35
- bundle: BundleAnalyzePlugin,
36
- whybundled: WhyBundledAnalyzePlugin,
37
- statoscope: StatoscopeAnalyzePlugin,
38
- rsdoctor: RsdoctorAnalyzePlugin,
39
- };
40
-
41
- export const analyzeSharedProviders: Provider[] = [
42
- provide({
43
- provide: WEBPACK_ANALYZE_PLUGIN_TOKEN,
44
- useFactory: ({ pluginName }) => {
45
- const PluginClass = pluginMap[pluginName];
46
-
47
- if (!PluginClass) {
48
- throw new Error('Set correct plugin option');
49
- }
50
-
51
- return new PluginClass();
52
- },
53
- deps: {
54
- pluginName: WEBPACK_ANALYZE_PLUGIN_NAME_TOKEN,
55
- },
56
- }),
57
- provide({
58
- provide: CLIENT_CONFIG_MANAGER_TOKEN,
59
- useFactory: ({ configManager }) => {
60
- return configManager.withSettings({
61
- buildType: 'client',
62
- });
63
- },
64
- deps: {
65
- configManager: CONFIG_MANAGER_TOKEN,
66
- },
67
- }),
68
- provide({
69
- provide: WEBPACK_CLIENT_COMPILER_TOKEN,
70
- useFactory: ({ webpackConfig, analyzePlugin }) => {
71
- return webpack(toWebpackConfig(analyzePlugin.patchConfig(webpackConfig)));
72
- },
73
- deps: {
74
- webpackConfig: WEBPACK_CLIENT_CONFIG_TOKEN,
75
- analyzePlugin: WEBPACK_ANALYZE_PLUGIN_TOKEN,
76
- },
77
- }),
78
- provide({
79
- provide: INIT_HANDLER_TOKEN,
80
- multi: true,
81
- useFactory: ({ configManager }) => {
82
- return function clearBuildDir() {
83
- return rimraf.sync(`${configManager.buildPath}/**`, {});
84
- };
85
- },
86
- deps: {
87
- configManager: CLIENT_CONFIG_MANAGER_TOKEN,
88
- },
89
- }),
90
- provide({
91
- provide: INIT_HANDLER_TOKEN,
92
- multi: true,
93
- useFactory: ({ configManager, rootDir, packageManager }) => {
94
- return async function prepareImageOptimization() {
95
- if (configManager.imageOptimization?.enabled) {
96
- await npmRequire({
97
- cliRootDir: rootDir,
98
- packageManager,
99
- packageName: 'image-webpack-loader',
100
- description: 'Устанавливаем зависимости для опции imageOptimization',
101
- });
102
- }
103
- };
104
- },
105
- deps: {
106
- configManager: CLIENT_CONFIG_MANAGER_TOKEN,
107
- rootDir: CLI_ROOT_DIR_TOKEN,
108
- packageManager: CLI_PACKAGE_MANAGER,
109
- },
110
- }),
111
- provide({
112
- provide: INIT_HANDLER_TOKEN,
113
- multi: true,
114
- useFactory: ({ analyzePlugin, rootDir, packageManager }) => {
115
- const { requireDeps } = analyzePlugin;
116
-
117
- return async () => {
118
- if (requireDeps) {
119
- await npmRequireList({
120
- cliRootDir: rootDir,
121
- packageManager,
122
- dependencies: requireDeps,
123
- description: 'Install dependencies for the analyze command',
124
- });
125
- }
126
- };
127
- },
128
- deps: {
129
- analyzePlugin: WEBPACK_ANALYZE_PLUGIN_TOKEN,
130
- rootDir: CLI_ROOT_DIR_TOKEN,
131
- packageManager: CLI_PACKAGE_MANAGER,
132
- },
133
- }),
134
- provide({
135
- provide: PROCESS_HANDLER_TOKEN,
136
- multi: true,
137
- useFactory: ({ webpackCompiler, configManager }) => {
138
- return function webpackBuild() {
139
- console.log(chalk.green('Starting build with analyze tool'));
140
- return runWebpack(webpackCompiler, { verboseWebpack: configManager.verboseWebpack });
141
- };
142
- },
143
- deps: {
144
- webpackCompiler: WEBPACK_CLIENT_COMPILER_TOKEN,
145
- configManager: CONFIG_MANAGER_TOKEN,
146
- },
147
- }),
148
- provide({
149
- provide: CLOSE_HANDLER_TOKEN,
150
- multi: true,
151
- useFactory: ({ analyzePlugin }) => {
152
- return () => {
153
- return analyzePlugin.afterBuild();
154
- };
155
- },
156
- deps: {
157
- analyzePlugin: WEBPACK_ANALYZE_PLUGIN_TOKEN,
158
- },
159
- }),
160
- ];