@tramvai/cli 5.50.0 → 5.53.78
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/__migrations__/d2023-02-01b-tramvai-config-refactoring.js +78 -80
- package/__migrations__/d2025-04-11b-tramvai-config-remove-modern.js +13 -0
- package/bin/spawn.js +69 -3
- package/lib/api/analyze/index.d.ts +0 -1
- package/lib/api/analyze/index.d.ts.map +1 -1
- package/lib/api/analyze/index.js +2 -2
- package/lib/api/analyze/index.js.map +1 -1
- package/lib/api/build/application.d.ts.map +1 -1
- package/lib/api/build/application.js +2 -5
- package/lib/api/build/application.js.map +1 -1
- package/lib/api/build/child-app.d.ts.map +1 -1
- package/lib/api/build/child-app.js +1 -5
- package/lib/api/build/child-app.js.map +1 -1
- package/lib/api/build/index.d.ts +0 -2
- package/lib/api/build/index.d.ts.map +1 -1
- package/lib/api/build/index.js.map +1 -1
- package/lib/api/build/module.d.ts.map +1 -1
- package/lib/api/build/module.js +1 -3
- package/lib/api/build/module.js.map +1 -1
- package/lib/api/index.d.ts.map +1 -1
- package/lib/api/index.js +0 -4
- package/lib/api/index.js.map +1 -1
- package/lib/api/start/index.d.ts +0 -1
- package/lib/api/start/index.d.ts.map +1 -1
- package/lib/api/start/index.js.map +1 -1
- package/lib/api/start/utils/banner.d.ts.map +1 -1
- package/lib/api/start/utils/banner.js +0 -1
- package/lib/api/start/utils/banner.js.map +1 -1
- package/lib/api/start/utils/tips/tips.d.ts.map +1 -1
- package/lib/api/start/utils/tips/tips.js +0 -8
- package/lib/api/start/utils/tips/tips.js.map +1 -1
- package/lib/builder/webpack/devServer/pool/process/pool.d.ts.map +1 -1
- package/lib/builder/webpack/devServer/pool/process/pool.js +0 -2
- package/lib/builder/webpack/devServer/pool/process/pool.js.map +1 -1
- package/lib/builder/webpack/devServer/server.d.ts.map +1 -1
- package/lib/builder/webpack/devServer/server.js +4 -0
- package/lib/builder/webpack/devServer/server.js.map +1 -1
- package/lib/builder/webpack/index.d.ts.map +1 -1
- package/lib/builder/webpack/index.js +3 -5
- 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 +0 -1
- package/lib/builder/webpack/providers/build/client.js.map +1 -1
- package/lib/builder/webpack/providers/build/clientShared.d.ts.map +1 -1
- package/lib/builder/webpack/providers/build/clientShared.js +4 -6
- package/lib/builder/webpack/providers/build/clientShared.js.map +1 -1
- package/lib/builder/webpack/providers/client.d.ts.map +1 -1
- package/lib/builder/webpack/providers/client.js +0 -13
- package/lib/builder/webpack/providers/client.js.map +1 -1
- package/lib/builder/webpack/providers/shared.d.ts.map +1 -1
- package/lib/builder/webpack/providers/shared.js +2 -8
- package/lib/builder/webpack/providers/shared.js.map +1 -1
- package/lib/builder/webpack/tokens.d.ts +4 -139
- package/lib/builder/webpack/tokens.d.ts.map +1 -1
- package/lib/builder/webpack/tokens.js +1 -4
- package/lib/builder/webpack/tokens.js.map +1 -1
- package/lib/builder/webpack/utils/copyStatsJsonFile.d.ts.map +1 -1
- package/lib/builder/webpack/utils/copyStatsJsonFile.js +0 -11
- package/lib/builder/webpack/utils/copyStatsJsonFile.js.map +1 -1
- package/lib/cli/CLI.d.ts +2 -2
- package/lib/cli/CLI.d.ts.map +1 -1
- package/lib/cli/CLI.js +2 -2
- package/lib/cli/CLI.js.map +1 -1
- package/lib/cli/index.d.ts.map +1 -1
- package/lib/cli/index.js +28 -7
- package/lib/cli/index.js.map +1 -1
- package/lib/cli/runCLI.d.ts +3 -0
- package/lib/cli/runCLI.d.ts.map +1 -1
- package/lib/cli/runCLI.js +18 -6
- package/lib/cli/runCLI.js.map +1 -1
- package/lib/commands/build/command.d.ts +1 -1
- package/lib/commands/build/command.d.ts.map +1 -1
- package/lib/commands/build/command.js +41 -13
- package/lib/commands/build/command.js.map +1 -1
- package/lib/commands/createApp.d.ts.map +1 -1
- package/lib/commands/createApp.js +0 -1
- package/lib/commands/createApp.js.map +1 -1
- package/lib/commands/new/new.d.ts.map +1 -1
- package/lib/commands/new/new.js +28 -3
- package/lib/commands/new/new.js.map +1 -1
- package/lib/commands/start/command.d.ts +1 -1
- package/lib/commands/start/command.d.ts.map +1 -1
- package/lib/commands/start/command.js +39 -7
- package/lib/commands/start/command.js.map +1 -1
- package/lib/commands/start/start.d.ts +1 -1
- package/lib/commands/start/start.d.ts.map +1 -1
- package/lib/commands/start/start.js +2 -1
- package/lib/commands/start/start.js.map +1 -1
- package/lib/commands/static/application.d.ts.map +1 -1
- package/lib/commands/static/application.js +0 -1
- package/lib/commands/static/application.js.map +1 -1
- package/lib/commands/update/command.d.ts +6 -1
- package/lib/commands/update/command.d.ts.map +1 -1
- package/lib/commands/update/command.js +8 -1
- package/lib/commands/update/command.js.map +1 -1
- package/lib/commands/update/dependantLibs.d.ts +2 -1
- package/lib/commands/update/dependantLibs.d.ts.map +1 -1
- package/lib/commands/update/dependantLibs.js +17 -4
- package/lib/commands/update/dependantLibs.js.map +1 -1
- package/lib/commands/update/update.d.ts +2 -1
- package/lib/commands/update/update.d.ts.map +1 -1
- package/lib/commands/update/update.js +6 -6
- package/lib/commands/update/update.js.map +1 -1
- package/lib/commands/update/updatePackageJson.d.ts +1 -1
- package/lib/commands/update/updatePackageJson.d.ts.map +1 -1
- package/lib/commands/update/updatePackageJson.js +10 -14
- package/lib/commands/update/updatePackageJson.js.map +1 -1
- package/lib/config/configManager.d.ts +0 -1
- package/lib/config/configManager.d.ts.map +1 -1
- package/lib/config/configManager.js +2 -17
- package/lib/config/configManager.js.map +1 -1
- package/lib/config/validate.d.ts.map +1 -1
- package/lib/config/validate.js +8 -1
- package/lib/config/validate.js.map +1 -1
- package/lib/di/providers/index.d.ts +0 -1
- package/lib/di/providers/index.d.ts.map +1 -1
- package/lib/di/providers/index.js +0 -1
- package/lib/di/providers/index.js.map +1 -1
- package/lib/di/tokens/config.d.ts +2 -0
- package/lib/di/tokens/config.d.ts.map +1 -1
- package/lib/di/tokens/index.d.ts +0 -1
- package/lib/di/tokens/index.d.ts.map +1 -1
- package/lib/di/tokens/index.js +0 -1
- package/lib/di/tokens/index.js.map +1 -1
- package/lib/library/babel/index.d.ts +0 -44
- package/lib/library/babel/index.d.ts.map +1 -1
- package/lib/library/babel/index.js +6 -13
- package/lib/library/babel/index.js.map +1 -1
- package/lib/library/swc/index.js +1 -1
- package/lib/library/swc/index.js.map +1 -1
- package/lib/library/typescript/index.d.ts +0 -23
- package/lib/library/typescript/index.d.ts.map +1 -1
- package/lib/library/typescript/index.js +1 -2
- package/lib/library/typescript/index.js.map +1 -1
- package/lib/library/webpack/application/client/common.d.ts.map +1 -1
- package/lib/library/webpack/application/client/common.js +40 -6
- package/lib/library/webpack/application/client/common.js.map +1 -1
- package/lib/library/webpack/application/client/dev.js +2 -2
- package/lib/library/webpack/application/client/dev.js.map +1 -1
- package/lib/library/webpack/application/client/prod.d.ts.map +1 -1
- package/lib/library/webpack/application/client/prod.js +1 -2
- package/lib/library/webpack/application/client/prod.js.map +1 -1
- package/lib/library/webpack/application/common.js +1 -1
- package/lib/library/webpack/application/common.js.map +1 -1
- package/lib/library/webpack/application/server/common.js +1 -1
- package/lib/library/webpack/application/server/common.js.map +1 -1
- package/lib/library/webpack/application/server/dev.js +1 -1
- package/lib/library/webpack/application/server/dev.js.map +1 -1
- package/lib/library/webpack/application/server/prod.js +1 -1
- package/lib/library/webpack/application/server/prod.js.map +1 -1
- package/lib/library/webpack/blocks/css.d.ts.map +1 -1
- package/lib/library/webpack/blocks/css.js +15 -11
- package/lib/library/webpack/blocks/css.js.map +1 -1
- package/lib/library/webpack/blocks/optimize.js +2 -2
- package/lib/library/webpack/blocks/optimize.js.map +1 -1
- package/lib/library/webpack/blocks/pwa/client.d.ts.map +1 -1
- package/lib/library/webpack/blocks/pwa/client.js +2 -5
- package/lib/library/webpack/blocks/pwa/client.js.map +1 -1
- package/lib/library/webpack/blocks/pwa/shared.d.ts.map +1 -1
- package/lib/library/webpack/blocks/pwa/shared.js +2 -3
- package/lib/library/webpack/blocks/pwa/shared.js.map +1 -1
- package/lib/library/webpack/blocks/resolve.js +2 -2
- package/lib/library/webpack/blocks/resolve.js.map +1 -1
- package/lib/library/webpack/blocks/serverInline.d.ts.map +1 -1
- package/lib/library/webpack/blocks/serverInline.js +1 -2
- package/lib/library/webpack/blocks/serverInline.js.map +1 -1
- package/lib/library/webpack/blocks/sourcemaps.d.ts +1 -1
- package/lib/library/webpack/blocks/sourcemaps.d.ts.map +1 -1
- package/lib/library/webpack/blocks/sourcemaps.js +4 -2
- package/lib/library/webpack/blocks/sourcemaps.js.map +1 -1
- package/lib/library/webpack/child-app/client/common.d.ts.map +1 -1
- package/lib/library/webpack/child-app/client/common.js +8 -3
- package/lib/library/webpack/child-app/client/common.js.map +1 -1
- package/lib/library/webpack/child-app/client/dev.d.ts.map +1 -1
- package/lib/library/webpack/child-app/client/dev.js +5 -1
- package/lib/library/webpack/child-app/client/dev.js.map +1 -1
- package/lib/library/webpack/child-app/client/prod.d.ts.map +1 -1
- package/lib/library/webpack/child-app/client/prod.js +4 -0
- package/lib/library/webpack/child-app/client/prod.js.map +1 -1
- package/lib/library/webpack/child-app/common.d.ts.map +1 -1
- package/lib/library/webpack/child-app/common.js +1 -5
- package/lib/library/webpack/child-app/common.js.map +1 -1
- package/lib/library/webpack/child-app/server/dev.d.ts.map +1 -1
- package/lib/library/webpack/child-app/server/dev.js +4 -0
- package/lib/library/webpack/child-app/server/dev.js.map +1 -1
- package/lib/library/webpack/child-app/server/prod.d.ts.map +1 -1
- package/lib/library/webpack/child-app/server/prod.js +4 -0
- package/lib/library/webpack/child-app/server/prod.js.map +1 -1
- package/lib/library/webpack/common/client/prod.js +1 -1
- package/lib/library/webpack/common/client/prod.js.map +1 -1
- package/lib/library/webpack/common/main.d.ts.map +1 -1
- package/lib/library/webpack/common/main.js +1 -2
- package/lib/library/webpack/common/main.js.map +1 -1
- package/lib/library/webpack/constants/stats.d.ts.map +1 -1
- package/lib/library/webpack/constants/stats.js +2 -0
- package/lib/library/webpack/constants/stats.js.map +1 -1
- package/lib/library/webpack/loaders/image-loader/getImageMiniatureURL.js +1 -1
- package/lib/library/webpack/loaders/image-loader/getImageMiniatureURL.js.map +1 -1
- package/lib/library/webpack/module/client/common.js +1 -1
- package/lib/library/webpack/module/client/common.js.map +1 -1
- package/lib/library/webpack/module/externals.js +1 -1
- package/lib/library/webpack/module/externals.js.map +1 -1
- package/lib/library/webpack/module/server/common.js +1 -1
- package/lib/library/webpack/module/server/common.js.map +1 -1
- package/lib/library/webpack/plugins/AssetsIntegritiesPlugin.d.ts +8 -0
- package/lib/library/webpack/plugins/AssetsIntegritiesPlugin.d.ts.map +1 -0
- package/lib/library/webpack/plugins/AssetsIntegritiesPlugin.js +29 -0
- package/lib/library/webpack/plugins/AssetsIntegritiesPlugin.js.map +1 -0
- package/lib/library/webpack/plugins/PurifyStatsPlugin.d.ts +15 -0
- package/lib/library/webpack/plugins/PurifyStatsPlugin.d.ts.map +1 -0
- package/lib/library/webpack/plugins/PurifyStatsPlugin.js +47 -0
- package/lib/library/webpack/plugins/PurifyStatsPlugin.js.map +1 -0
- package/lib/library/webpack/plugins/RuntimePathPlugin.d.ts.map +1 -1
- package/lib/library/webpack/plugins/RuntimePathPlugin.js +7 -3
- package/lib/library/webpack/plugins/RuntimePathPlugin.js.map +1 -1
- package/lib/library/webpack/utils/transpiler.d.ts +0 -1
- package/lib/library/webpack/utils/transpiler.d.ts.map +1 -1
- package/lib/library/webpack/utils/transpiler.js +1 -5
- package/lib/library/webpack/utils/transpiler.js.map +1 -1
- package/lib/models/analytics/analytics.d.ts +156 -0
- package/lib/models/analytics/analytics.d.ts.map +1 -0
- package/lib/models/analytics/analytics.js +259 -0
- package/lib/models/analytics/analytics.js.map +1 -0
- package/lib/models/analytics/analytics.worker.d.ts +5 -0
- package/lib/models/analytics/analytics.worker.d.ts.map +1 -0
- package/lib/models/analytics/analytics.worker.js +87 -0
- package/lib/models/analytics/analytics.worker.js.map +1 -0
- package/lib/models/analytics/utils.d.ts +15 -0
- package/lib/models/analytics/utils.d.ts.map +1 -0
- package/lib/models/analytics/utils.js +85 -0
- package/lib/models/analytics/utils.js.map +1 -0
- package/lib/models/command.d.ts.map +1 -1
- package/lib/models/command.js +1 -7
- package/lib/models/command.js.map +1 -1
- package/lib/models/context.d.ts +4 -4
- package/lib/models/context.d.ts.map +1 -1
- package/lib/models/context.js +3 -2
- package/lib/models/context.js.map +1 -1
- package/lib/models/logger.d.ts +1 -0
- package/lib/models/logger.d.ts.map +1 -1
- package/lib/models/logger.js +2 -1
- package/lib/models/logger.js.map +1 -1
- package/lib/models/task.d.ts.map +1 -1
- package/lib/models/task.js +1 -7
- package/lib/models/task.js.map +1 -1
- package/lib/schema/autogeneratedSchema.json +161 -20
- package/lib/schema/topLevelSchema.d.ts +14 -0
- package/lib/schema/topLevelSchema.d.ts.map +1 -1
- package/lib/schema/topLevelSchema.js +14 -0
- package/lib/schema/topLevelSchema.js.map +1 -1
- package/lib/typings/build/Builder.d.ts +2 -6
- package/lib/typings/build/Builder.d.ts.map +1 -1
- package/lib/typings/configEntry/application.d.ts +10 -5
- package/lib/typings/configEntry/application.d.ts.map +1 -1
- package/lib/typings/configEntry/cli.d.ts +13 -0
- package/lib/typings/configEntry/cli.d.ts.map +1 -1
- package/lib/typings/projectType.d.ts +5 -0
- package/lib/typings/projectType.d.ts.map +1 -1
- package/lib/typings/target.d.ts +1 -1
- package/lib/typings/target.d.ts.map +1 -1
- package/lib/utils/commands/dependencies/findTramvaiVersion.d.ts +1 -1
- package/lib/utils/commands/dependencies/findTramvaiVersion.d.ts.map +1 -1
- package/lib/utils/commands/dependencies/findTramvaiVersion.js +4 -11
- package/lib/utils/commands/dependencies/findTramvaiVersion.js.map +1 -1
- package/lib/utils/commands/dependencies/getLatestPackageVersion.d.ts +1 -1
- package/lib/utils/commands/dependencies/getLatestPackageVersion.d.ts.map +1 -1
- package/lib/utils/commands/dependencies/getLatestPackageVersion.js +7 -3
- package/lib/utils/commands/dependencies/getLatestPackageVersion.js.map +1 -1
- package/lib/utils/cpu-profile.d.ts +3 -0
- package/lib/utils/cpu-profile.d.ts.map +1 -1
- package/lib/utils/cpu-profile.js +8 -3
- package/lib/utils/cpu-profile.js.map +1 -1
- package/lib/utils/errors.d.ts +7 -0
- package/lib/utils/errors.d.ts.map +1 -0
- package/lib/utils/errors.js +43 -0
- package/lib/utils/errors.js.map +1 -0
- package/lib/utils/memoryUsage.d.ts +20 -0
- package/lib/utils/memoryUsage.d.ts.map +1 -0
- package/lib/utils/memoryUsage.js +51 -0
- package/lib/utils/memoryUsage.js.map +1 -0
- package/lib/utils/safeRequire.d.ts +1 -1
- package/lib/utils/safeRequire.d.ts.map +1 -1
- package/lib/utils/safeRequire.js +13 -3
- package/lib/utils/safeRequire.js.map +1 -1
- package/package.json +13 -15
- package/schema.json +175 -20
- package/src/api/analyze/index.ts +2 -3
- package/src/api/benchmark/__integration__/__fixtures__/tramvai.json +3 -0
- package/src/api/build/__integration__/__fixtures__/tramvai.json +4 -2
- package/src/api/build/__integration__/build.test.ts +0 -1
- package/src/api/build/application.ts +2 -5
- package/src/api/build/child-app.ts +1 -5
- package/src/api/build/index.ts +0 -2
- package/src/api/build/module.ts +1 -3
- package/src/api/index.ts +1 -10
- package/src/api/start/__integration__/__fixtures__/app/server.tsx +1 -0
- package/src/api/start/__integration__/__fixtures__/package.json +0 -3
- package/src/api/start/__integration__/__fixtures__/tramvai.json +3 -0
- package/src/api/start/__integration__/start.test.ts +2 -1
- package/src/api/start/index.ts +0 -1
- package/src/api/start/utils/banner.ts +0 -1
- package/src/api/start/utils/tips/tips.ts +0 -9
- package/src/builder/webpack/devServer/pool/process/pool.ts +0 -2
- package/src/builder/webpack/devServer/server.ts +5 -0
- package/src/builder/webpack/index.ts +3 -5
- package/src/builder/webpack/providers/build/client.ts +0 -1
- package/src/builder/webpack/providers/build/clientShared.ts +5 -11
- package/src/builder/webpack/providers/client.ts +1 -19
- package/src/builder/webpack/providers/shared.ts +2 -9
- package/src/builder/webpack/tokens.ts +0 -9
- package/src/builder/webpack/utils/copyStatsJsonFile.ts +0 -17
- package/src/cli/CLI.ts +6 -4
- package/src/cli/index.ts +33 -8
- package/src/cli/runCLI.ts +26 -5
- package/src/commands/build/command.ts +45 -13
- package/src/commands/createApp.ts +0 -2
- package/src/commands/new/new.ts +39 -7
- package/src/commands/new/templates/packageManagerConfig/yarnPackageManagerConfig/_yarnrc.yml.hbs +9 -0
- package/src/commands/new/templates/shared/_gitignore.hbs +10 -0
- package/src/commands/new/templates/shared/package.json.hbs +5 -1
- package/src/commands/start/command.ts +42 -7
- package/src/commands/start/start.ts +7 -1
- package/src/commands/static/application.ts +0 -1
- package/src/commands/update/command.ts +9 -1
- package/src/commands/update/dependantLibs.ts +23 -8
- package/src/commands/update/update.ts +7 -6
- package/src/commands/update/updatePackageJson.spec.ts +66 -3
- package/src/commands/update/updatePackageJson.ts +28 -16
- package/src/config/__integration__/__fixtures__/relative/src/index.ts +0 -0
- package/src/config/__integration__/__fixtures__/relative/src/polyfill.ts +0 -0
- package/src/config/__integration__/validate.test.ts +94 -0
- package/src/config/configManager.ts +2 -19
- package/src/config/validate.ts +8 -1
- package/src/di/providers/index.ts +0 -1
- package/src/di/tokens/index.ts +0 -1
- package/src/library/babel/index.ts +8 -14
- package/src/library/babel/plugins/__snapshots__/create-token-pure.spec.ts.snap +6 -6
- package/src/library/babel/plugins/__snapshots__/fill-declare-action-name.spec.ts.snap +24 -26
- package/src/library/babel/plugins/__snapshots__/provider-stack.spec.ts.snap +40 -59
- package/src/library/babel/plugins/lazy-component/lazy-component.spec.ts +0 -1
- package/src/library/babel/plugins/lazy-component/legacy-universal-replace.spec.ts +0 -1
- package/src/library/swc/__integration__/__snapshots__/swc.build.test.ts.snap +15 -208
- package/src/library/swc/__integration__/__snapshots__/swc.start.test.ts.snap +7 -10
- package/src/library/swc/__integration__/swc.build.test.ts +1 -13
- package/src/library/swc/__integration__/swc.start.test.ts +3 -0
- package/src/library/swc/index.ts +1 -1
- package/src/library/typescript/index.ts +1 -3
- package/src/library/webpack/application/client/common.ts +63 -6
- package/src/library/webpack/application/client/dev.ts +2 -2
- package/src/library/webpack/application/client/prod.ts +1 -2
- package/src/library/webpack/application/common.ts +1 -1
- package/src/library/webpack/application/server/common.ts +1 -1
- package/src/library/webpack/application/server/dev.ts +1 -1
- package/src/library/webpack/application/server/prod.ts +1 -1
- package/src/library/webpack/blocks/css.ts +17 -11
- package/src/library/webpack/blocks/optimize.ts +2 -2
- package/src/library/webpack/blocks/pwa/client.ts +1 -6
- package/src/library/webpack/blocks/pwa/shared.ts +1 -3
- package/src/library/webpack/blocks/resolve.ts +2 -2
- package/src/library/webpack/blocks/serverInline.ts +1 -2
- package/src/library/webpack/blocks/sourcemaps.ts +4 -2
- package/src/library/webpack/child-app/client/common.ts +9 -3
- package/src/library/webpack/child-app/client/dev.ts +6 -1
- package/src/library/webpack/child-app/client/prod.ts +5 -0
- package/src/library/webpack/child-app/common.ts +1 -7
- package/src/library/webpack/child-app/server/dev.ts +5 -0
- package/src/library/webpack/child-app/server/prod.ts +5 -0
- package/src/library/webpack/common/client/prod.ts +1 -1
- package/src/library/webpack/common/main.ts +1 -5
- package/src/library/webpack/constants/stats.ts +2 -0
- package/src/library/webpack/loaders/image-loader/getImageMiniatureURL.ts +1 -1
- package/src/library/webpack/module/client/common.ts +1 -1
- package/src/library/webpack/module/externals.ts +1 -1
- package/src/library/webpack/module/server/common.ts +1 -1
- package/src/library/webpack/plugins/AssetsIntegritiesPlugin.ts +34 -0
- package/src/library/webpack/plugins/PurifyStatsPlugin.ts +57 -0
- package/src/library/webpack/plugins/RuntimePathPlugin.ts +8 -3
- package/src/library/webpack/utils/polyfills/__integration__/__snapshots__/condition.test.ts.snap +16 -16
- package/src/library/webpack/utils/transpiler.ts +1 -5
- package/src/models/analytics/analytics.ts +488 -0
- package/src/models/analytics/analytics.worker.ts +102 -0
- package/src/models/analytics/utils.ts +122 -0
- package/src/models/command.ts +1 -8
- package/src/models/config.spec.ts +6 -2
- package/src/models/context.ts +4 -5
- package/src/models/logger.ts +2 -0
- package/src/models/task.ts +1 -7
- package/src/schema/autogeneratedSchema.json +161 -20
- package/src/schema/topLevelSchema.js +14 -0
- package/src/schema/tramvai.spec.ts +3 -1
- package/src/typings/build/Builder.ts +3 -8
- package/src/typings/configEntry/application.ts +11 -6
- package/src/typings/configEntry/cli.ts +14 -0
- package/src/typings/projectType.ts +5 -0
- package/src/typings/target.ts +1 -1
- package/src/utils/commands/dependencies/findTramvaiVersion.ts +5 -12
- package/src/utils/commands/dependencies/getLatestPackageVersion.ts +11 -3
- package/src/utils/cpu-profile.ts +14 -3
- package/src/utils/errors.ts +39 -0
- package/src/utils/memoryUsage.ts +58 -0
- package/src/utils/safeRequire.spec.ts +36 -0
- package/src/utils/safeRequire.ts +12 -3
- package/lib/builder/webpack/providers/build/clientModern.d.ts +0 -3
- package/lib/builder/webpack/providers/build/clientModern.d.ts.map +0 -1
- package/lib/builder/webpack/providers/build/clientModern.js +0 -60
- package/lib/builder/webpack/providers/build/clientModern.js.map +0 -1
- package/lib/di/providers/analytics.d.ts +0 -3
- package/lib/di/providers/analytics.d.ts.map +0 -1
- package/lib/di/providers/analytics.js +0 -20
- package/lib/di/providers/analytics.js.map +0 -1
- package/lib/di/tokens/analytics.d.ts +0 -14
- package/lib/di/tokens/analytics.d.ts.map +0 -1
- package/lib/di/tokens/analytics.js +0 -8
- package/lib/di/tokens/analytics.js.map +0 -1
- package/lib/models/analytics.d.ts +0 -31
- package/lib/models/analytics.d.ts.map +0 -1
- package/lib/models/analytics.js +0 -79
- package/lib/models/analytics.js.map +0 -1
- package/src/builder/webpack/providers/build/clientModern.ts +0 -64
- package/src/di/providers/analytics.ts +0 -22
- package/src/di/tokens/analytics.ts +0 -8
- package/src/models/analytics.ts +0 -116
- /package/src/commands/new/templates/{shared → packageManagerConfig/defaultPackageManagerConfig}/_npmrc.hbs +0 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "../../../../../schema.json",
|
|
3
|
+
"analytics": {
|
|
4
|
+
"enabled": false
|
|
5
|
+
},
|
|
3
6
|
"projects": {
|
|
4
7
|
"app": {
|
|
5
8
|
"name": "app",
|
|
6
9
|
"root": "app",
|
|
7
|
-
"type": "application"
|
|
8
|
-
"modern": false
|
|
10
|
+
"type": "application"
|
|
9
11
|
},
|
|
10
12
|
"module": {
|
|
11
13
|
"name": "module",
|
|
@@ -10,7 +10,7 @@ import { registerProviders } from '../../utils/di';
|
|
|
10
10
|
|
|
11
11
|
export const buildApplication = async (di: Container): Result => {
|
|
12
12
|
const options = di.get(COMMAND_PARAMETERS_TOKEN as Params);
|
|
13
|
-
const { buildType = 'all'
|
|
13
|
+
const { buildType = 'all' } = options;
|
|
14
14
|
|
|
15
15
|
const shouldBuildClient = buildType === 'client' || buildType === 'all';
|
|
16
16
|
const shouldBuildServer = buildType === 'server' || buildType === 'all';
|
|
@@ -24,13 +24,10 @@ export const buildApplication = async (di: Container): Result => {
|
|
|
24
24
|
options: {
|
|
25
25
|
shouldBuildClient,
|
|
26
26
|
shouldBuildServer,
|
|
27
|
-
onlyModern,
|
|
28
27
|
},
|
|
29
28
|
});
|
|
30
29
|
|
|
31
|
-
const builderBuild = await builder.build(
|
|
32
|
-
modern: configManager.modern,
|
|
33
|
-
});
|
|
30
|
+
const builderBuild = await builder.build();
|
|
34
31
|
|
|
35
32
|
return {
|
|
36
33
|
builder,
|
|
@@ -15,11 +15,7 @@ export const buildChildApp = async (di: Container): Result => {
|
|
|
15
15
|
},
|
|
16
16
|
});
|
|
17
17
|
|
|
18
|
-
const builderBuild = await builder.build(
|
|
19
|
-
// child-app either should be built for legacy code always
|
|
20
|
-
// or should be smart loaded depending on browser capabilities
|
|
21
|
-
modern: false,
|
|
22
|
-
});
|
|
18
|
+
const builderBuild = await builder.build();
|
|
23
19
|
|
|
24
20
|
return {
|
|
25
21
|
builder,
|
package/src/api/build/index.ts
CHANGED
|
@@ -11,11 +11,9 @@ import type { Builder } from '../../typings/build/Builder';
|
|
|
11
11
|
|
|
12
12
|
export type Params = WithConfig<{
|
|
13
13
|
buildType?: 'server' | 'client' | 'all' | 'none';
|
|
14
|
-
onlyModern?: boolean;
|
|
15
14
|
debug?: boolean;
|
|
16
15
|
verboseWebpack?: boolean;
|
|
17
16
|
profile?: boolean;
|
|
18
|
-
modern?: boolean;
|
|
19
17
|
sourceMap?: boolean;
|
|
20
18
|
resolveSymlinks?: boolean;
|
|
21
19
|
disableProdOptimization?: boolean;
|
package/src/api/build/module.ts
CHANGED
package/src/api/index.ts
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import '../typings/application';
|
|
2
2
|
|
|
3
3
|
import { writableNoopStream } from 'noop-stream';
|
|
4
|
-
import {
|
|
5
|
-
ANALYTICS_PACKAGE_INFO_TOKEN,
|
|
6
|
-
COMMAND_PARAMETERS_TOKEN,
|
|
7
|
-
STDERR_TOKEN,
|
|
8
|
-
STDOUT_TOKEN,
|
|
9
|
-
} from '../di/tokens';
|
|
4
|
+
import { COMMAND_PARAMETERS_TOKEN, STDERR_TOKEN, STDOUT_TOKEN } from '../di/tokens';
|
|
10
5
|
import { createApp } from '../commands/createApp';
|
|
11
6
|
|
|
12
7
|
import type { StartCommand } from './start';
|
|
@@ -43,10 +38,6 @@ const app = createApp({
|
|
|
43
38
|
'start-prod': () => import('./start-prod'),
|
|
44
39
|
},
|
|
45
40
|
providers: [
|
|
46
|
-
{
|
|
47
|
-
provide: ANALYTICS_PACKAGE_INFO_TOKEN,
|
|
48
|
-
useValue: { name: '@tramvai/cli-api', version: '0.1.0' },
|
|
49
|
-
},
|
|
50
41
|
{
|
|
51
42
|
provide: STDOUT_TOKEN,
|
|
52
43
|
useFactory: ({ params }) => {
|
|
@@ -55,6 +55,7 @@ app.get<{ Querystring: Querystring }>(
|
|
|
55
55
|
return `<html>
|
|
56
56
|
<head>
|
|
57
57
|
<link rel="stylesheet" href="http://localhost:${appConfig.staticPort}/dist/client/platform.css">
|
|
58
|
+
<script src="http://localhost:${appConfig.staticPort}/dist/client/runtime.js" defer></script>
|
|
58
59
|
<script src="http://localhost:${appConfig.staticPort}/dist/client/react.js" defer></script>
|
|
59
60
|
<script src="http://localhost:${appConfig.staticPort}/dist/client/hmr.js" defer></script>
|
|
60
61
|
<script src="http://localhost:${appConfig.staticPort}/dist/client/platform.js" defer></script>
|
|
@@ -67,6 +67,7 @@ describe('@tramvai/cli start command', () => {
|
|
|
67
67
|
|
|
68
68
|
expect(responseServer.text)
|
|
69
69
|
.toMatch(`<link rel="stylesheet" href="http://localhost:${staticServerPort}/dist/client/platform.css">
|
|
70
|
+
<script src="http://localhost:${staticServerPort}/dist/client/runtime.js" defer></script>
|
|
70
71
|
<script src="http://localhost:${staticServerPort}/dist/client/react.js" defer></script>
|
|
71
72
|
<script src="http://localhost:${staticServerPort}/dist/client/hmr.js" defer></script>
|
|
72
73
|
<script src="http://localhost:${staticServerPort}/dist/client/platform.js" defer></script>`);
|
|
@@ -94,7 +95,6 @@ describe('@tramvai/cli start command', () => {
|
|
|
94
95
|
.expect(200);
|
|
95
96
|
|
|
96
97
|
expect(browserslistConfig).toMatchObject({
|
|
97
|
-
modern: ['chrome > 100'],
|
|
98
98
|
node: ['Node >= 18'],
|
|
99
99
|
defaults: expect.arrayContaining(['chrome > 27']),
|
|
100
100
|
});
|
|
@@ -170,6 +170,7 @@ describe('@tramvai/cli start command', () => {
|
|
|
170
170
|
|
|
171
171
|
expect(responseServer.text)
|
|
172
172
|
.toMatch(`<link rel="stylesheet" href="http://localhost:${staticServerPort}/dist/client/platform.css">
|
|
173
|
+
<script src="http://localhost:${staticServerPort}/dist/client/runtime.js" defer></script>
|
|
173
174
|
<script src="http://localhost:${staticServerPort}/dist/client/react.js" defer></script>
|
|
174
175
|
<script src="http://localhost:${staticServerPort}/dist/client/hmr.js" defer></script>
|
|
175
176
|
<script src="http://localhost:${staticServerPort}/dist/client/platform.js" defer></script>`);
|
package/src/api/start/index.ts
CHANGED
|
@@ -25,7 +25,6 @@ export function showBanner(di: Container) {
|
|
|
25
25
|
if (config.type !== 'application') {
|
|
26
26
|
titleLines.push(`${label('Type')} ${config.type}`);
|
|
27
27
|
}
|
|
28
|
-
titleLines.push(`${label('Modern')} ${config.modern}`);
|
|
29
28
|
titleLines.push(`${label('ReactRefresh')} ${config.hotRefresh.enabled}`);
|
|
30
29
|
|
|
31
30
|
if (isApplication(config) && config.fileSystemPages.enabled) {
|
|
@@ -26,15 +26,6 @@ Consider to test out swc support.`,
|
|
|
26
26
|
return configManager.experiments?.transpilation?.loader !== 'swc';
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
|
-
{
|
|
30
|
-
text: `Ship modern code to browser`,
|
|
31
|
-
docLink: 'how-to/how-enable-modern',
|
|
32
|
-
isApplicable(di) {
|
|
33
|
-
const configManager = di.get(CONFIG_MANAGER_TOKEN);
|
|
34
|
-
|
|
35
|
-
return configManager.modern !== true;
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
29
|
{
|
|
39
30
|
text: `Forget about reloading page with hotRefresh cli option`,
|
|
40
31
|
docLink: 'references/cli/start/#react-hot-refresh',
|
|
@@ -28,8 +28,6 @@ export const ProcessWorkerBridge: WorkerBridgeFactory<Worker> = (di) => {
|
|
|
28
28
|
getDebugArg(configManager.debug),
|
|
29
29
|
configManager.trace ? TRACE_ARGV : []
|
|
30
30
|
),
|
|
31
|
-
// устанавливаем в качестве дебага дефолтный порт мастера, т.к. у нас и так один процесс может работать
|
|
32
|
-
inspectPort: process.debugPort,
|
|
33
31
|
silent: true,
|
|
34
32
|
// @ts-ignore
|
|
35
33
|
cwd: di.get(CONFIG_ROOT_DIR_TOKEN),
|
|
@@ -241,6 +241,11 @@ export const serverRunner = ({
|
|
|
241
241
|
|
|
242
242
|
// Проксируем также и веб-сокеты
|
|
243
243
|
server.on('upgrade', (req, socket, head) => {
|
|
244
|
+
// prevent uncaughtException when WS is not supported in application server
|
|
245
|
+
socket.on('error', (err) => {
|
|
246
|
+
console.error('[dev-server-error] websocket proxy error', err.message);
|
|
247
|
+
});
|
|
248
|
+
|
|
244
249
|
proxy.ws(req, socket, { target: `http://localhost:${workerPort}` });
|
|
245
250
|
});
|
|
246
251
|
|
|
@@ -24,7 +24,6 @@ import { resolveDone } from './utils/resolveDone';
|
|
|
24
24
|
import { registerProviders } from '../../utils/di';
|
|
25
25
|
import { buildClientSharedProviders } from './providers/build/clientShared';
|
|
26
26
|
import { buildClientProviders } from './providers/build/client';
|
|
27
|
-
import { buildClientModernProviders } from './providers/build/clientModern';
|
|
28
27
|
import { buildServerProviders } from './providers/build/server';
|
|
29
28
|
import { CONFIG_MANAGER_TOKEN } from '../../di/tokens';
|
|
30
29
|
import { buildApplicationServerProviders } from './providers/build/application/server';
|
|
@@ -38,7 +37,7 @@ export const webpackProviders: Provider[] = [
|
|
|
38
37
|
useFactory: ({ di }) => {
|
|
39
38
|
return {
|
|
40
39
|
name: BUILDER_NAME,
|
|
41
|
-
createBuilder({ options: { shouldBuildClient, shouldBuildServer
|
|
40
|
+
createBuilder({ options: { shouldBuildClient, shouldBuildServer } }) {
|
|
42
41
|
registerProviders(di, [
|
|
43
42
|
...sharedProviders,
|
|
44
43
|
...(shouldBuildClient ? clientProviders : []),
|
|
@@ -83,11 +82,10 @@ export const webpackProviders: Provider[] = [
|
|
|
83
82
|
getBuildStats,
|
|
84
83
|
};
|
|
85
84
|
},
|
|
86
|
-
async build(
|
|
85
|
+
async build() {
|
|
87
86
|
registerProviders(di, [
|
|
88
87
|
...(shouldBuildClient ? buildClientSharedProviders : []),
|
|
89
|
-
...(shouldBuildClient
|
|
90
|
-
...(shouldBuildClient && modern ? buildClientModernProviders : []),
|
|
88
|
+
...(shouldBuildClient ? buildClientProviders : []),
|
|
91
89
|
...(shouldBuildServer ? buildServerProviders : []),
|
|
92
90
|
]);
|
|
93
91
|
|
|
@@ -4,32 +4,27 @@ import { provide } from '@tinkoff/dippy';
|
|
|
4
4
|
import rimraf from 'rimraf';
|
|
5
5
|
import { CLI_PACKAGE_MANAGER, CLI_ROOT_DIR_TOKEN } from '../../../../di/tokens';
|
|
6
6
|
import { npmRequire } from '../../../../utils/npmRequire';
|
|
7
|
-
import {
|
|
8
|
-
CLIENT_CONFIG_MANAGER_TOKEN,
|
|
9
|
-
CLIENT_MODERN_CONFIG_MANAGER_TOKEN,
|
|
10
|
-
INIT_HANDLER_TOKEN,
|
|
11
|
-
} from '../../tokens';
|
|
7
|
+
import { CLIENT_CONFIG_MANAGER_TOKEN, INIT_HANDLER_TOKEN } from '../../tokens';
|
|
12
8
|
|
|
13
9
|
export const buildClientSharedProviders: Provider[] = [
|
|
14
10
|
provide({
|
|
15
11
|
provide: INIT_HANDLER_TOKEN,
|
|
16
12
|
multi: true,
|
|
17
|
-
useFactory: ({ configManager
|
|
13
|
+
useFactory: ({ configManager }) => {
|
|
18
14
|
return function clearBuildDir() {
|
|
19
|
-
return rimraf.sync(`${
|
|
15
|
+
return rimraf.sync(`${configManager.buildPath}/**`, {});
|
|
20
16
|
};
|
|
21
17
|
},
|
|
22
18
|
deps: {
|
|
23
19
|
configManager: optional(CLIENT_CONFIG_MANAGER_TOKEN),
|
|
24
|
-
modernConfigManager: optional(CLIENT_MODERN_CONFIG_MANAGER_TOKEN),
|
|
25
20
|
},
|
|
26
21
|
}),
|
|
27
22
|
provide({
|
|
28
23
|
provide: INIT_HANDLER_TOKEN,
|
|
29
24
|
multi: true,
|
|
30
|
-
useFactory: ({ configManager,
|
|
25
|
+
useFactory: ({ configManager, rootDir, packageManager }) => {
|
|
31
26
|
return async function prepareImageOptimization() {
|
|
32
|
-
if (
|
|
27
|
+
if (configManager.imageOptimization?.enabled) {
|
|
33
28
|
await npmRequire({
|
|
34
29
|
cliRootDir: rootDir,
|
|
35
30
|
packageManager,
|
|
@@ -41,7 +36,6 @@ export const buildClientSharedProviders: Provider[] = [
|
|
|
41
36
|
},
|
|
42
37
|
deps: {
|
|
43
38
|
configManager: optional(CLIENT_CONFIG_MANAGER_TOKEN),
|
|
44
|
-
modernConfigManager: optional(CLIENT_MODERN_CONFIG_MANAGER_TOKEN),
|
|
45
39
|
rootDir: CLI_ROOT_DIR_TOKEN,
|
|
46
40
|
packageManager: CLI_PACKAGE_MANAGER,
|
|
47
41
|
},
|
|
@@ -3,12 +3,7 @@ import { provide } from '@tinkoff/dippy';
|
|
|
3
3
|
import { UI_SHOW_PROGRESS_TOKEN } from '../../../di/tokens';
|
|
4
4
|
import type { Env } from '../../../typings/Env';
|
|
5
5
|
import type { ProjectType } from '../../../typings/projectType';
|
|
6
|
-
import {
|
|
7
|
-
CLIENT_CONFIG_MANAGER_TOKEN,
|
|
8
|
-
CLIENT_MODERN_CONFIG_MANAGER_TOKEN,
|
|
9
|
-
WEBPACK_CLIENT_CONFIG_TOKEN,
|
|
10
|
-
WEBPACK_CLIENT_MODERN_CONFIG_TOKEN,
|
|
11
|
-
} from '../tokens';
|
|
6
|
+
import { CLIENT_CONFIG_MANAGER_TOKEN, WEBPACK_CLIENT_CONFIG_TOKEN } from '../tokens';
|
|
12
7
|
import { CONFIG_GENERATOR_STUB } from '../stubs/config';
|
|
13
8
|
import type { ConfigGenerator } from '../types';
|
|
14
9
|
|
|
@@ -41,17 +36,4 @@ export const clientProviders: Provider[] = [
|
|
|
41
36
|
showProgress: { token: UI_SHOW_PROGRESS_TOKEN, optional: true },
|
|
42
37
|
},
|
|
43
38
|
}),
|
|
44
|
-
provide({
|
|
45
|
-
provide: WEBPACK_CLIENT_MODERN_CONFIG_TOKEN,
|
|
46
|
-
useFactory: ({ configManager, showProgress }) => {
|
|
47
|
-
return CONFIG_MAP[configManager.env][configManager.type]({
|
|
48
|
-
configManager,
|
|
49
|
-
showProgress,
|
|
50
|
-
});
|
|
51
|
-
},
|
|
52
|
-
deps: {
|
|
53
|
-
configManager: CLIENT_MODERN_CONFIG_MANAGER_TOKEN,
|
|
54
|
-
showProgress: { token: UI_SHOW_PROGRESS_TOKEN, optional: true },
|
|
55
|
-
},
|
|
56
|
-
}),
|
|
57
39
|
];
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
GET_BUILD_STATS_TOKEN,
|
|
10
10
|
INIT_HANDLER_TOKEN,
|
|
11
11
|
WEBPACK_CLIENT_COMPILER_TOKEN,
|
|
12
|
-
WEBPACK_CLIENT_MODERN_COMPILER_TOKEN,
|
|
13
12
|
WEBPACK_SERVER_COMPILER_TOKEN,
|
|
14
13
|
} from '../tokens';
|
|
15
14
|
import { calculateBuildTime } from '../utils/calculateBuildTime';
|
|
@@ -19,7 +18,7 @@ import { maxMemoryRss } from '../utils/maxMemoryRss';
|
|
|
19
18
|
export const sharedProviders: Provider[] = [
|
|
20
19
|
provide({
|
|
21
20
|
provide: GET_BUILD_STATS_TOKEN,
|
|
22
|
-
useFactory: ({ withBuildStats, clientCompiler,
|
|
21
|
+
useFactory: ({ withBuildStats, clientCompiler, serverCompiler }) => {
|
|
23
22
|
if (!withBuildStats) {
|
|
24
23
|
return () => {
|
|
25
24
|
return {};
|
|
@@ -27,14 +26,12 @@ export const sharedProviders: Provider[] = [
|
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
const getClientTime = clientCompiler && calculateBuildTime(clientCompiler);
|
|
30
|
-
const getClientModernTime = clientModernCompiler && calculateBuildTime(clientModernCompiler);
|
|
31
29
|
const getServerTime = serverCompiler && calculateBuildTime(serverCompiler);
|
|
32
30
|
|
|
33
31
|
const getMaxMemoryRss = maxMemoryRss();
|
|
34
32
|
return () => {
|
|
35
33
|
return {
|
|
36
34
|
clientBuildTime: getClientTime?.(),
|
|
37
|
-
clientModernBuildTime: getClientModernTime?.(),
|
|
38
35
|
serverBuildTime: getServerTime?.(),
|
|
39
36
|
maxMemoryRss: getMaxMemoryRss?.(),
|
|
40
37
|
};
|
|
@@ -43,7 +40,6 @@ export const sharedProviders: Provider[] = [
|
|
|
43
40
|
deps: {
|
|
44
41
|
withBuildStats: { token: WITH_BUILD_STATS_TOKEN, optional: true },
|
|
45
42
|
clientCompiler: { token: WEBPACK_CLIENT_COMPILER_TOKEN, optional: true },
|
|
46
|
-
clientModernCompiler: { token: WEBPACK_CLIENT_MODERN_COMPILER_TOKEN, optional: true },
|
|
47
43
|
serverCompiler: { token: WEBPACK_SERVER_COMPILER_TOKEN, optional: true },
|
|
48
44
|
},
|
|
49
45
|
}),
|
|
@@ -54,18 +50,15 @@ export const sharedProviders: Provider[] = [
|
|
|
54
50
|
provide({
|
|
55
51
|
provide: INIT_HANDLER_TOKEN,
|
|
56
52
|
multi: true,
|
|
57
|
-
useFactory: ({ eventEmitter, clientCompiler,
|
|
53
|
+
useFactory: ({ eventEmitter, clientCompiler, serverCompiler }) => {
|
|
58
54
|
return () => {
|
|
59
55
|
clientCompiler && emitWebpackEvents(clientCompiler, eventEmitter, 'client');
|
|
60
|
-
clientModernCompiler &&
|
|
61
|
-
emitWebpackEvents(clientModernCompiler, eventEmitter, 'clientModern');
|
|
62
56
|
serverCompiler && emitWebpackEvents(serverCompiler, eventEmitter, 'server');
|
|
63
57
|
};
|
|
64
58
|
},
|
|
65
59
|
deps: {
|
|
66
60
|
eventEmitter: EVENT_EMITTER_TOKEN,
|
|
67
61
|
clientCompiler: { token: WEBPACK_CLIENT_COMPILER_TOKEN, optional: true },
|
|
68
|
-
clientModernCompiler: { token: WEBPACK_CLIENT_MODERN_COMPILER_TOKEN, optional: true },
|
|
69
62
|
serverCompiler: { token: WEBPACK_SERVER_COMPILER_TOKEN, optional: true },
|
|
70
63
|
},
|
|
71
64
|
}),
|
|
@@ -10,17 +10,11 @@ import type { CliConfigEntry } from '../../typings/configEntry/cli';
|
|
|
10
10
|
export const CLIENT_CONFIG_MANAGER_TOKEN = createToken<ConfigManager<CliConfigEntry>>(
|
|
11
11
|
'builder-webpack clientConfigManager'
|
|
12
12
|
);
|
|
13
|
-
export const CLIENT_MODERN_CONFIG_MANAGER_TOKEN = createToken<ConfigManager<CliConfigEntry>>(
|
|
14
|
-
'builder-webpack clientModernConfigManager'
|
|
15
|
-
);
|
|
16
13
|
export const SERVER_CONFIG_MANAGER_TOKEN = createToken<ConfigManager<CliConfigEntry>>(
|
|
17
14
|
'builder-webpack serverConfigManager'
|
|
18
15
|
);
|
|
19
16
|
export const WEBPACK_CLIENT_CONFIG_TOKEN = createToken<Config>('builder-webpack clientConfig');
|
|
20
17
|
|
|
21
|
-
export const WEBPACK_CLIENT_MODERN_CONFIG_TOKEN = createToken<Config>(
|
|
22
|
-
'builder-webpack clientModernConfig'
|
|
23
|
-
);
|
|
24
18
|
export const WEBPACK_SERVER_CONFIG_TOKEN = createToken<Config>('builder-webpack serverConfig');
|
|
25
19
|
|
|
26
20
|
export const WEBPACK_COMPILER_TOKEN = createToken<MultiCompiler>('builder-webpack webpackCompiler');
|
|
@@ -29,9 +23,6 @@ export const WEBPACK_CLIENT_COMPILER_TOKEN = createToken<Compiler>(
|
|
|
29
23
|
'builder-webpack webpackClientCompiler'
|
|
30
24
|
);
|
|
31
25
|
|
|
32
|
-
export const WEBPACK_CLIENT_MODERN_COMPILER_TOKEN = createToken<Compiler>(
|
|
33
|
-
'builder-webpack webpackClientModernCompiler'
|
|
34
|
-
);
|
|
35
26
|
export const WEBPACK_SERVER_COMPILER_TOKEN = createToken<Compiler>(
|
|
36
27
|
'builder-webpack webpackServerCompiler'
|
|
37
28
|
);
|
|
@@ -8,7 +8,6 @@ export const copyStatsJsonFileToServerDirectory = async (
|
|
|
8
8
|
clientConfigManager: ConfigManager<ApplicationConfigEntry>
|
|
9
9
|
) => {
|
|
10
10
|
const STATS_JSON_FILE_NAME = 'stats.json';
|
|
11
|
-
const STATS_JSON_FILE_NAME_MODERN = 'stats.modern.json';
|
|
12
11
|
|
|
13
12
|
const statsJsonFileDirectoryPath = clientConfigManager.output.client;
|
|
14
13
|
|
|
@@ -18,14 +17,7 @@ export const copyStatsJsonFileToServerDirectory = async (
|
|
|
18
17
|
STATS_JSON_FILE_NAME
|
|
19
18
|
);
|
|
20
19
|
|
|
21
|
-
const statsJsonFilePathModern = path.resolve(
|
|
22
|
-
clientConfigManager.rootDir,
|
|
23
|
-
statsJsonFileDirectoryPath,
|
|
24
|
-
STATS_JSON_FILE_NAME_MODERN
|
|
25
|
-
);
|
|
26
|
-
|
|
27
20
|
const isExistStatsJsonFilePath = fs.existsSync(statsJsonFilePath);
|
|
28
|
-
const isExistStatsJsonFilePathModern = fs.existsSync(statsJsonFilePathModern);
|
|
29
21
|
|
|
30
22
|
// TODO: Необходимо вынести все локальные константы обозначающие тип сборки
|
|
31
23
|
// ('client' | 'server' | 'all') в отдельный enum и переиспользовать по всему коду @tramvai/cli
|
|
@@ -41,13 +33,4 @@ export const copyStatsJsonFileToServerDirectory = async (
|
|
|
41
33
|
fileName: STATS_JSON_FILE_NAME,
|
|
42
34
|
});
|
|
43
35
|
}
|
|
44
|
-
|
|
45
|
-
if (isExistStatsJsonFilePathModern && clientConfigManager.modern) {
|
|
46
|
-
await copyBuildFile({
|
|
47
|
-
config: clientConfigManager,
|
|
48
|
-
inputPath: statsJsonFileDirectoryPath,
|
|
49
|
-
fromType: FROM_BUILD_DIRECTORY_TYPE,
|
|
50
|
-
fileName: STATS_JSON_FILE_NAME_MODERN,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
36
|
};
|
package/src/cli/CLI.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { Command, CommandMap, CommandResult } from '../models/command';
|
|
|
5
5
|
import type { Logger } from '../models/logger';
|
|
6
6
|
import type { Task, TaskMap } from '../models/task';
|
|
7
7
|
import type { ConfigManager } from '../models/config';
|
|
8
|
-
import
|
|
8
|
+
import { AnalyticsService } from '../models/analytics/analytics';
|
|
9
9
|
|
|
10
10
|
export class CLI {
|
|
11
11
|
context: Context;
|
|
@@ -47,16 +47,18 @@ export class CLI {
|
|
|
47
47
|
tasksMap: TaskMap,
|
|
48
48
|
logger: Logger,
|
|
49
49
|
config: ConfigManager,
|
|
50
|
-
analytics: Analytics,
|
|
51
50
|
cliRootDir: string,
|
|
52
|
-
cliPackageManager: PackageManager
|
|
51
|
+
cliPackageManager: PackageManager,
|
|
52
|
+
packageManager: PackageManager,
|
|
53
|
+
analytics: AnalyticsService
|
|
53
54
|
) {
|
|
54
55
|
this.context = new Context(
|
|
55
56
|
config,
|
|
56
57
|
logger,
|
|
57
|
-
analytics,
|
|
58
58
|
cliRootDir,
|
|
59
59
|
cliPackageManager,
|
|
60
|
+
packageManager,
|
|
61
|
+
analytics,
|
|
60
62
|
this.runTask,
|
|
61
63
|
this.runCommand,
|
|
62
64
|
this.getTasks,
|
package/src/cli/index.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { resolvePackageManager, NpmPackageManager } from '@tinkoff/package-manager-wrapper';
|
|
3
3
|
import { CLI } from './CLI';
|
|
4
|
-
import { Analytics } from '../models/analytics';
|
|
5
4
|
import { Logger } from '../models/logger';
|
|
6
5
|
import { ConfigManager } from '../models/config';
|
|
7
6
|
import { initSentry } from '../utils/sentry';
|
|
@@ -27,6 +26,7 @@ import type { TaskMap } from '../models/task';
|
|
|
27
26
|
import { getRootFile } from '../utils/getRootFile';
|
|
28
27
|
import { getTramvaiConfig } from '../utils/getTramvaiConfig';
|
|
29
28
|
import { syncJsonFile } from '../utils/syncJsonFile';
|
|
29
|
+
import { AnalyticsService, resolveDependenciesProperties } from '../models/analytics/analytics';
|
|
30
30
|
|
|
31
31
|
async function loadCommands(): Promise<CommandMap> {
|
|
32
32
|
return [
|
|
@@ -53,6 +53,7 @@ const defaultPackageInfo = { name: 'init app', version: '0.0.1' };
|
|
|
53
53
|
|
|
54
54
|
export async function cliInitialized(cliArgs = process.argv) {
|
|
55
55
|
const logger = new Logger();
|
|
56
|
+
let analytics: AnalyticsService;
|
|
56
57
|
const sentry = initSentry();
|
|
57
58
|
|
|
58
59
|
try {
|
|
@@ -70,31 +71,55 @@ export async function cliInitialized(cliArgs = process.argv) {
|
|
|
70
71
|
}>('package.json');
|
|
71
72
|
const { content: config } = getTramvaiConfig();
|
|
72
73
|
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
const configManager = new ConfigManager({ config, syncConfigFile: syncJsonFile });
|
|
75
|
+
const packageManager = resolvePackageManager({ rootDir: process.cwd() });
|
|
76
|
+
|
|
77
|
+
analytics = new AnalyticsService({
|
|
78
|
+
logger,
|
|
79
|
+
packageManager,
|
|
80
|
+
enabled: configManager.config?.analytics?.enabled,
|
|
81
|
+
endpoint: configManager.config?.analytics?.endpoint,
|
|
82
|
+
system: configManager.config?.analytics?.system,
|
|
77
83
|
});
|
|
78
84
|
|
|
79
|
-
|
|
85
|
+
await analytics.init();
|
|
80
86
|
|
|
81
87
|
const cliRootDir = path.resolve(__dirname, '../', '../');
|
|
82
88
|
const cliPackageManager = new NpmPackageManager({
|
|
83
89
|
rootDir: cliRootDir,
|
|
84
90
|
});
|
|
85
91
|
|
|
92
|
+
await analytics.send({
|
|
93
|
+
event: 'cli:init',
|
|
94
|
+
message: '@tramvai/cli initialized',
|
|
95
|
+
level: 'INFO',
|
|
96
|
+
arguments: cliArgs.slice(2),
|
|
97
|
+
uptime: performance.now(),
|
|
98
|
+
dependencies: resolveDependenciesProperties(),
|
|
99
|
+
});
|
|
100
|
+
|
|
86
101
|
const cliInstance = new CLI(
|
|
87
102
|
commandsMap,
|
|
88
103
|
tasksMap,
|
|
89
104
|
logger,
|
|
90
105
|
configManager,
|
|
91
|
-
analytic,
|
|
92
106
|
cliRootDir,
|
|
93
|
-
cliPackageManager
|
|
107
|
+
cliPackageManager,
|
|
108
|
+
packageManager,
|
|
109
|
+
analytics
|
|
94
110
|
);
|
|
95
111
|
|
|
96
112
|
return await cliInstance.run(cliArgs);
|
|
97
113
|
} catch (e: any) {
|
|
114
|
+
await analytics?.send({
|
|
115
|
+
event: 'cli:error',
|
|
116
|
+
message: '@tramvai/cli run failed',
|
|
117
|
+
level: 'ERROR',
|
|
118
|
+
arguments: cliArgs.slice(2),
|
|
119
|
+
error: e,
|
|
120
|
+
uptime: performance.now(),
|
|
121
|
+
});
|
|
122
|
+
|
|
98
123
|
logger.event({
|
|
99
124
|
type: 'error',
|
|
100
125
|
event: 'GLOBAL:ERROR',
|
package/src/cli/runCLI.ts
CHANGED
|
@@ -2,7 +2,11 @@ import exit from 'exit';
|
|
|
2
2
|
|
|
3
3
|
import { fixYarnSettingsOverride } from '../utils/fixYarnSettingsOverride';
|
|
4
4
|
import { handleErrors } from '../utils/handleErrors';
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
declare global {
|
|
7
|
+
// eslint-disable-next-line no-var, vars-on-top
|
|
8
|
+
var __TRAMVAI_EXIT_HANDLERS__: Array<() => Promise<any>>;
|
|
9
|
+
}
|
|
6
10
|
|
|
7
11
|
// to use V8's code cache to speed up instantiation time
|
|
8
12
|
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
@@ -12,17 +16,34 @@ handleErrors();
|
|
|
12
16
|
fixYarnSettingsOverride();
|
|
13
17
|
|
|
14
18
|
if (process.env.TRAMVAI_CPU_PROFILE) {
|
|
19
|
+
const { enableCpuProfile } = require('../utils/cpu-profile');
|
|
15
20
|
enableCpuProfile('tramvai-cli');
|
|
16
21
|
}
|
|
17
22
|
|
|
18
23
|
export default (pathCli: string) => {
|
|
19
24
|
const cli = require(pathCli).cliInitialized;
|
|
20
25
|
|
|
26
|
+
async function runExitHandlersAndQuit(code: number) {
|
|
27
|
+
if (global.__TRAMVAI_EXIT_HANDLERS__) {
|
|
28
|
+
const handlers = [...global.__TRAMVAI_EXIT_HANDLERS__];
|
|
29
|
+
const promise = Promise.allSettled(handlers.map((handler) => handler()));
|
|
30
|
+
|
|
31
|
+
// prevent multiple calls to exit handlers, wait the same handlers if they are already running
|
|
32
|
+
global.__TRAMVAI_EXIT_HANDLERS__ = [() => promise];
|
|
33
|
+
|
|
34
|
+
await promise;
|
|
35
|
+
}
|
|
36
|
+
exit(code);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
process.on('SIGINT', async () => runExitHandlersAndQuit(0));
|
|
40
|
+
process.on('SIGTERM', async () => runExitHandlersAndQuit(0));
|
|
41
|
+
|
|
21
42
|
return cli()
|
|
22
|
-
.then(() => {
|
|
23
|
-
|
|
43
|
+
.then(async () => {
|
|
44
|
+
await runExitHandlersAndQuit(0);
|
|
24
45
|
})
|
|
25
|
-
.catch(() => {
|
|
26
|
-
|
|
46
|
+
.catch(async () => {
|
|
47
|
+
await runExitHandlersAndQuit(1);
|
|
27
48
|
});
|
|
28
49
|
};
|