build(deps): Node 26.13.0 + Astro 7.4.4 升级(含 exif loader 句柄修复)

- 宿主 Node 22.22.3 → 用户级安装 26.13.0(~/.local/node),systemd
  unit PATH 前置,CI 构建链同步吃到新版本
- Astro 7.3.8 → 7.4.4(7.4 要求 Node ≥22.23.4,此前升级因 Node 版本
  不足被 CI 拒绝;本次先升 Node 再升框架)
- exif loader 修复:Node 22.23+/26 把"GC 时仍打开的 FileHandle"从警告
  升级为错误,exifr 接收文件路径时自开 fd 不显式关闭 → 全线 content/
  photos/*.jpg 触发构建失败。改为一律 readFile 成 Buffer 再喂 exifr
  (无 fd 参与)

验证: 全量构建 44 页 exit 0(node v26.13.0 + astro 7.4.4);E2E 37/37;
      content-lint 0/0/0;后处理链(字体子集/首页内联)复跑通过;
      unit PATH 实测已前置 node26

Spec: none (运行时与框架升级,全链验收)

Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-11-02 15:27:28 +08:00
1 parent 7c1462bde0
commit 227bc24797
3 files changed
+56 -66

No files matched your search

+48 -64
View File
@@ -27,11 +27,11 @@ importers:
specifier: ^5.3.1
version: 5.3.1
astro:
specifier: ^7.3.8
version: 7.3.8(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1)
specifier: ^7.4.4
version: 7.4.4(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1)
astro-pagefind:
specifier: ^2.0.1
version: 2.0.1(astro@7.3.8(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1))
version: 2.0.1(astro@7.4.4(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1))
exifr:
specifier: ^7.1.3
version: 7.1.3
@@ -125,21 +125,14 @@ packages:
resolution: {integrity: sha512-IvwYLB8t1M86rKO4oPdBi9GP4gzXcgrVlNgocjwos1jeeUuEIV8d9Crn1PvYD/5IKteWOxpIHomf7e8iYlkE+Q==}
engines: {node: '>=22.12.0'}
'@astrojs/internal-helpers@0.12.0':
resolution: {integrity: sha512-pKPuwCDtO0L7zgmt1JGd9X4Aes1+0SX3IEBSqBNPHsScYdPMlfmed3Y7DTbXyF7E+8ylnb563o/0OzGQPOFehw==}
'@astrojs/internal-helpers@0.13.0':
resolution: {integrity: sha512-20jxQqnSmpskcGyad7N5l6Xf1gz0UCa6lNde44bEBdaXGpncEYfAZJ142r2ZgzBaG4dUyzGmhqZWv1INU2eiHQ==}
'@astrojs/markdown-remark@7.3.5':
resolution: {integrity: sha512-Xk0gvOMEpBul2zj5jZXS5WH2Gng/6dW7c3WWLXgip+LZGpY64frwTvBChznMtpnNIqVgFXSsu44RYrISojcodQ==}
'@astrojs/markdown-satteri@0.4.3':
resolution: {integrity: sha512-PFbEHPnwUlLvpXd7RXrrKM+j12akF4bG+DSuNuoN+3eiwjOwp4HaPi+QQdbkBV7QEYXmzyKca50OJsmGxhNIUA==}
'@astrojs/prism@4.0.2':
resolution: {integrity: sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==}
engines: {node: '>=22.12.0'}
'@astrojs/markdown-satteri@0.4.6':
resolution: {integrity: sha512-6biKp2lEAYycF3jhv91br+Otyf4EgDFkF1oRL9ks0u/m/YRGmI7XkGQ2MgaM35DslT03f7NtozKtlqfBNkp6bw==}
'@astrojs/prism@4.1.2':
resolution: {integrity: sha512-jMrUEpFDarDO1KWPvVc9eSa8DSfwBlwEOHwX+8zvZQpiqXRGDxFnOXHsYqV6DP7w+0qIgTr98gS1GdQlm8ypWg==}
@@ -151,9 +144,9 @@ packages:
'@astrojs/sitemap@3.7.4':
resolution: {integrity: sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==}
'@astrojs/telemetry@3.3.3':
resolution: {integrity: sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==}
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
'@astrojs/telemetry@3.4.2':
resolution: {integrity: sha512-2JOMRUxJrBSfiVDfeKLv1wBmvSIx1Y6u2YEO8awZ9qSq3u/rNAiUyFdOYi8dHv91kHrmYEQX7pRDw0J4xyj3UA==}
engines: {node: '>=22.23.4'}
'@babel/helper-string-parser@7.29.7':
resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
@@ -707,9 +700,9 @@ packages:
peerDependencies:
astro: ^2.0.4 || ^3 || ^4 || ^5 || ^6 || ^7
astro@7.3.8:
resolution: {integrity: sha512-LHzDHSaV+YzZiR3EFndDYTLLeNeuMtP1qX1FLcCNUUHOCqTTIWPczy2UV3zpA5VqvJe5cWZolqM9Z8JFqR2i9w==}
engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'}
astro@7.4.4:
resolution: {integrity: sha512-e+BzhGCaIY/H1tV/BQPTbOPZVZ8wuu6+bbpc+3oSMH2UgoB1l9peSGASk6nswtYra9PO9OoMREhldKtQkZ5TVw==}
engines: {node: '>=22.23.4', npm: '>=9.6.5', pnpm: '>=7.1.0'}
hasBin: true
peerDependencies:
'@astrojs/markdown-remark': ^7.3.0
@@ -826,8 +819,9 @@ packages:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
devalue@5.9.4:
resolution: {integrity: sha512-sPAT4pztbu6586/hrhOnMKS17IJrvg12mXiSPSS3W5qDeN2RGgvZ0diZCm31dBbnevfVmujNO3IM2wrS4Y2Rhg==}
devalue@6.0.3:
resolution: {integrity: sha512-3woMEITftG1wKeO/4d/QXH1DVKctTSZg3jNGPpjp9hNr5Hos8MCFF5McTML5ZtgKDObm2R591B0spRp2IVernA==}
engines: {node: '>=18'}
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
@@ -929,14 +923,13 @@ packages:
picomatch:
optional: true
find-proc@0.2.0:
resolution: {integrity: sha512-a6h2nTrgB3g5Wrn4au9Ux4kMk7IJtyF6oA8uGn+mk3weLZssUtc1cp6meHIzzuW2o1srrBAxzkmXLbqjRkgB6w==}
engines: {node: ^20.19.0 || >=22.12.0}
flattie@1.1.1:
resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==}
engines: {node: '>=8'}
fnv1a-64@0.1.2:
resolution: {integrity: sha512-mJbcILTPybAR1jdOwt/lVv8N2cffeJFFP+gVbSAwLEx1ujXH27RpPd8Rokec/KX9c76UYIB6Co+H4lQzxPnJfA==}
fontace@0.4.1:
resolution: {integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==}
@@ -1338,9 +1331,6 @@ packages:
ofetch@1.5.1:
resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
ohash@2.0.12:
resolution: {integrity: sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==}
oniguruma-parser@0.12.2:
resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==}
@@ -1552,6 +1542,9 @@ packages:
space-separated-tokens@2.0.2:
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
std-env@4.3.0:
resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==}
stringify-entities@4.0.4:
resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
@@ -1587,6 +1580,9 @@ packages:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
engines: {node: '>=12.0.0'}
tinyps@0.5.1:
resolution: {integrity: sha512-B6Ykif5HflC3AdDkS4Zst/2muYVfeXoVMy+KorqH80s/1x4vunIORpNySH681X7fjj+dFM9MDKD6/Hsccjb87Q==}
totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
@@ -1622,8 +1618,8 @@ packages:
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
unifont@0.7.5:
resolution: {integrity: sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==}
unifont@1.0.3:
resolution: {integrity: sha512-XGnEwj5sWdCbiBX01mWLSBncS0yMRjnLygau3IfdOlfjMacNIQvTGW4VH7pWBq+gGWArfSef/CensMLjMmIr/A==}
unist-util-is@6.0.1:
resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
@@ -1863,17 +1859,6 @@ snapshots:
dependencies:
'@astrojs/compiler-binding': 0.5.2
'@astrojs/internal-helpers@0.12.0':
dependencies:
'@types/hast': 3.0.5
'@types/mdast': 4.0.4
picomatch: 4.0.7
retext-smartypants: 6.2.0
shiki: 4.5.0
smol-toml: 1.9.1
unified: 11.0.5
yaml: 2.9.1
'@astrojs/internal-helpers@0.13.0':
dependencies:
'@types/hast': 3.0.5
@@ -1912,17 +1897,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@astrojs/markdown-satteri@0.4.3':
'@astrojs/markdown-satteri@0.4.6':
dependencies:
'@astrojs/internal-helpers': 0.12.0
'@astrojs/prism': 4.0.2
'@astrojs/internal-helpers': 0.13.0
'@astrojs/prism': 4.1.2
github-slugger: 2.0.0
satteri: 0.10.5
'@astrojs/prism@4.0.2':
dependencies:
prismjs: 1.30.0
'@astrojs/prism@4.1.2':
dependencies:
prismjs: 1.30.0
@@ -1938,7 +1919,7 @@ snapshots:
sitemap: 9.0.1
zod: 4.6.7
'@astrojs/telemetry@3.3.3':
'@astrojs/telemetry@3.4.2':
dependencies:
ci-info: 4.4.0
dset: 3.1.4
@@ -2392,19 +2373,19 @@ snapshots:
astring@1.9.0: {}
astro-pagefind@2.0.1(astro@7.3.8(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1)):
astro-pagefind@2.0.1(astro@7.4.4(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1)):
dependencies:
'@pagefind/component-ui': 1.5.2
astro: 7.3.8(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1)
astro: 7.4.4(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1)
pagefind: 1.5.2
sirv: 3.0.2
astro@7.3.8(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1):
astro@7.4.4(@astrojs/markdown-remark@7.3.5)(@types/node@24.19.2)(yaml@2.9.1):
dependencies:
'@astrojs/compiler-rs': 0.5.2
'@astrojs/internal-helpers': 0.12.0
'@astrojs/markdown-satteri': 0.4.3
'@astrojs/telemetry': 3.3.3
'@astrojs/internal-helpers': 0.13.0
'@astrojs/markdown-satteri': 0.4.6
'@astrojs/telemetry': 3.4.2
'@capsizecss/unpack': 4.0.1
'@clack/prompts': 1.8.1
'@oslojs/encoding': 1.1.0
@@ -2415,11 +2396,10 @@ snapshots:
clsx: 2.1.1
common-ancestor-path: 2.0.0
cookie: 2.0.1
devalue: 5.9.4
devalue: 6.0.3
diff: 9.0.0
dset: 3.1.4
es-module-lexer: 3.0.4
find-proc: 0.2.0
flattie: 1.1.1
fontace: 0.4.1
get-tsconfig: 5.0.0-beta.6
@@ -2444,8 +2424,9 @@ snapshots:
tinyclip: 1.0.3
tinyexec: 1.3.1
tinyglobby: 0.2.17
tinyps: 0.5.1
ultrahtml: 1.7.0
unifont: 0.7.5
unifont: 1.0.3
unstorage: 1.17.6
verkit: 0.5.0
vite: 8.3.5(@types/node@24.19.2)(yaml@2.9.1)
@@ -2575,7 +2556,7 @@ snapshots:
detect-libc@2.1.2: {}
devalue@5.9.4: {}
devalue@6.0.3: {}
devlop@1.1.0:
dependencies:
@@ -2692,10 +2673,10 @@ snapshots:
optionalDependencies:
picomatch: 4.0.7
find-proc@0.2.0: {}
flattie@1.1.1: {}
fnv1a-64@0.1.2: {}
fontace@0.4.1:
dependencies:
fontkitten: 1.0.3
@@ -3420,8 +3401,6 @@ snapshots:
node-fetch-native: 1.6.7
ufo: 1.6.4
ohash@2.0.12: {}
oniguruma-parser@0.12.2: {}
oniguruma-to-es@4.3.6:
@@ -3753,6 +3732,8 @@ snapshots:
space-separated-tokens@2.0.2: {}
std-env@4.3.0: {}
stringify-entities@4.0.4:
dependencies:
character-entities-html4: 2.1.0
@@ -3795,6 +3776,8 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.7)
picomatch: 4.0.7
tinyps@0.5.1: {}
totalist@3.0.1: {}
trim-lines@3.0.1: {}
@@ -3827,10 +3810,11 @@ snapshots:
trough: 2.2.0
vfile: 6.0.3
unifont@0.7.5:
unifont@1.0.3:
dependencies:
css-tree: 3.2.1
ohash: 2.0.12
fnv1a-64: 0.1.2
std-env: 4.3.0
undici: 8.12.3
unist-util-is@6.0.1: