DFiP_Budget_planing/perf/web/rsbuild.perf.config.ts
Andrey Epifancev 8e9f53a478 perf: скрипты разбора и сводные данные прогонов 20261026
- perf/analysis: разбор trace (timeline_breakdown), CPU-профилей с source maps
  (cpuprofile_top), heap snapshots (heapdiff), циклов памяти, сравнения масштабов,
  ручной EXPLAIN вложенных запросов (explain_manual), API против X-DB-Time-Ms
  (api_split), сводка горячих точек; тесты ядра в perf/tests/test_analysis.py
- perf/e2e/scenarios/hotspots.spec.ts: CPU-профиль, рендеры React, мутации DOM
  после фильтра, рост CSS-правил по циклам (вне run-all)
- prod-сборка с source maps: PERF_SOURCEMAP=1, perf/stand.sh web-sourcemap (:8082)
- perf/report-data/20261026-s1, 20261026-s2 (summary, sql, analysis, explain-manual),
  t5-types (иллюстрация CPU 6x)
- design.md: решения T10b без обсуждения

Refs #202

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:43:46 +04:00

29 lines
1.2 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import path from 'node:path';
import { mergeRsbuildConfig } from '../../web/node_modules/@rsbuild/core';
import baseConfig from '../../web/rsbuild.config';
const profiling = process.env.PERF_PROFILING === '1';
// prod-сборка с source maps (тот же минифицированный код + .map): для привязки CPU-профиля к file:line web/src (Task 10b)
const sourcemap = !profiling && process.env.PERF_SOURCEMAP === '1';
const root = path.resolve(__dirname, '..', '.build', profiling ? 'profiling' : sourcemap ? 'prod-sourcemap' : 'prod');
export default mergeRsbuildConfig(baseConfig, {
output: {
distPath: { root },
// профилирующая сборка: имена компонентов нужны для отчёта «что перерисовывается» (lib/reactProfile.ts)
...(profiling ? { minify: false } : {}),
...(sourcemap ? { sourceMap: { js: 'source-map' } } : {}),
},
resolve: profiling ? { alias: { 'react-dom$': 'react-dom/profiling' } } : {},
server: {
port: Number(process.env.PERF_WEB_PORT ?? 8080),
proxy: {
'/api': {
target: 'http://localhost:8000',
ws: true,
changeOrigin: true,
},
},
},
});