b912724cf7
- rollup-plugin-visualizer + script `npm run build:analyze` (env BUILD_ANALYZE=1)
Output: storage/bundle-analyze.html (gzip + brotli sizes), gitignored.
- cross-env установлен для Windows-совместимости env-переменной build:analyze.
- knip + knip.config.ts (entry app.ts + router/index.ts; ignore *.story.vue + tests/).
ВАЖНО: knip падает с oxc-parser ArrayBuffer fail на этой машине
(Windows quirk feedback memory) — конфиг сохранён для будущих запусков на
Linux/macOS CI. Dead-code search выполнен вручную через grep по composables/.
- Удалены 4 unused exports + 4 private helpers, инициируемых только ими:
* mockReports.ts: MOCK_JOBS, QuotaInfo (interface), MOCK_QUOTA
* reportsMapper.ts: reportTypes()
* mockTenantDetail.ts: expandTenantDetail() + 4 SAMPLE_* consts
(SAMPLE_USERS/SAMPLE_PROJECTS/SAMPLE_BALANCE_HISTORY/SAMPLE_ACTIVITY)
* useCsvDownload.ts: csvEscape() — снят `export` (используется внутри файла)
ESLint + vue-tsc + Vitest 416/416 + build — зелёные.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
import { defineConfig } from 'vite';
|
|
import laravel from 'laravel-vite-plugin';
|
|
import vue from '@vitejs/plugin-vue';
|
|
import vuetify from 'vite-plugin-vuetify';
|
|
import { visualizer } from 'rollup-plugin-visualizer';
|
|
|
|
// Vue 3 + Vuetify 3 (фаза 2 из CLAUDE.md §3.3).
|
|
// vite-plugin-vuetify авто-импортирует только используемые компоненты Vuetify
|
|
// (tree-shaking) — без ручных import'ов в каждом .vue.
|
|
export default defineConfig({
|
|
plugins: [
|
|
laravel({
|
|
input: ['resources/css/app.css', 'resources/js/app.ts'],
|
|
refresh: true,
|
|
}),
|
|
vue({
|
|
template: {
|
|
transformAssetUrls: {
|
|
base: null,
|
|
includeAbsolute: false,
|
|
},
|
|
},
|
|
}),
|
|
vuetify({ autoImport: true }),
|
|
// Bundle analyzer (Sprint 4 Phase C / audit O-refactor-06):
|
|
// активен только при BUILD_ANALYZE=1. Генерирует storage/bundle-analyze.html.
|
|
process.env.BUILD_ANALYZE === '1' && visualizer({
|
|
filename: 'storage/bundle-analyze.html',
|
|
open: false,
|
|
gzipSize: true,
|
|
brotliSize: true,
|
|
}),
|
|
].filter(Boolean),
|
|
server: {
|
|
watch: {
|
|
ignored: ['**/storage/framework/views/**'],
|
|
},
|
|
},
|
|
});
|