build(frontend): обновить UI-зависимости внутри текущих major и закрыть все advisory
Vue Router 4.1.6 -> 4.6.4, Pinia 2.0.33 -> 2.3.1, @vueuse/core 9 -> 13.9.0, vue-i18n 9.0.0 -> 9.14.5, echarts 5.6 -> 6.1.0, vue-echarts 7 -> 8.1.0. Pinia 3, Vue Router 5 и Vite 8 сознательно не берутся: ни один из них не даёт проекту ничего, кроме номера версии, а Vite 8 — это переезд на Rolldown. vue-i18n и echarts обновлены не ради свежести: `pnpm audit --prod` на базовой линии показывал 4 moderate, из них GHSA-x8qp-wqqm-57ph (vue-i18n, исправлено в 9.14.5) и GHSA-fgmj-fm8m-jvvx (echarts XSS, исправлено в 6.1.0). Теперь `pnpm audit --prod` чист. Четвёртая advisory — GHSA-5m5x-9j46-h678 в el-link — исправленной версии не имеет, но в продукте недостижима: el-link не используется ни в одном представлении. pnpm audit анализа достижимости не делает, в отличие от govulncheck, поэтому это приходится проверять руками. VueUse 13 сломал сборку: `[auto-import] identifier toRef already defined with vue`. Причина — авто-импорт всего @vueuse/core, то есть пятисот с лишним имён, среди которых реэкспорты toRef и toValue. Список сужен до двух функций, которые действительно используются без явного импорта; src/types/auto-imports.d.ts сократился с 526 строк до 124. Заодно включена генерация .eslintrc-auto-import.json: файл подключён через extends в .eslintrc.cjs, но не генерировался, то есть перечислял глобальные имена, которых в авто-импорте давно нет. Устаревший список молча отключает предупреждение eslint об обращении к несуществующему имени. bundle: 2 604 924 против 2 404 202 на базовой линии (+8%). typecheck: 0, eslint: 0, go build с встроенным dist: OK.
This commit is contained in:
@@ -63,9 +63,39 @@ export default defineConfig((): UserConfig => {
|
||||
}),
|
||||
AutoImport({
|
||||
// Auto import Vue helpers: ref, reactive, toRef, etc.
|
||||
imports: ["vue", "@vueuse/core"],
|
||||
//
|
||||
// Из @vueuse/core берутся ПОИМЁННО только те функции, которые
|
||||
// действительно используются без явного импорта, а не весь пакет.
|
||||
//
|
||||
// Причина не стилистическая. С `"@vueuse/core"` целиком в список
|
||||
// авто-импорта попадает вся его публичная поверхность — более пятисот
|
||||
// имён, — и на VueUse 13 сборка падает:
|
||||
//
|
||||
// [auto-import] identifier toRef already defined with vue
|
||||
//
|
||||
// VueUse реэкспортирует `toRef` и `toValue`, и они конфликтуют с
|
||||
// одноимёнными функциями Vue. Разрешать конфликт порядком записей в
|
||||
// массиве значило бы решать вопрос «какой из двух toRef здесь имеется в
|
||||
// виду» невидимо для читателя файла.
|
||||
//
|
||||
// Побочный эффект — src/types/auto-imports.d.ts сокращается с 526 строк
|
||||
// до размера, который можно прочитать глазами.
|
||||
imports: [
|
||||
"vue",
|
||||
{
|
||||
"@vueuse/core": ["useVModel", "useFullscreen"],
|
||||
},
|
||||
],
|
||||
eslintrc: {
|
||||
enabled: false, // Default `false`
|
||||
// Включено намеренно. Файл перечисляет глобальные имена для eslint и
|
||||
// подключается через `extends` в .eslintrc.cjs, но генерация была
|
||||
// выключена — то есть список жил своей жизнью и расходился со
|
||||
// списком авто-импортов при каждом его изменении.
|
||||
//
|
||||
// Устаревшие записи здесь не безобидны: eslint перестаёт сообщать об
|
||||
// обращении к имени, которого больше нет в авто-импорте, и ошибка
|
||||
// доезжает до typecheck или до рантайма вместо линтера.
|
||||
enabled: true,
|
||||
filepath: "./.eslintrc-auto-import.json", // Default `./.eslintrc-auto-import.json`
|
||||
globalsPropValue: true, // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user