@tramvai/cli 6.68.6 → 6.77.3

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 (127) 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/index.js +1 -1
  9. package/lib/api/index.js.map +1 -1
  10. package/lib/api/start/application.experimental.d.ts.map +1 -1
  11. package/lib/api/start/application.experimental.js +13 -0
  12. package/lib/api/start/application.experimental.js.map +1 -1
  13. package/lib/api/start/index.d.ts +1 -0
  14. package/lib/api/start/index.d.ts.map +1 -1
  15. package/lib/api/start/index.js.map +1 -1
  16. package/lib/builder/webpack/analyzePlugins/rsdoctor.d.ts +2 -2
  17. package/lib/builder/webpack/analyzePlugins/rsdoctor.d.ts.map +1 -1
  18. package/lib/builder/webpack/analyzePlugins/rsdoctor.js +4 -2
  19. package/lib/builder/webpack/analyzePlugins/rsdoctor.js.map +1 -1
  20. package/lib/builder/webpack/index.d.ts.map +1 -1
  21. package/lib/builder/webpack/index.js +14 -12
  22. package/lib/builder/webpack/index.js.map +1 -1
  23. package/lib/builder/webpack/providers/build/client.d.ts.map +1 -1
  24. package/lib/builder/webpack/providers/build/client.js +3 -2
  25. package/lib/builder/webpack/providers/build/client.js.map +1 -1
  26. package/lib/builder/webpack/providers/build/server.d.ts.map +1 -1
  27. package/lib/builder/webpack/providers/build/server.js +3 -2
  28. package/lib/builder/webpack/providers/build/server.js.map +1 -1
  29. package/lib/builder/webpack/providers/shared.d.ts.map +1 -1
  30. package/lib/builder/webpack/providers/shared.js +31 -1
  31. package/lib/builder/webpack/providers/shared.js.map +1 -1
  32. package/lib/builder/webpack/providers/start/shared.d.ts.map +1 -1
  33. package/lib/builder/webpack/providers/start/shared.js +6 -2
  34. package/lib/builder/webpack/providers/start/shared.js.map +1 -1
  35. package/lib/builder/webpack/tokens.d.ts +4 -0
  36. package/lib/builder/webpack/tokens.d.ts.map +1 -1
  37. package/lib/cli/index.d.ts.map +1 -1
  38. package/lib/cli/index.js +12 -12
  39. package/lib/cli/index.js.map +1 -1
  40. package/lib/commands/analyze/command.d.ts +1 -1
  41. package/lib/commands/analyze/command.d.ts.map +1 -1
  42. package/lib/commands/build/command.d.ts.map +1 -1
  43. package/lib/commands/build/command.js +5 -0
  44. package/lib/commands/build/command.js.map +1 -1
  45. package/lib/commands/new/steps/installDependencies.d.ts.map +1 -1
  46. package/lib/commands/new/steps/installDependencies.js +3 -4
  47. package/lib/commands/new/steps/installDependencies.js.map +1 -1
  48. package/lib/commands/start/command.d.ts.map +1 -1
  49. package/lib/commands/start/command.js +5 -0
  50. package/lib/commands/start/command.js.map +1 -1
  51. package/lib/commands/static/application.d.ts.map +1 -1
  52. package/lib/commands/static/application.js +9 -3
  53. package/lib/commands/static/application.js.map +1 -1
  54. package/lib/commands/static/generate.d.ts.map +1 -1
  55. package/lib/commands/static/generate.js +16 -12
  56. package/lib/commands/static/generate.js.map +1 -1
  57. package/lib/config/configManager.d.ts +1 -0
  58. package/lib/config/configManager.d.ts.map +1 -1
  59. package/lib/config/configManager.js +1 -0
  60. package/lib/config/configManager.js.map +1 -1
  61. package/lib/di/tokens/config.d.ts +2 -0
  62. package/lib/di/tokens/config.d.ts.map +1 -1
  63. package/lib/library/webpack/blocks/css.d.ts.map +1 -1
  64. package/lib/library/webpack/blocks/css.js +42 -15
  65. package/lib/library/webpack/blocks/css.js.map +1 -1
  66. package/lib/library/webpack/blocks/js.d.ts.map +1 -1
  67. package/lib/library/webpack/blocks/js.js +52 -11
  68. package/lib/library/webpack/blocks/js.js.map +1 -1
  69. package/lib/library/webpack/common/main.d.ts.map +1 -1
  70. package/lib/library/webpack/common/main.js +2 -1
  71. package/lib/library/webpack/common/main.js.map +1 -1
  72. package/lib/library/webpack/utils/browserslist.d.ts +4 -0
  73. package/lib/library/webpack/utils/browserslist.d.ts.map +1 -0
  74. package/lib/library/webpack/utils/browserslist.js +27 -0
  75. package/lib/library/webpack/utils/browserslist.js.map +1 -0
  76. package/lib/library/webpack/utils/transpiler.d.ts.map +1 -1
  77. package/lib/library/webpack/utils/transpiler.js +3 -16
  78. package/lib/library/webpack/utils/transpiler.js.map +1 -1
  79. package/lib/schema/autogeneratedSchema.json +216 -15
  80. package/lib/typings/configEntry/cli.d.ts +9 -0
  81. package/lib/typings/configEntry/cli.d.ts.map +1 -1
  82. package/lib/utils/dev-app/request.d.ts +1 -0
  83. package/lib/utils/dev-app/request.d.ts.map +1 -1
  84. package/lib/utils/dev-app/request.js +10 -1
  85. package/lib/utils/dev-app/request.js.map +1 -1
  86. package/package.json +39 -37
  87. package/schema.json +216 -15
  88. package/src/api/analyze/index.ts +3 -16
  89. package/src/api/index.ts +1 -1
  90. package/src/api/start/application.experimental.ts +14 -0
  91. package/src/api/start/index.ts +1 -0
  92. package/src/builder/webpack/analyzePlugins/rsdoctor.ts +6 -3
  93. package/src/builder/webpack/index.ts +16 -21
  94. package/src/builder/webpack/providers/build/client.ts +7 -2
  95. package/src/builder/webpack/providers/build/server.ts +7 -2
  96. package/src/builder/webpack/providers/shared.ts +45 -1
  97. package/src/builder/webpack/providers/start/shared.ts +7 -2
  98. package/src/cli/index.ts +3 -2
  99. package/src/commands/analyze/command.ts +1 -1
  100. package/src/commands/build/command.ts +6 -0
  101. package/src/commands/new/steps/installDependencies.ts +3 -4
  102. package/src/commands/new/templates/app/block/shared/header/Header.spec.tsx.hbs +7 -5
  103. package/src/commands/new/templates/shared/package.json.hbs +1 -1
  104. package/src/commands/start/command.ts +6 -0
  105. package/src/commands/static/application.ts +11 -4
  106. package/src/commands/static/generate.ts +19 -12
  107. package/src/config/configManager.ts +2 -0
  108. package/src/library/webpack/blocks/css.ts +52 -16
  109. package/src/library/webpack/blocks/js.ts +58 -12
  110. package/src/library/webpack/common/main.ts +6 -2
  111. package/src/library/webpack/utils/browserslist.ts +29 -0
  112. package/src/library/webpack/utils/transpiler.ts +3 -20
  113. package/src/models/config.spec.ts +4 -0
  114. package/src/schema/autogeneratedSchema.json +216 -15
  115. package/src/schema/tramvai.spec.ts +2 -0
  116. package/src/typings/configEntry/cli.ts +11 -0
  117. package/src/utils/dev-app/request.ts +15 -0
  118. package/lib/api/analyze/providers/shared.d.ts +0 -3
  119. package/lib/api/analyze/providers/shared.d.ts.map +0 -1
  120. package/lib/api/analyze/providers/shared.js +0 -23
  121. package/lib/api/analyze/providers/shared.js.map +0 -1
  122. package/lib/builder/webpack/providers/analyze/shared.d.ts +0 -3
  123. package/lib/builder/webpack/providers/analyze/shared.d.ts.map +0 -1
  124. package/lib/builder/webpack/providers/analyze/shared.js +0 -137
  125. package/lib/builder/webpack/providers/analyze/shared.js.map +0 -1
  126. package/src/api/analyze/providers/shared.ts +0 -26
  127. package/src/builder/webpack/providers/analyze/shared.ts +0 -156
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.appBundleInfo = exports.appRequest = void 0;
3
+ exports.appPrerenderRoutes = exports.appBundleInfo = exports.appRequest = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const propOr_1 = tslib_1.__importDefault(require("@tinkoff/utils/object/propOr"));
6
6
  const request_core_1 = tslib_1.__importDefault(require("@tinkoff/request-core"));
@@ -22,4 +22,13 @@ const appBundleInfo = async (configManager) => {
22
22
  return (0, propOr_1.default)('payload', [], response);
23
23
  };
24
24
  exports.appBundleInfo = appBundleInfo;
25
+ const appPrerenderRoutes = async (configManager) => {
26
+ const { name } = configManager;
27
+ const response = await (0, exports.appRequest)(configManager, `/${name}/papi/prerenderRoutes`, {
28
+ timeout: 5000,
29
+ retry: 3,
30
+ });
31
+ return (0, propOr_1.default)('payload', [], response);
32
+ };
33
+ exports.appPrerenderRoutes = appPrerenderRoutes;
25
34
  //# sourceMappingURL=request.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/utils/dev-app/request.ts"],"names":[],"mappings":";;;;AAAA,kFAAkD;AAElD,iFAAkD;AAClD,iHAAyD;AACzD,iGAAkD;AAGlD,MAAM,OAAO,GAAG,IAAA,sBAAa,EAAC,CAAC,IAAA,8BAAK,GAAE,EAAE,IAAA,sCAAI,GAAE,CAAC,CAAC,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAI,aAA4B,EAAE,IAAY,EAAE,OAAiB,EAAE,EAAE;IAC7F,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IACrC,MAAM,UAAU,GAAG,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC;IAE5C,OAAO,OAAO,CAAI,EAAE,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC;AALW,QAAA,UAAU,cAKrB;AAOK,MAAM,aAAa,GAAG,KAAK,EAAE,aAA4B,EAAE,EAAE;IAClE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IAE/B,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAqB,aAAa,EAAE,IAAI,IAAI,kBAAkB,EAAE;QAC/F,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;KACT,CAAC,CAAC;IAEH,OAAO,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC,CAAC;AATW,QAAA,aAAa,iBASxB"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/utils/dev-app/request.ts"],"names":[],"mappings":";;;;AAAA,kFAAkD;AAElD,iFAAkD;AAClD,iHAAyD;AACzD,iGAAkD;AAGlD,MAAM,OAAO,GAAG,IAAA,sBAAa,EAAC,CAAC,IAAA,8BAAK,GAAE,EAAE,IAAA,sCAAI,GAAE,CAAC,CAAC,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAI,aAA4B,EAAE,IAAY,EAAE,OAAiB,EAAE,EAAE;IAC7F,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IACrC,MAAM,UAAU,GAAG,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC;IAE5C,OAAO,OAAO,CAAI,EAAE,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC;AALW,QAAA,UAAU,cAKrB;AAOK,MAAM,aAAa,GAAG,KAAK,EAAE,aAA4B,EAAE,EAAE;IAClE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IAE/B,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAqB,aAAa,EAAE,IAAI,IAAI,kBAAkB,EAAE;QAC/F,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;KACT,CAAC,CAAC;IAEH,OAAO,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC,CAAC;AATW,QAAA,aAAa,iBASxB;AAEK,MAAM,kBAAkB,GAAG,KAAK,EAAE,aAA4B,EAAE,EAAE;IACvE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IAE/B,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAC/B,aAAa,EACb,IAAI,IAAI,uBAAuB,EAC/B;QACE,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;KACT,CACF,CAAC;IAEF,OAAO,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC,CAAC;AAbW,QAAA,kBAAkB,sBAa7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/cli",
3
- "version": "6.68.6",
3
+ "version": "6.77.3",
4
4
  "description": "Cli инструмент для сборки и запуска приложений",
5
5
  "engines": {
6
6
  "node": ">=20.18.1"
@@ -34,27 +34,27 @@
34
34
  "main": "lib/api/index.js",
35
35
  "typings": "lib/api/index.d.ts",
36
36
  "dependencies": {
37
- "@babel/cli": "^7.18.10",
38
- "@babel/core": "^7.18.10",
39
- "@babel/helper-annotate-as-pure": "^7.18.6",
40
- "@babel/plugin-external-helpers": "^7.18.6",
41
- "@babel/plugin-proposal-decorators": "^7.18.10",
42
- "@babel/plugin-proposal-export-default-from": "^7.18.10",
37
+ "@babel/cli": "^7.28.3",
38
+ "@babel/core": "^7.28.5",
39
+ "@babel/helper-annotate-as-pure": "^7.27.3",
40
+ "@babel/plugin-external-helpers": "^7.27.1",
41
+ "@babel/plugin-proposal-decorators": "^7.28.0",
42
+ "@babel/plugin-proposal-export-default-from": "^7.27.1",
43
43
  "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
44
44
  "@babel/plugin-proposal-numeric-separator": "^7.18.6",
45
- "@babel/plugin-proposal-object-rest-spread": "^7.18.9",
46
- "@babel/plugin-proposal-optional-chaining": "^7.18.9",
45
+ "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
46
+ "@babel/plugin-proposal-optional-chaining": "^7.21.0",
47
47
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
48
- "@babel/plugin-transform-duplicate-keys": "^7.18.9",
49
- "@babel/plugin-transform-react-constant-elements": "^7.18.12",
50
- "@babel/plugin-transform-runtime": "^7.18.10",
51
- "@babel/preset-env": "^7.18.10",
52
- "@babel/preset-react": "^7.18.6",
53
- "@babel/preset-typescript": "^7.18.6",
54
- "@babel/register": "^7.18.9",
55
- "@babel/runtime": "^7.18.9",
56
- "@babel/traverse": "^7.18.11",
57
- "@babel/types": "^7.18.10",
48
+ "@babel/plugin-transform-duplicate-keys": "^7.27.1",
49
+ "@babel/plugin-transform-react-constant-elements": "^7.27.1",
50
+ "@babel/plugin-transform-runtime": "^7.28.5",
51
+ "@babel/preset-env": "^7.28.5",
52
+ "@babel/preset-react": "^7.28.5",
53
+ "@babel/preset-typescript": "^7.28.5",
54
+ "@babel/register": "^7.28.3",
55
+ "@babel/runtime": "^7.28.4",
56
+ "@babel/traverse": "^7.28.5",
57
+ "@babel/types": "^7.28.5",
58
58
  "@discoveryjs/json-ext": "^0.5.7",
59
59
  "@fastify/compress": "^6.2.0",
60
60
  "@fastify/static": "^6.9.0",
@@ -63,26 +63,26 @@
63
63
  "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
64
64
  "@rsdoctor/webpack-plugin": "^1.3.6",
65
65
  "@svgr/webpack": "^8.1.0",
66
- "@tinkoff/browserslist-config": "0.6.2",
67
- "@tinkoff/dippy": "0.12.3",
68
- "@tinkoff/is-modern-lib": "6.1.0",
66
+ "@tinkoff/browserslist-config": "0.6.3",
67
+ "@tinkoff/dippy": "0.12.6",
68
+ "@tinkoff/is-modern-lib": "6.1.1",
69
69
  "@tinkoff/logger": "^0.10.507",
70
- "@tinkoff/minicss-class-generator": "0.6.1",
71
- "@tinkoff/package-manager-wrapper": "0.5.3",
70
+ "@tinkoff/minicss-class-generator": "0.6.2",
71
+ "@tinkoff/package-manager-wrapper": "0.5.5",
72
72
  "@tinkoff/request-core": "^0.10.0",
73
- "@tinkoff/request-plugin-protocol-http": "0.15.0",
73
+ "@tinkoff/request-plugin-protocol-http": "0.16.0",
74
74
  "@tinkoff/request-plugin-retry": "^0.3.0",
75
75
  "@tinkoff/utils": "^2.1.3",
76
- "@tinkoff/webpack-dedupe-plugin": "5.0.0",
77
- "@tramvai/api": "6.68.6",
78
- "@tramvai/build": "7.2.0",
79
- "@tramvai/plugin-babel-transpiler": "6.68.6",
80
- "@tramvai/plugin-swc-transpiler": "6.68.6",
81
- "@tramvai/plugin-webpack-builder": "6.68.6",
82
- "@tramvai/plugin-webpack-pwa": "6.68.6",
83
- "@tramvai/react": "6.68.6",
84
- "@tramvai/tools-check-versions": "0.8.0",
85
- "@tramvai/tools-migrate": "0.10.4",
76
+ "@tinkoff/webpack-dedupe-plugin": "5.0.1",
77
+ "@tramvai/api": "6.77.3",
78
+ "@tramvai/build": "7.2.1",
79
+ "@tramvai/plugin-babel-transpiler": "6.77.3",
80
+ "@tramvai/plugin-swc-transpiler": "6.77.3",
81
+ "@tramvai/plugin-webpack-builder": "6.77.3",
82
+ "@tramvai/plugin-webpack-pwa": "6.77.3",
83
+ "@tramvai/react": "6.77.3",
84
+ "@tramvai/tools-check-versions": "0.8.1",
85
+ "@tramvai/tools-migrate": "0.10.6",
86
86
  "ajv": "^8.12.0",
87
87
  "ansi-escapes": "^4.3.2",
88
88
  "autoprefixer": "^10.4.8",
@@ -125,6 +125,8 @@
125
125
  "less": "^3.13.1",
126
126
  "less-loader": "^8.1.1",
127
127
  "lightning-pool": "^2.4.0",
128
+ "lightningcss": "^1.30.2",
129
+ "lightningcss-loader": "^3.0.0",
128
130
  "loader-utils": "^3.2.1",
129
131
  "mini-css-extract-plugin": "2.7.6",
130
132
  "node-plop": "^0.26.0",
@@ -181,7 +183,7 @@
181
183
  },
182
184
  "devDependencies": {
183
185
  "@swc/core": "1.3.100",
184
- "@tramvai/tools-generate-schema": "0.5.0",
186
+ "@tramvai/tools-generate-schema": "0.5.1",
185
187
  "@types/compression": "^1.7.2",
186
188
  "@types/detect-port": "^1.3.5",
187
189
  "@types/express": "^4.17.13",
@@ -198,7 +200,7 @@
198
200
  "@types/stoppable": "^1.1.1",
199
201
  "@types/webpack-dev-middleware": "^5.0.2",
200
202
  "@types/webpack-stats-plugin": "^0.3.2",
201
- "react": "19.0.0",
203
+ "react": "19.0.1",
202
204
  "sharp": "0.34.3"
203
205
  },
204
206
  "peerDependencies": {
package/schema.json CHANGED
@@ -895,6 +895,10 @@
895
895
  },
896
896
  "additionalProperties": false
897
897
  },
898
+ "lightningcss": {
899
+ "title": "experimental css building by [lightningcss](https://lightningcss.dev/)",
900
+ "type": "boolean"
901
+ },
898
902
  "transpilation": {
899
903
  "title": "experimental settings for code transpilation",
900
904
  "default": {},
@@ -933,6 +937,69 @@
933
937
  "type": "string"
934
938
  }
935
939
  ]
940
+ },
941
+ "include": {
942
+ "cli_overridable": "",
943
+ "title": "customize transpiling of node_modules in prod/dev environments",
944
+ "default": "only-modern",
945
+ "anyOf": [
946
+ {
947
+ "type": "array",
948
+ "items": {
949
+ "type": "string"
950
+ }
951
+ },
952
+ {
953
+ "type": "object",
954
+ "properties": {
955
+ "development": {
956
+ "anyOf": [
957
+ {
958
+ "type": "array",
959
+ "items": {
960
+ "type": "string"
961
+ }
962
+ },
963
+ {
964
+ "enum": [
965
+ "all",
966
+ "none",
967
+ "only-modern"
968
+ ],
969
+ "type": "string"
970
+ }
971
+ ]
972
+ },
973
+ "production": {
974
+ "anyOf": [
975
+ {
976
+ "type": "array",
977
+ "items": {
978
+ "type": "string"
979
+ }
980
+ },
981
+ {
982
+ "enum": [
983
+ "all",
984
+ "none",
985
+ "only-modern"
986
+ ],
987
+ "type": "string"
988
+ }
989
+ ]
990
+ }
991
+ },
992
+ "additionalProperties": false
993
+ },
994
+ {
995
+ "enum": [
996
+ "all",
997
+ "none",
998
+ "only-modern"
999
+ ],
1000
+ "type": "string"
1001
+ }
1002
+ ]
936
1003
  }
937
1004
  },
938
1005
  "additionalProperties": false
@@ -1311,23 +1378,23 @@
1311
1378
  "dotAll": {
1312
1379
  "type": "boolean"
1313
1380
  },
1314
- "__@match@8920": {
1381
+ "__@match@9311": {
1315
1382
  "type": "object",
1316
1383
  "additionalProperties": false
1317
1384
  },
1318
- "__@replace@8922": {
1385
+ "__@replace@9313": {
1319
1386
  "type": "object",
1320
1387
  "additionalProperties": false
1321
1388
  },
1322
- "__@search@8925": {
1389
+ "__@search@9316": {
1323
1390
  "type": "object",
1324
1391
  "additionalProperties": false
1325
1392
  },
1326
- "__@split@8927": {
1393
+ "__@split@9318": {
1327
1394
  "type": "object",
1328
1395
  "additionalProperties": false
1329
1396
  },
1330
- "__@matchAll@8929": {
1397
+ "__@matchAll@9320": {
1331
1398
  "type": "object",
1332
1399
  "additionalProperties": false
1333
1400
  }
@@ -1806,6 +1873,10 @@
1806
1873
  },
1807
1874
  "additionalProperties": false
1808
1875
  },
1876
+ "lightningcss": {
1877
+ "title": "experimental css building by [lightningcss](https://lightningcss.dev/)",
1878
+ "type": "boolean"
1879
+ },
1809
1880
  "transpilation": {
1810
1881
  "title": "experimental settings for code transpilation",
1811
1882
  "default": {},
@@ -1844,6 +1915,69 @@
1844
1915
  "type": "string"
1845
1916
  }
1846
1917
  ]
1918
+ },
1919
+ "include": {
1920
+ "cli_overridable": "",
1921
+ "title": "customize transpiling of node_modules in prod/dev environments",
1922
+ "default": "only-modern",
1923
+ "anyOf": [
1924
+ {
1925
+ "type": "array",
1926
+ "items": {
1927
+ "type": "string"
1928
+ }
1929
+ },
1930
+ {
1931
+ "type": "object",
1932
+ "properties": {
1933
+ "development": {
1934
+ "anyOf": [
1935
+ {
1936
+ "type": "array",
1937
+ "items": {
1938
+ "type": "string"
1939
+ }
1940
+ },
1941
+ {
1942
+ "enum": [
1943
+ "all",
1944
+ "none",
1945
+ "only-modern"
1946
+ ],
1947
+ "type": "string"
1948
+ }
1949
+ ]
1950
+ },
1951
+ "production": {
1952
+ "anyOf": [
1953
+ {
1954
+ "type": "array",
1955
+ "items": {
1956
+ "type": "string"
1957
+ }
1958
+ },
1959
+ {
1960
+ "enum": [
1961
+ "all",
1962
+ "none",
1963
+ "only-modern"
1964
+ ],
1965
+ "type": "string"
1966
+ }
1967
+ ]
1968
+ }
1969
+ },
1970
+ "additionalProperties": false
1971
+ },
1972
+ {
1973
+ "enum": [
1974
+ "all",
1975
+ "none",
1976
+ "only-modern"
1977
+ ],
1978
+ "type": "string"
1979
+ }
1980
+ ]
1847
1981
  }
1848
1982
  },
1849
1983
  "additionalProperties": false
@@ -2115,23 +2249,23 @@
2115
2249
  "dotAll": {
2116
2250
  "type": "boolean"
2117
2251
  },
2118
- "__@match@8920": {
2252
+ "__@match@9311": {
2119
2253
  "type": "object",
2120
2254
  "additionalProperties": false
2121
2255
  },
2122
- "__@replace@8922": {
2256
+ "__@replace@9313": {
2123
2257
  "type": "object",
2124
2258
  "additionalProperties": false
2125
2259
  },
2126
- "__@search@8925": {
2260
+ "__@search@9316": {
2127
2261
  "type": "object",
2128
2262
  "additionalProperties": false
2129
2263
  },
2130
- "__@split@8927": {
2264
+ "__@split@9318": {
2131
2265
  "type": "object",
2132
2266
  "additionalProperties": false
2133
2267
  },
2134
- "__@matchAll@8929": {
2268
+ "__@matchAll@9320": {
2135
2269
  "type": "object",
2136
2270
  "additionalProperties": false
2137
2271
  }
@@ -2610,6 +2744,10 @@
2610
2744
  },
2611
2745
  "additionalProperties": false
2612
2746
  },
2747
+ "lightningcss": {
2748
+ "title": "experimental css building by [lightningcss](https://lightningcss.dev/)",
2749
+ "type": "boolean"
2750
+ },
2613
2751
  "transpilation": {
2614
2752
  "title": "experimental settings for code transpilation",
2615
2753
  "default": {},
@@ -2648,6 +2786,69 @@
2648
2786
  "type": "string"
2649
2787
  }
2650
2788
  ]
2789
+ },
2790
+ "include": {
2791
+ "cli_overridable": "",
2792
+ "title": "customize transpiling of node_modules in prod/dev environments",
2793
+ "default": "only-modern",
2794
+ "anyOf": [
2795
+ {
2796
+ "type": "array",
2797
+ "items": {
2798
+ "type": "string"
2799
+ }
2800
+ },
2801
+ {
2802
+ "type": "object",
2803
+ "properties": {
2804
+ "development": {
2805
+ "anyOf": [
2806
+ {
2807
+ "type": "array",
2808
+ "items": {
2809
+ "type": "string"
2810
+ }
2811
+ },
2812
+ {
2813
+ "enum": [
2814
+ "all",
2815
+ "none",
2816
+ "only-modern"
2817
+ ],
2818
+ "type": "string"
2819
+ }
2820
+ ]
2821
+ },
2822
+ "production": {
2823
+ "anyOf": [
2824
+ {
2825
+ "type": "array",
2826
+ "items": {
2827
+ "type": "string"
2828
+ }
2829
+ },
2830
+ {
2831
+ "enum": [
2832
+ "all",
2833
+ "none",
2834
+ "only-modern"
2835
+ ],
2836
+ "type": "string"
2837
+ }
2838
+ ]
2839
+ }
2840
+ },
2841
+ "additionalProperties": false
2842
+ },
2843
+ {
2844
+ "enum": [
2845
+ "all",
2846
+ "none",
2847
+ "only-modern"
2848
+ ],
2849
+ "type": "string"
2850
+ }
2851
+ ]
2651
2852
  }
2652
2853
  },
2653
2854
  "additionalProperties": false
@@ -2919,23 +3120,23 @@
2919
3120
  "dotAll": {
2920
3121
  "type": "boolean"
2921
3122
  },
2922
- "__@match@8920": {
3123
+ "__@match@9311": {
2923
3124
  "type": "object",
2924
3125
  "additionalProperties": false
2925
3126
  },
2926
- "__@replace@8922": {
3127
+ "__@replace@9313": {
2927
3128
  "type": "object",
2928
3129
  "additionalProperties": false
2929
3130
  },
2930
- "__@search@8925": {
3131
+ "__@search@9316": {
2931
3132
  "type": "object",
2932
3133
  "additionalProperties": false
2933
3134
  },
2934
- "__@split@8927": {
3135
+ "__@split@9318": {
2935
3136
  "type": "object",
2936
3137
  "additionalProperties": false
2937
3138
  },
2938
- "__@matchAll@8929": {
3139
+ "__@matchAll@9320": {
2939
3140
  "type": "object",
2940
3141
  "additionalProperties": false
2941
3142
  }
@@ -1,8 +1,5 @@
1
1
  import type { Provider } from '@tinkoff/dippy';
2
2
  import { createCommand } from '../../commands/createCommand';
3
- import { ABSTRACT_BUILDER_FACTORY_TOKEN, COMMAND_PARAMETERS_TOKEN } from '../../di/tokens';
4
- import { registerProviders } from '../../utils/di';
5
- import { sharedProviders } from './providers/shared';
6
3
 
7
4
  export interface Params {
8
5
  target: string;
@@ -17,18 +14,8 @@ export type AnalyzeCommand = (params: Params, providers?: Provider[]) => Promise
17
14
  export default createCommand({
18
15
  name: 'analyze',
19
16
  command: async (di): Promise<void> => {
20
- const { plugin } = di.get(COMMAND_PARAMETERS_TOKEN) as Params;
21
-
22
- registerProviders(di, sharedProviders);
23
-
24
- const builderFactory = di.get(ABSTRACT_BUILDER_FACTORY_TOKEN);
25
- const builder = await builderFactory.createBuilder('webpack', {
26
- options: {
27
- shouldBuildClient: true,
28
- shouldBuildServer: false,
29
- },
30
- });
31
-
32
- await builder.analyze({ plugin });
17
+ throw new Error(
18
+ 'tramvai analyze is deprecated, please use `tramvai start|build --analyze=pluginName`\n'
19
+ );
33
20
  },
34
21
  });
package/src/api/index.ts CHANGED
@@ -33,8 +33,8 @@ const app = createApp({
33
33
  commands: {
34
34
  start: () => import('./start'),
35
35
  build: () => import('./build'),
36
- benchmark: () => import('./benchmark'),
37
36
  analyze: () => import('./analyze'),
37
+ benchmark: () => import('./benchmark'),
38
38
  'start-prod': () => import('./start-prod'),
39
39
  },
40
40
  providers: [
@@ -26,6 +26,7 @@ export const startApplicationExperimental = async (di: Container): Result => {
26
26
  mode: 'development',
27
27
  benchmark: options.benchmark,
28
28
  buildType: options.buildType,
29
+ analyze: options.analyze,
29
30
  port: options.port,
30
31
  host: options.host,
31
32
  staticPort: options.staticPort,
@@ -276,6 +277,19 @@ function mapTramvaiJsonToNewTsConfig({ rootDir }: { rootDir: string }) {
276
277
  }
277
278
  mappedProject.webpack.devtool = applicationProject.webpack.devtool;
278
279
  }
280
+ if (applicationProject.experiments?.transpilation) {
281
+ const applicationProjectInclude = applicationProject.experiments.transpilation.include;
282
+ mappedProject.transpilation = {
283
+ include: {
284
+ development:
285
+ typeof applicationProjectInclude === 'string' ||
286
+ Array.isArray(applicationProjectInclude)
287
+ ? applicationProjectInclude
288
+ : // @ts-ignore
289
+ applicationProjectInclude.development,
290
+ },
291
+ };
292
+ }
279
293
  if (applicationProject.experiments?.pwa) {
280
294
  mappedProject.pwa = {
281
295
  workbox: {
@@ -24,6 +24,7 @@ export type Params = WithConfig<{
24
24
  noClientRebuild?: boolean;
25
25
  resolveSymlinks?: boolean;
26
26
  showConfig?: boolean;
27
+ analyze?: false | 'bundle' | 'whybundled' | 'statoscope' | 'rsdoctor';
27
28
  benchmark?: boolean;
28
29
  withBuildStats?: boolean;
29
30
  // @todo: not working?
@@ -1,4 +1,4 @@
1
- import { RsdoctorWebpackPlugin } from '@rsdoctor/webpack-plugin';
1
+ import type { RsdoctorWebpackPlugin } from '@rsdoctor/webpack-plugin';
2
2
  import { AnalyzePlugin } from '../types';
3
3
 
4
4
  type options = ConstructorParameters<typeof RsdoctorWebpackPlugin<[]>>;
@@ -7,8 +7,11 @@ export class RsdoctorAnalyzePlugin extends AnalyzePlugin {
7
7
 
8
8
  options: options = [];
9
9
 
10
- plugin = RsdoctorWebpackPlugin;
11
-
12
10
  // rsdoctor поднимает dev server
13
11
  afterBuild = () => new Promise(() => null);
12
+
13
+ get plugin() {
14
+ // eslint-disable-next-line import/no-unresolved
15
+ return require('@rsdoctor/webpack-plugin').RsdoctorWebpackMultiplePlugin;
16
+ }
14
17
  }
@@ -27,7 +27,6 @@ import { buildClientProviders } from './providers/build/client';
27
27
  import { buildServerProviders } from './providers/build/server';
28
28
  import { CONFIG_MANAGER_TOKEN } from '../../di/tokens';
29
29
  import { buildApplicationServerProviders } from './providers/build/application/server';
30
- import { analyzeSharedProviders } from './providers/analyze/shared';
31
30
 
32
31
  const BUILDER_NAME = 'webpack';
33
32
 
@@ -53,6 +52,14 @@ export const webpackProviders: Provider[] = [
53
52
  ...(shouldBuildServer ? startServerProviders : []),
54
53
  ]);
55
54
 
55
+ const configManager = di.get(CONFIG_MANAGER_TOKEN);
56
+ if (configManager.analyze) {
57
+ di.register({
58
+ provide: WEBPACK_ANALYZE_PLUGIN_NAME_TOKEN,
59
+ useValue: configManager.analyze,
60
+ });
61
+ }
62
+
56
63
  await runHandlers(di.get({ token: INIT_HANDLER_TOKEN, optional: true, multi: true }));
57
64
 
58
65
  const getBuildStats = di.get(GET_BUILD_STATS_TOKEN);
@@ -89,9 +96,13 @@ export const webpackProviders: Provider[] = [
89
96
  ...(shouldBuildServer ? buildServerProviders : []),
90
97
  ]);
91
98
 
92
- await runHandlers(di.get({ token: INIT_HANDLER_TOKEN, optional: true, multi: true }));
93
-
94
99
  const configManager = di.get(CONFIG_MANAGER_TOKEN);
100
+ if (configManager.analyze) {
101
+ di.register({
102
+ provide: WEBPACK_ANALYZE_PLUGIN_NAME_TOKEN,
103
+ useValue: configManager.analyze,
104
+ });
105
+ }
95
106
 
96
107
  if (configManager.type === 'application') {
97
108
  registerProviders(di, [
@@ -99,6 +110,8 @@ export const webpackProviders: Provider[] = [
99
110
  ]);
100
111
  }
101
112
 
113
+ await runHandlers(di.get({ token: INIT_HANDLER_TOKEN, optional: true, multi: true }));
114
+
102
115
  const getBuildStats = di.get(GET_BUILD_STATS_TOKEN);
103
116
 
104
117
  await runHandlers(
@@ -113,24 +126,6 @@ export const webpackProviders: Provider[] = [
113
126
  getBuildStats,
114
127
  };
115
128
  },
116
- async analyze({ plugin }) {
117
- di.register({
118
- provide: WEBPACK_ANALYZE_PLUGIN_NAME_TOKEN,
119
- useValue: plugin || 'bundle',
120
- });
121
-
122
- registerProviders(di, analyzeSharedProviders);
123
-
124
- await runHandlers(di.get({ token: INIT_HANDLER_TOKEN, optional: true, multi: true }));
125
-
126
- await runHandlers(
127
- di.get({ token: PROCESS_HANDLER_TOKEN, optional: true, multi: true })
128
- );
129
-
130
- await runHandlers(
131
- di.get({ token: CLOSE_HANDLER_TOKEN, optional: true, multi: true })
132
- );
133
- },
134
129
  on(event, callback) {
135
130
  di.get(EVENT_EMITTER_TOKEN).on(event, callback);
136
131
  },