ddd1020a3a
Решение «Vite не трогать» пересмотрено по данным, а не по желанию обновиться.
`pnpm audit --prod` (то, на что смотрит gate сборки) был чист, но полный audit
показывал в build-цепочке два critical и rollup GHSA DOM clobbering — а он
затрагивает ГЕНЕРИРУЕМЫЙ bundle, то есть уезжает в production. Vite 4.3.1 тянул
rollup 3 без исправления.
Взята 7.3.6 — последняя линия до Rolldown. Vite 8 по-прежнему не берётся: это
смена бандлера, отдельная работа с собственной приёмкой.
Вместе с Vite обновлена цепочка плагинов (@vitejs/plugin-vue 4 -> 6,
unplugin-* и unocss с версий 2022-2023 годов) и линтеры (@typescript-eslint
5 -> 8, prettier 2 -> 3, stylelint 15 -> 17). Новый @typescript-eslint нашёл 7
настоящих замечаний — исправлены по существу, а не подавлением правил; среди
них подавление несуществующего правила ban-types и `{}` вместо `object`.
Отдельно — три мёртвых редактора. Outbounds уже был разобран, здесь то же
самое для ImputMultiple (ACME-домены, inline ACL) и MapAdd (параметры ACME DNS,
заголовки masquerade): оба редактировали конфиг Hysteria в форме с
:disabled="true", получали значения без v-model и эмитили события, которых
никто не слушает, на странице без единого маршрута записи.
Цена ImputMultiple была измеримой. vuedraggable поставляется UMD-сборкой,
поэтому её require("vue") разрешался в vue/dist/vue.cjs.prod.js — полную сборку
Vue с рантайм-компилятором шаблонов. В бандл уезжало ~500 КБ исходников
(vuedraggable + sortablejs + compiler-core + compiler-dom) ради перетаскивания
тегов в недоступной для редактирования форме.
Разбор bundle через sourcemap нашёл и вторую потерю: @vueuse/core собирался
дважды — наш 13.9.0 и 14.4.0 из element-plus. Версии сведены.
bundle: 2 813 525 против 2 404 202 на исходной базовой линии (+17% за Vue 3.5,
Element Plus 2.14, echarts 6 и rollup 4). Промежуточное состояние без этих двух
исправлений было 3 046 172.
pnpm audit --prod: чисто. typecheck/eslint/stylelint: 0. go build с dist: OK.
85 lines
2.0 KiB
JSON
85 lines
2.0 KiB
JSON
{
|
|
"globals": {
|
|
"Component": true,
|
|
"ComponentPublicInstance": true,
|
|
"ComputedRef": true,
|
|
"DirectiveBinding": true,
|
|
"EffectScope": true,
|
|
"ElForm": true,
|
|
"ElMessage": true,
|
|
"ElMessageBox": true,
|
|
"ExtractDefaultPropTypes": true,
|
|
"ExtractPropTypes": true,
|
|
"ExtractPublicPropTypes": true,
|
|
"InjectionKey": true,
|
|
"MaybeRef": true,
|
|
"MaybeRefOrGetter": true,
|
|
"PropType": true,
|
|
"Ref": true,
|
|
"ShallowRef": true,
|
|
"Slot": true,
|
|
"Slots": true,
|
|
"VNode": true,
|
|
"WritableComputedRef": true,
|
|
"computed": true,
|
|
"createApp": true,
|
|
"customRef": true,
|
|
"defineAsyncComponent": true,
|
|
"defineComponent": true,
|
|
"effectScope": true,
|
|
"getCurrentInstance": true,
|
|
"getCurrentScope": true,
|
|
"getCurrentWatcher": true,
|
|
"h": true,
|
|
"inject": true,
|
|
"isProxy": true,
|
|
"isReactive": true,
|
|
"isReadonly": true,
|
|
"isRef": true,
|
|
"isShallow": true,
|
|
"markRaw": true,
|
|
"nextTick": true,
|
|
"onActivated": true,
|
|
"onBeforeMount": true,
|
|
"onBeforeUnmount": true,
|
|
"onBeforeUpdate": true,
|
|
"onDeactivated": true,
|
|
"onErrorCaptured": true,
|
|
"onMounted": true,
|
|
"onRenderTracked": true,
|
|
"onRenderTriggered": true,
|
|
"onScopeDispose": true,
|
|
"onServerPrefetch": true,
|
|
"onUnmounted": true,
|
|
"onUpdated": true,
|
|
"onWatcherCleanup": true,
|
|
"provide": true,
|
|
"reactive": true,
|
|
"readonly": true,
|
|
"ref": true,
|
|
"resolveComponent": true,
|
|
"shallowReactive": true,
|
|
"shallowReadonly": true,
|
|
"shallowRef": true,
|
|
"toRaw": true,
|
|
"toRef": true,
|
|
"toRefs": true,
|
|
"toValue": true,
|
|
"triggerRef": true,
|
|
"unref": true,
|
|
"useAttrs": true,
|
|
"useCssModule": true,
|
|
"useCssVars": true,
|
|
"useFullscreen": true,
|
|
"useId": true,
|
|
"useModel": true,
|
|
"useSlots": true,
|
|
"useTemplateRef": true,
|
|
"useVModel": true,
|
|
"watch": true,
|
|
"watchEffect": true,
|
|
"watchPostEffect": true,
|
|
"watchSyncEffect": true
|
|
}
|
|
}
|