32ff47731c
vite-plugin-svg-icons не обновлялся с 2022 года и был единственным источником половины оставшихся предупреждений: svgo 2.8, postcss 5.2.18, braces 2.3.2 и image-size 0.5.5 — у последней advisory прямо сообщает `Patched versions: <0.0.0`, то есть исправленной версии не существует. Задача, которую он решал, заняла один модуль: import.meta.glob собирает семнадцать локальных SVG в скрытый спрайт со <symbol>. Компонентный подход (unplugin-icons) здесь не подходит — имя иконки часто вычисляется в рантайме (onlyOneChild.meta.icon, isFullscreen ? ... : ...), а поиск по id нужен именно для этого. API <svg-icon icon-class="..."> не изменился. Проверка на реальных ассетах поймала то, что иначе уехало бы в релиз: три иконки из семнадцати не объявляют viewBox, задавая только width/height. Без viewBox <use> рисует иконку в натуральную величину и обрезает её. Плагин синтезировал viewBox сам; теперь это делает sprite.ts, а инвариант закреплён приёмкой — иконка без обоих способов задать координаты роняет сборку. Отдельно: typecheck поймал две ошибки уже в самом sprite.ts (SVGSVGElement против HTMLElement из getElementById). Ровно то, ради чего он возвращался. eslint 8 объявлен EOL и оставался вторым источником предупреждений. Переход на eslint 10 потребовал flat config: eslintrc в 9 работает только через переменную окружения, а в 10 удалён, поэтому обновление версии без смены формата было бы отсрочкой на релиз. Набор правил сохранён прежним; .eslintignore свёрнут в ignores, как требует новый формат. Проверено, что flat config действительно линтит, а не молча пропускает: пробный файл с неиспользуемой переменной и необъявленным именем даёт обе ошибки и в .ts, и в .vue. Оставшиеся предупреждения приходили из графов самих eslint 10 и stylelint 17, то есть уже последних версий, — закрыты pnpm.overrides. Override для ajv ограничен `table>ajv`: глобальный ломал eslint, который использует ajv 6. pnpm audit по всему графу: 33 предупреждения -> 0. typecheck/eslint/stylelint/build: 0. go build и go test с встроенным dist: OK.
82 lines
2.4 KiB
JSON
82 lines
2.4 KiB
JSON
{
|
|
"name": "hy2xs-admin",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"license": "AGPL-3.0-only",
|
|
"description": "HY2XS admin",
|
|
"author": "HY2XS",
|
|
"packageManager": "pnpm@9.15.9",
|
|
"scripts": {
|
|
"dev": "vite serve --mode development",
|
|
"typecheck": "vue-tsc --noEmit",
|
|
"build:prod": "vite build --mode production",
|
|
"verify": "pnpm run typecheck && pnpm run build:prod",
|
|
"lint:eslint": "eslint --fix ./src",
|
|
"lint:prettier": "prettier --write \"**/*.{js,cjs,ts,json,tsx,css,less,scss,vue,html,md}\"",
|
|
"lint:stylelint": "stylelint \"**/*.{css,scss,vue}\" --fix"
|
|
},
|
|
"dependencies": {
|
|
"@element-plus/icons-vue": "^2.3.2",
|
|
"@vueuse/core": "^14.4.0",
|
|
"axios": "^1.20.0",
|
|
"copy-to-clipboard": "^3.3.3",
|
|
"echarts": "^6.1.0",
|
|
"element-plus": "^2.14.5",
|
|
"nprogress": "^0.2.0",
|
|
"path-browserify": "^1.0.1",
|
|
"pinia": "^2.3.1",
|
|
"qrcode.vue": "3.4.1",
|
|
"vue": "^3.5.42",
|
|
"vue-echarts": "^8.1.0",
|
|
"vue-i18n": "^9.14.5",
|
|
"vue-router": "^4.6.4"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "10.0.1",
|
|
"@iconify-json/ep": "^1.2.4",
|
|
"@types/nprogress": "^0.2.0",
|
|
"@types/path-browserify": "^1.0.0",
|
|
"@vitejs/plugin-vue": "^6.0.8",
|
|
"autoprefixer": "^10.4.13",
|
|
"eslint": "^10.9.1",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-vue": "^10.10.0",
|
|
"globals": "17.11.0",
|
|
"postcss": "^8.5.26",
|
|
"postcss-html": "^2.0.0",
|
|
"postcss-scss": "^4.0.9",
|
|
"prettier": "^3.9.6",
|
|
"sass": "^1.103.1",
|
|
"stylelint": "^17.14.1",
|
|
"stylelint-config-html": "^2.0.0",
|
|
"stylelint-config-recess-order": "^7.8.0",
|
|
"stylelint-config-recommended-scss": "^17.0.1",
|
|
"stylelint-config-recommended-vue": "^2.0.0",
|
|
"stylelint-config-standard": "^40.0.0",
|
|
"stylelint-config-standard-scss": "^17.0.0",
|
|
"stylelint-order": "8.0.0",
|
|
"typescript": "^5.9.3",
|
|
"typescript-eslint": "8.68.0",
|
|
"unocss": "^66.8.1",
|
|
"unplugin-auto-import": "^21.1.0",
|
|
"unplugin-icons": "^23.0.1",
|
|
"unplugin-vue-components": "^32.1.0",
|
|
"vite": "^7.3.6",
|
|
"vue-eslint-parser": "10.4.1",
|
|
"vue-tsc": "^3.3.11"
|
|
},
|
|
"pnpm": {
|
|
"overrides": {
|
|
"lodash": ">=4.18.1",
|
|
"lodash-es": ">=4.18.1",
|
|
"brace-expansion": ">=1.1.18",
|
|
"picomatch": ">=2.3.2",
|
|
"js-yaml": ">=4.3.1",
|
|
"table>ajv": ">=8.18.0"
|
|
}
|
|
},
|
|
"engines": {
|
|
"node": "^20.19.0 || >=22.12.0"
|
|
}
|
|
}
|