@tramvai/cli 6.68.6 → 6.77.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/const.js +5 -0
- package/bin/platform.js +12 -6
- package/bin/spawn.js +6 -0
- package/lib/api/analyze/index.d.ts.map +1 -1
- package/lib/api/analyze/index.js +1 -13
- package/lib/api/analyze/index.js.map +1 -1
- package/lib/api/index.js +1 -1
- package/lib/api/index.js.map +1 -1
- package/lib/api/start/application.experimental.d.ts.map +1 -1
- package/lib/api/start/application.experimental.js +13 -0
- package/lib/api/start/application.experimental.js.map +1 -1
- package/lib/api/start/index.d.ts +1 -0
- package/lib/api/start/index.d.ts.map +1 -1
- package/lib/api/start/index.js.map +1 -1
- package/lib/builder/webpack/analyzePlugins/rsdoctor.d.ts +2 -2
- package/lib/builder/webpack/analyzePlugins/rsdoctor.d.ts.map +1 -1
- package/lib/builder/webpack/analyzePlugins/rsdoctor.js +4 -2
- package/lib/builder/webpack/analyzePlugins/rsdoctor.js.map +1 -1
- package/lib/builder/webpack/index.d.ts.map +1 -1
- package/lib/builder/webpack/index.js +14 -12
- package/lib/builder/webpack/index.js.map +1 -1
- package/lib/builder/webpack/providers/build/client.d.ts.map +1 -1
- package/lib/builder/webpack/providers/build/client.js +3 -2
- package/lib/builder/webpack/providers/build/client.js.map +1 -1
- package/lib/builder/webpack/providers/build/server.d.ts.map +1 -1
- package/lib/builder/webpack/providers/build/server.js +3 -2
- package/lib/builder/webpack/providers/build/server.js.map +1 -1
- package/lib/builder/webpack/providers/shared.d.ts.map +1 -1
- package/lib/builder/webpack/providers/shared.js +31 -1
- package/lib/builder/webpack/providers/shared.js.map +1 -1
- package/lib/builder/webpack/providers/start/shared.d.ts.map +1 -1
- package/lib/builder/webpack/providers/start/shared.js +6 -2
- package/lib/builder/webpack/providers/start/shared.js.map +1 -1
- package/lib/builder/webpack/tokens.d.ts +2 -0
- package/lib/builder/webpack/tokens.d.ts.map +1 -1
- package/lib/cli/index.d.ts.map +1 -1
- package/lib/cli/index.js +12 -12
- package/lib/cli/index.js.map +1 -1
- package/lib/commands/analyze/command.d.ts +1 -1
- package/lib/commands/analyze/command.d.ts.map +1 -1
- package/lib/commands/build/command.d.ts.map +1 -1
- package/lib/commands/build/command.js +5 -0
- package/lib/commands/build/command.js.map +1 -1
- package/lib/commands/new/steps/installDependencies.d.ts.map +1 -1
- package/lib/commands/new/steps/installDependencies.js +3 -4
- package/lib/commands/new/steps/installDependencies.js.map +1 -1
- package/lib/commands/start/command.d.ts.map +1 -1
- package/lib/commands/start/command.js +5 -0
- package/lib/commands/start/command.js.map +1 -1
- package/lib/commands/static/application.d.ts.map +1 -1
- package/lib/commands/static/application.js +9 -3
- package/lib/commands/static/application.js.map +1 -1
- package/lib/commands/static/generate.d.ts.map +1 -1
- package/lib/commands/static/generate.js +16 -12
- package/lib/commands/static/generate.js.map +1 -1
- package/lib/config/configManager.d.ts +1 -0
- package/lib/config/configManager.d.ts.map +1 -1
- package/lib/config/configManager.js +1 -0
- package/lib/config/configManager.js.map +1 -1
- package/lib/di/tokens/config.d.ts +1 -0
- package/lib/di/tokens/config.d.ts.map +1 -1
- package/lib/library/webpack/blocks/css.d.ts.map +1 -1
- package/lib/library/webpack/blocks/css.js +23 -9
- package/lib/library/webpack/blocks/css.js.map +1 -1
- package/lib/library/webpack/blocks/js.d.ts.map +1 -1
- package/lib/library/webpack/blocks/js.js +52 -11
- package/lib/library/webpack/blocks/js.js.map +1 -1
- package/lib/library/webpack/common/main.d.ts.map +1 -1
- package/lib/library/webpack/common/main.js +2 -1
- package/lib/library/webpack/common/main.js.map +1 -1
- package/lib/schema/autogeneratedSchema.json +204 -15
- package/lib/typings/configEntry/cli.d.ts +5 -0
- package/lib/typings/configEntry/cli.d.ts.map +1 -1
- package/lib/utils/dev-app/request.d.ts +1 -0
- package/lib/utils/dev-app/request.d.ts.map +1 -1
- package/lib/utils/dev-app/request.js +10 -1
- package/lib/utils/dev-app/request.js.map +1 -1
- package/package.json +37 -37
- package/schema.json +204 -15
- package/src/api/analyze/index.ts +3 -16
- package/src/api/index.ts +1 -1
- package/src/api/start/application.experimental.ts +14 -0
- package/src/api/start/index.ts +1 -0
- package/src/builder/webpack/analyzePlugins/rsdoctor.ts +6 -3
- package/src/builder/webpack/index.ts +16 -21
- package/src/builder/webpack/providers/build/client.ts +7 -2
- package/src/builder/webpack/providers/build/server.ts +7 -2
- package/src/builder/webpack/providers/shared.ts +45 -1
- package/src/builder/webpack/providers/start/shared.ts +7 -2
- package/src/cli/index.ts +3 -2
- package/src/commands/analyze/command.ts +1 -1
- package/src/commands/build/command.ts +6 -0
- package/src/commands/new/steps/installDependencies.ts +3 -4
- package/src/commands/new/templates/app/block/shared/header/Header.spec.tsx.hbs +7 -5
- package/src/commands/new/templates/shared/package.json.hbs +1 -1
- package/src/commands/start/command.ts +6 -0
- package/src/commands/static/application.ts +11 -4
- package/src/commands/static/generate.ts +19 -12
- package/src/config/configManager.ts +2 -0
- package/src/library/webpack/blocks/css.ts +24 -8
- package/src/library/webpack/blocks/js.ts +59 -12
- package/src/library/webpack/common/main.ts +6 -2
- package/src/models/config.spec.ts +4 -0
- package/src/schema/autogeneratedSchema.json +204 -15
- package/src/schema/tramvai.spec.ts +2 -0
- package/src/typings/configEntry/cli.ts +6 -0
- package/src/utils/dev-app/request.ts +15 -0
- package/lib/api/analyze/providers/shared.d.ts +0 -3
- package/lib/api/analyze/providers/shared.d.ts.map +0 -1
- package/lib/api/analyze/providers/shared.js +0 -23
- package/lib/api/analyze/providers/shared.js.map +0 -1
- package/lib/builder/webpack/providers/analyze/shared.d.ts +0 -3
- package/lib/builder/webpack/providers/analyze/shared.d.ts.map +0 -1
- package/lib/builder/webpack/providers/analyze/shared.js +0 -137
- package/lib/builder/webpack/providers/analyze/shared.js.map +0 -1
- package/src/api/analyze/providers/shared.ts +0 -26
- package/src/builder/webpack/providers/analyze/shared.ts +0 -156
package/schema.json
CHANGED
|
@@ -933,6 +933,69 @@
|
|
|
933
933
|
"type": "string"
|
|
934
934
|
}
|
|
935
935
|
]
|
|
936
|
+
},
|
|
937
|
+
"include": {
|
|
938
|
+
"cli_overridable": "",
|
|
939
|
+
"title": "customize transpiling of node_modules in prod/dev environments",
|
|
940
|
+
"default": "only-modern",
|
|
941
|
+
"anyOf": [
|
|
942
|
+
{
|
|
943
|
+
"type": "array",
|
|
944
|
+
"items": {
|
|
945
|
+
"type": "string"
|
|
946
|
+
}
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
"type": "object",
|
|
950
|
+
"properties": {
|
|
951
|
+
"development": {
|
|
952
|
+
"anyOf": [
|
|
953
|
+
{
|
|
954
|
+
"type": "array",
|
|
955
|
+
"items": {
|
|
956
|
+
"type": "string"
|
|
957
|
+
}
|
|
958
|
+
},
|
|
959
|
+
{
|
|
960
|
+
"enum": [
|
|
961
|
+
"all",
|
|
962
|
+
"none",
|
|
963
|
+
"only-modern"
|
|
964
|
+
],
|
|
965
|
+
"type": "string"
|
|
966
|
+
}
|
|
967
|
+
]
|
|
968
|
+
},
|
|
969
|
+
"production": {
|
|
970
|
+
"anyOf": [
|
|
971
|
+
{
|
|
972
|
+
"type": "array",
|
|
973
|
+
"items": {
|
|
974
|
+
"type": "string"
|
|
975
|
+
}
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
"enum": [
|
|
979
|
+
"all",
|
|
980
|
+
"none",
|
|
981
|
+
"only-modern"
|
|
982
|
+
],
|
|
983
|
+
"type": "string"
|
|
984
|
+
}
|
|
985
|
+
]
|
|
986
|
+
}
|
|
987
|
+
},
|
|
988
|
+
"additionalProperties": false
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
"enum": [
|
|
992
|
+
"all",
|
|
993
|
+
"none",
|
|
994
|
+
"only-modern"
|
|
995
|
+
],
|
|
996
|
+
"type": "string"
|
|
997
|
+
}
|
|
998
|
+
]
|
|
936
999
|
}
|
|
937
1000
|
},
|
|
938
1001
|
"additionalProperties": false
|
|
@@ -1311,23 +1374,23 @@
|
|
|
1311
1374
|
"dotAll": {
|
|
1312
1375
|
"type": "boolean"
|
|
1313
1376
|
},
|
|
1314
|
-
"__@match@
|
|
1377
|
+
"__@match@9310": {
|
|
1315
1378
|
"type": "object",
|
|
1316
1379
|
"additionalProperties": false
|
|
1317
1380
|
},
|
|
1318
|
-
"__@replace@
|
|
1381
|
+
"__@replace@9312": {
|
|
1319
1382
|
"type": "object",
|
|
1320
1383
|
"additionalProperties": false
|
|
1321
1384
|
},
|
|
1322
|
-
"__@search@
|
|
1385
|
+
"__@search@9315": {
|
|
1323
1386
|
"type": "object",
|
|
1324
1387
|
"additionalProperties": false
|
|
1325
1388
|
},
|
|
1326
|
-
"__@split@
|
|
1389
|
+
"__@split@9317": {
|
|
1327
1390
|
"type": "object",
|
|
1328
1391
|
"additionalProperties": false
|
|
1329
1392
|
},
|
|
1330
|
-
"__@matchAll@
|
|
1393
|
+
"__@matchAll@9319": {
|
|
1331
1394
|
"type": "object",
|
|
1332
1395
|
"additionalProperties": false
|
|
1333
1396
|
}
|
|
@@ -1844,6 +1907,69 @@
|
|
|
1844
1907
|
"type": "string"
|
|
1845
1908
|
}
|
|
1846
1909
|
]
|
|
1910
|
+
},
|
|
1911
|
+
"include": {
|
|
1912
|
+
"cli_overridable": "",
|
|
1913
|
+
"title": "customize transpiling of node_modules in prod/dev environments",
|
|
1914
|
+
"default": "only-modern",
|
|
1915
|
+
"anyOf": [
|
|
1916
|
+
{
|
|
1917
|
+
"type": "array",
|
|
1918
|
+
"items": {
|
|
1919
|
+
"type": "string"
|
|
1920
|
+
}
|
|
1921
|
+
},
|
|
1922
|
+
{
|
|
1923
|
+
"type": "object",
|
|
1924
|
+
"properties": {
|
|
1925
|
+
"development": {
|
|
1926
|
+
"anyOf": [
|
|
1927
|
+
{
|
|
1928
|
+
"type": "array",
|
|
1929
|
+
"items": {
|
|
1930
|
+
"type": "string"
|
|
1931
|
+
}
|
|
1932
|
+
},
|
|
1933
|
+
{
|
|
1934
|
+
"enum": [
|
|
1935
|
+
"all",
|
|
1936
|
+
"none",
|
|
1937
|
+
"only-modern"
|
|
1938
|
+
],
|
|
1939
|
+
"type": "string"
|
|
1940
|
+
}
|
|
1941
|
+
]
|
|
1942
|
+
},
|
|
1943
|
+
"production": {
|
|
1944
|
+
"anyOf": [
|
|
1945
|
+
{
|
|
1946
|
+
"type": "array",
|
|
1947
|
+
"items": {
|
|
1948
|
+
"type": "string"
|
|
1949
|
+
}
|
|
1950
|
+
},
|
|
1951
|
+
{
|
|
1952
|
+
"enum": [
|
|
1953
|
+
"all",
|
|
1954
|
+
"none",
|
|
1955
|
+
"only-modern"
|
|
1956
|
+
],
|
|
1957
|
+
"type": "string"
|
|
1958
|
+
}
|
|
1959
|
+
]
|
|
1960
|
+
}
|
|
1961
|
+
},
|
|
1962
|
+
"additionalProperties": false
|
|
1963
|
+
},
|
|
1964
|
+
{
|
|
1965
|
+
"enum": [
|
|
1966
|
+
"all",
|
|
1967
|
+
"none",
|
|
1968
|
+
"only-modern"
|
|
1969
|
+
],
|
|
1970
|
+
"type": "string"
|
|
1971
|
+
}
|
|
1972
|
+
]
|
|
1847
1973
|
}
|
|
1848
1974
|
},
|
|
1849
1975
|
"additionalProperties": false
|
|
@@ -2115,23 +2241,23 @@
|
|
|
2115
2241
|
"dotAll": {
|
|
2116
2242
|
"type": "boolean"
|
|
2117
2243
|
},
|
|
2118
|
-
"__@match@
|
|
2244
|
+
"__@match@9310": {
|
|
2119
2245
|
"type": "object",
|
|
2120
2246
|
"additionalProperties": false
|
|
2121
2247
|
},
|
|
2122
|
-
"__@replace@
|
|
2248
|
+
"__@replace@9312": {
|
|
2123
2249
|
"type": "object",
|
|
2124
2250
|
"additionalProperties": false
|
|
2125
2251
|
},
|
|
2126
|
-
"__@search@
|
|
2252
|
+
"__@search@9315": {
|
|
2127
2253
|
"type": "object",
|
|
2128
2254
|
"additionalProperties": false
|
|
2129
2255
|
},
|
|
2130
|
-
"__@split@
|
|
2256
|
+
"__@split@9317": {
|
|
2131
2257
|
"type": "object",
|
|
2132
2258
|
"additionalProperties": false
|
|
2133
2259
|
},
|
|
2134
|
-
"__@matchAll@
|
|
2260
|
+
"__@matchAll@9319": {
|
|
2135
2261
|
"type": "object",
|
|
2136
2262
|
"additionalProperties": false
|
|
2137
2263
|
}
|
|
@@ -2648,6 +2774,69 @@
|
|
|
2648
2774
|
"type": "string"
|
|
2649
2775
|
}
|
|
2650
2776
|
]
|
|
2777
|
+
},
|
|
2778
|
+
"include": {
|
|
2779
|
+
"cli_overridable": "",
|
|
2780
|
+
"title": "customize transpiling of node_modules in prod/dev environments",
|
|
2781
|
+
"default": "only-modern",
|
|
2782
|
+
"anyOf": [
|
|
2783
|
+
{
|
|
2784
|
+
"type": "array",
|
|
2785
|
+
"items": {
|
|
2786
|
+
"type": "string"
|
|
2787
|
+
}
|
|
2788
|
+
},
|
|
2789
|
+
{
|
|
2790
|
+
"type": "object",
|
|
2791
|
+
"properties": {
|
|
2792
|
+
"development": {
|
|
2793
|
+
"anyOf": [
|
|
2794
|
+
{
|
|
2795
|
+
"type": "array",
|
|
2796
|
+
"items": {
|
|
2797
|
+
"type": "string"
|
|
2798
|
+
}
|
|
2799
|
+
},
|
|
2800
|
+
{
|
|
2801
|
+
"enum": [
|
|
2802
|
+
"all",
|
|
2803
|
+
"none",
|
|
2804
|
+
"only-modern"
|
|
2805
|
+
],
|
|
2806
|
+
"type": "string"
|
|
2807
|
+
}
|
|
2808
|
+
]
|
|
2809
|
+
},
|
|
2810
|
+
"production": {
|
|
2811
|
+
"anyOf": [
|
|
2812
|
+
{
|
|
2813
|
+
"type": "array",
|
|
2814
|
+
"items": {
|
|
2815
|
+
"type": "string"
|
|
2816
|
+
}
|
|
2817
|
+
},
|
|
2818
|
+
{
|
|
2819
|
+
"enum": [
|
|
2820
|
+
"all",
|
|
2821
|
+
"none",
|
|
2822
|
+
"only-modern"
|
|
2823
|
+
],
|
|
2824
|
+
"type": "string"
|
|
2825
|
+
}
|
|
2826
|
+
]
|
|
2827
|
+
}
|
|
2828
|
+
},
|
|
2829
|
+
"additionalProperties": false
|
|
2830
|
+
},
|
|
2831
|
+
{
|
|
2832
|
+
"enum": [
|
|
2833
|
+
"all",
|
|
2834
|
+
"none",
|
|
2835
|
+
"only-modern"
|
|
2836
|
+
],
|
|
2837
|
+
"type": "string"
|
|
2838
|
+
}
|
|
2839
|
+
]
|
|
2651
2840
|
}
|
|
2652
2841
|
},
|
|
2653
2842
|
"additionalProperties": false
|
|
@@ -2919,23 +3108,23 @@
|
|
|
2919
3108
|
"dotAll": {
|
|
2920
3109
|
"type": "boolean"
|
|
2921
3110
|
},
|
|
2922
|
-
"__@match@
|
|
3111
|
+
"__@match@9310": {
|
|
2923
3112
|
"type": "object",
|
|
2924
3113
|
"additionalProperties": false
|
|
2925
3114
|
},
|
|
2926
|
-
"__@replace@
|
|
3115
|
+
"__@replace@9312": {
|
|
2927
3116
|
"type": "object",
|
|
2928
3117
|
"additionalProperties": false
|
|
2929
3118
|
},
|
|
2930
|
-
"__@search@
|
|
3119
|
+
"__@search@9315": {
|
|
2931
3120
|
"type": "object",
|
|
2932
3121
|
"additionalProperties": false
|
|
2933
3122
|
},
|
|
2934
|
-
"__@split@
|
|
3123
|
+
"__@split@9317": {
|
|
2935
3124
|
"type": "object",
|
|
2936
3125
|
"additionalProperties": false
|
|
2937
3126
|
},
|
|
2938
|
-
"__@matchAll@
|
|
3127
|
+
"__@matchAll@9319": {
|
|
2939
3128
|
"type": "object",
|
|
2940
3129
|
"additionalProperties": false
|
|
2941
3130
|
}
|
package/src/api/analyze/index.ts
CHANGED
|
@@ -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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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: {
|
package/src/api/start/index.ts
CHANGED
|
@@ -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
|
},
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
CLIENT_CONFIG_MANAGER_TOKEN,
|
|
7
7
|
CLOSE_HANDLER_TOKEN,
|
|
8
8
|
PROCESS_HANDLER_TOKEN,
|
|
9
|
+
WEBPACK_ANALYZE_PLUGIN_TOKEN,
|
|
9
10
|
WEBPACK_CLIENT_COMPILER_TOKEN,
|
|
10
11
|
WEBPACK_CLIENT_CONFIG_TOKEN,
|
|
11
12
|
} from '../../tokens';
|
|
@@ -27,12 +28,16 @@ export const buildClientProviders: Provider[] = [
|
|
|
27
28
|
}),
|
|
28
29
|
provide({
|
|
29
30
|
provide: WEBPACK_CLIENT_COMPILER_TOKEN,
|
|
30
|
-
useFactory: ({ webpackConfig, di }) => {
|
|
31
|
-
return createCompiler(
|
|
31
|
+
useFactory: ({ webpackConfig, di, analyzePlugin }) => {
|
|
32
|
+
return createCompiler(
|
|
33
|
+
toWebpackConfig(analyzePlugin ? analyzePlugin.patchConfig(webpackConfig) : webpackConfig),
|
|
34
|
+
di
|
|
35
|
+
);
|
|
32
36
|
},
|
|
33
37
|
deps: {
|
|
34
38
|
webpackConfig: WEBPACK_CLIENT_CONFIG_TOKEN,
|
|
35
39
|
di: DI_TOKEN,
|
|
40
|
+
analyzePlugin: { token: WEBPACK_ANALYZE_PLUGIN_TOKEN, optional: true },
|
|
36
41
|
},
|
|
37
42
|
}),
|
|
38
43
|
provide({
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
INIT_HANDLER_TOKEN,
|
|
9
9
|
PROCESS_HANDLER_TOKEN,
|
|
10
10
|
SERVER_CONFIG_MANAGER_TOKEN,
|
|
11
|
+
WEBPACK_ANALYZE_PLUGIN_TOKEN,
|
|
11
12
|
WEBPACK_SERVER_COMPILER_TOKEN,
|
|
12
13
|
WEBPACK_SERVER_CONFIG_TOKEN,
|
|
13
14
|
} from '../../tokens';
|
|
@@ -18,12 +19,16 @@ import { createCompiler } from '../../utils/compiler';
|
|
|
18
19
|
export const buildServerProviders: Provider[] = [
|
|
19
20
|
provide({
|
|
20
21
|
provide: WEBPACK_SERVER_COMPILER_TOKEN,
|
|
21
|
-
useFactory: ({ webpackConfig, di }) => {
|
|
22
|
-
return createCompiler(
|
|
22
|
+
useFactory: ({ webpackConfig, di, analyzePlugin }) => {
|
|
23
|
+
return createCompiler(
|
|
24
|
+
toWebpackConfig(analyzePlugin ? analyzePlugin.patchConfig(webpackConfig) : webpackConfig),
|
|
25
|
+
di
|
|
26
|
+
);
|
|
23
27
|
},
|
|
24
28
|
deps: {
|
|
25
29
|
webpackConfig: WEBPACK_SERVER_CONFIG_TOKEN,
|
|
26
30
|
di: DI_TOKEN,
|
|
31
|
+
analyzePlugin: { token: WEBPACK_ANALYZE_PLUGIN_TOKEN, optional: true },
|
|
27
32
|
},
|
|
28
33
|
}),
|
|
29
34
|
provide({
|
|
@@ -11,8 +11,26 @@ import {
|
|
|
11
11
|
INIT_HANDLER_TOKEN,
|
|
12
12
|
WEBPACK_CLIENT_COMPILER_TOKEN,
|
|
13
13
|
WEBPACK_SERVER_COMPILER_TOKEN,
|
|
14
|
+
WEBPACK_ANALYZE_PLUGIN_NAME_TOKEN,
|
|
15
|
+
WEBPACK_ANALYZE_PLUGIN_TOKEN,
|
|
14
16
|
} from '../tokens';
|
|
15
17
|
import { emitWebpackEvents } from '../utils/webpackEvents';
|
|
18
|
+
import { BundleAnalyzePlugin } from '../analyzePlugins/bundle';
|
|
19
|
+
import { StatoscopeAnalyzePlugin } from '../analyzePlugins/statoscope';
|
|
20
|
+
import { WhyBundledAnalyzePlugin } from '../analyzePlugins/whyBundled';
|
|
21
|
+
import { RsdoctorAnalyzePlugin } from '../analyzePlugins/rsdoctor';
|
|
22
|
+
import type { AnalyzePlugin } from '../types';
|
|
23
|
+
|
|
24
|
+
interface Type<T> extends Function {
|
|
25
|
+
new (...args: any[]): T;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const pluginMap: Record<string, Type<AnalyzePlugin>> = {
|
|
29
|
+
bundle: BundleAnalyzePlugin,
|
|
30
|
+
whybundled: WhyBundledAnalyzePlugin,
|
|
31
|
+
statoscope: StatoscopeAnalyzePlugin,
|
|
32
|
+
rsdoctor: RsdoctorAnalyzePlugin,
|
|
33
|
+
};
|
|
16
34
|
|
|
17
35
|
export const sharedProviders: Provider[] = [
|
|
18
36
|
provide({
|
|
@@ -46,6 +64,27 @@ export const sharedProviders: Provider[] = [
|
|
|
46
64
|
serverCompiler: { token: WEBPACK_SERVER_COMPILER_TOKEN, optional: true },
|
|
47
65
|
},
|
|
48
66
|
}),
|
|
67
|
+
provide({
|
|
68
|
+
provide: WEBPACK_ANALYZE_PLUGIN_TOKEN,
|
|
69
|
+
useFactory: ({ pluginName }) => {
|
|
70
|
+
if (!pluginName) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const PluginClass = pluginMap[pluginName];
|
|
75
|
+
|
|
76
|
+
if (!PluginClass) {
|
|
77
|
+
throw new Error(
|
|
78
|
+
'Set correct value for --analytics cli option, <bundle|whybundled|statoscope|rsdoctor>\n'
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return new PluginClass();
|
|
83
|
+
},
|
|
84
|
+
deps: {
|
|
85
|
+
pluginName: WEBPACK_ANALYZE_PLUGIN_NAME_TOKEN,
|
|
86
|
+
},
|
|
87
|
+
}),
|
|
49
88
|
provide({
|
|
50
89
|
provide: EVENT_EMITTER_TOKEN,
|
|
51
90
|
useClass: EventEmitter,
|
|
@@ -80,13 +119,18 @@ export const sharedProviders: Provider[] = [
|
|
|
80
119
|
provide({
|
|
81
120
|
provide: CLOSE_HANDLER_TOKEN,
|
|
82
121
|
multi: true,
|
|
83
|
-
useFactory: ({ configManager }) => {
|
|
122
|
+
useFactory: ({ configManager, analyzePlugin }) => {
|
|
84
123
|
return async () => {
|
|
85
124
|
await closeWorkerPool(configManager);
|
|
125
|
+
|
|
126
|
+
if (analyzePlugin) {
|
|
127
|
+
return analyzePlugin.afterBuild();
|
|
128
|
+
}
|
|
86
129
|
};
|
|
87
130
|
},
|
|
88
131
|
deps: {
|
|
89
132
|
configManager: CONFIG_MANAGER_TOKEN,
|
|
133
|
+
analyzePlugin: { token: WEBPACK_ANALYZE_PLUGIN_TOKEN, optional: true },
|
|
90
134
|
},
|
|
91
135
|
}),
|
|
92
136
|
];
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
WEBPACK_COMPILER_TOKEN,
|
|
10
10
|
WEBPACK_SERVER_COMPILER_TOKEN,
|
|
11
11
|
WEBPACK_SERVER_CONFIG_TOKEN,
|
|
12
|
+
WEBPACK_ANALYZE_PLUGIN_TOKEN,
|
|
12
13
|
} from '../../tokens';
|
|
13
14
|
import { createDevServer } from '../../devServer/setup';
|
|
14
15
|
import { CONFIG_MANAGER_TOKEN, STATIC_SERVER_TOKEN } from '../../../../di/tokens';
|
|
@@ -16,8 +17,11 @@ import { CONFIG_MANAGER_TOKEN, STATIC_SERVER_TOKEN } from '../../../../di/tokens
|
|
|
16
17
|
export const startSharedProviders: Provider[] = [
|
|
17
18
|
provide({
|
|
18
19
|
provide: WEBPACK_COMPILER_TOKEN,
|
|
19
|
-
useFactory: ({ clientConfig, serverConfig }) => {
|
|
20
|
-
const configs = [clientConfig, serverConfig]
|
|
20
|
+
useFactory: ({ clientConfig, serverConfig, analyzePlugin }) => {
|
|
21
|
+
const configs = [clientConfig, serverConfig]
|
|
22
|
+
.filter(Boolean)
|
|
23
|
+
.map((config) => (analyzePlugin ? analyzePlugin.patchConfig(config) : config))
|
|
24
|
+
.map(toWebpackConfig);
|
|
21
25
|
const multiCompiler = webpack(configs);
|
|
22
26
|
const { inputFileSystem } = multiCompiler.compilers[0];
|
|
23
27
|
|
|
@@ -51,6 +55,7 @@ export const startSharedProviders: Provider[] = [
|
|
|
51
55
|
deps: {
|
|
52
56
|
clientConfig: { token: WEBPACK_CLIENT_CONFIG_TOKEN, optional: true },
|
|
53
57
|
serverConfig: { token: WEBPACK_SERVER_CONFIG_TOKEN, optional: true },
|
|
58
|
+
analyzePlugin: { token: WEBPACK_ANALYZE_PLUGIN_TOKEN, optional: true },
|
|
54
59
|
},
|
|
55
60
|
}),
|
|
56
61
|
provide({
|
package/src/cli/index.ts
CHANGED
|
@@ -14,8 +14,8 @@ import buildCommand from '../commands/build/command';
|
|
|
14
14
|
import { StartCommand } from '../commands/start/command';
|
|
15
15
|
import lintCommand from '../commands/lint/command';
|
|
16
16
|
import taskCommand from '../commands/task/command';
|
|
17
|
-
import analyze from '../commands/analyze/command';
|
|
18
17
|
import generate from '../commands/generate/command';
|
|
18
|
+
import analyze from '../commands/analyze/command';
|
|
19
19
|
import newCommand from '../commands/new/command';
|
|
20
20
|
import updateCommand from '../commands/update/command';
|
|
21
21
|
import addCommand from '../commands/add/command';
|
|
@@ -29,15 +29,16 @@ import type { TaskMap } from '../models/task';
|
|
|
29
29
|
import { getRootFile } from '../utils/getRootFile';
|
|
30
30
|
import { getTramvaiConfig } from '../utils/getTramvaiConfig';
|
|
31
31
|
import { syncJsonFile } from '../utils/syncJsonFile';
|
|
32
|
+
import AnalyzeCommand from '../commands/analyze/command';
|
|
32
33
|
|
|
33
34
|
async function loadCommands(): Promise<CommandMap> {
|
|
34
35
|
return [
|
|
35
36
|
buildCommand,
|
|
37
|
+
AnalyzeCommand,
|
|
36
38
|
StartProdCommand,
|
|
37
39
|
StartCommand,
|
|
38
40
|
lintCommand,
|
|
39
41
|
taskCommand,
|
|
40
|
-
analyze,
|
|
41
42
|
generate,
|
|
42
43
|
newCommand,
|
|
43
44
|
updateCommand,
|