{"id":410,"date":"2026-08-04T00:03:40","date_gmt":"2026-08-04T00:03:40","guid":{"rendered":"https:\/\/gilnas.synology.me\/wordpress\/410\/"},"modified":"2026-08-04T00:03:40","modified_gmt":"2026-08-04T00:03:40","slug":"unhead-3-3%c2%b7vite-css-%ec%84%b1%eb%8a%a5%c2%b7nuxt-%ea%b0%9c%eb%b0%9c-%ed%9d%90%eb%a6%84-%ec%a0%90%ea%b2%80-three-day-frontend-operations-checkpoint","status":"publish","type":"post","link":"https:\/\/gilnas.synology.me\/wordpress\/410\/","title":{"rendered":"Unhead 3.3\u00b7Vite CSS \uc131\ub2a5\u00b7Nuxt \uac1c\ubc1c \ud750\ub984 \uc810\uac80 | Three-Day Frontend Operations Checkpoint"},"content":{"rendered":"<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/gilnas.synology.me\/wordpress\/wp-content\/uploads\/2026\/08\/nuxt-trend-report.png\" alt=\"Unhead 3.3\u00b7Vite CSS \uc131\ub2a5\u00b7Nuxt \uac1c\ubc1c \ud750\ub984 \uc810\uac80 | Three-Day Frontend Operations Checkpoint\" \/><\/figure>\n<p><strong>\uc694\uc57d:<\/strong> 2026\ub144 8\uc6d4 1~4\uc77c KST \uae30\uc900 Nuxt\/Vue\/Vite \uc0dd\ud0dc\uacc4\uc758 \ucd5c\uadfc 72\uc2dc\uac04\uc740 \ub300\ud615 \ud504\ub808\uc784\uc6cc\ud06c \uc815\uc2dd \ub9b4\ub9ac\uc988\ubcf4\ub2e4 <strong>\ud5e4\ub4dc \uba54\ud0c0\ub370\uc774\ud130 \ube4c\ub4dc \uc758\uc874\uc131, CSS \uccad\ud06c \ucc98\ub9ac, \uac1c\ubc1c \uc9c4\ub2e8, \ud14c\uc2a4\ud2b8 \uc885\ub8cc \ub3d9\uc791<\/strong>\uc744 \ub2e4\ub4ec\ub294 \ud750\ub984\uc774 \ub450\ub4dc\ub7ec\uc84c\uc2b5\ub2c8\ub2e4. Nuxt \ud504\ub860\ud2b8\uc5d4\ub4dc \ud300\uc740 \uc774\ubc88 \uc8fc \ubc30\ud3ec \uc804\uc5d0 Unhead \ubc88\ub4e4\ub7ec\uc758 <code>oxc-parser<\/code> \uc758\uc874\uc131 \uc5ec\ubd80\uc640 \ub77c\uc774\ube0c\ub7ec\ub9ac \ube4c\ub4dc\u00b7SSR \ud68c\uadc0 \ud14c\uc2a4\ud2b8\ub97c \ud568\uaed8 \uc810\uac80\ud558\ub294 \ud3b8\uc774 \uc548\uc804\ud569\ub2c8\ub2e4.<\/p>\n<h2>3\uc77c \uacb0\ub860<\/h2>\n<p><strong>\ud575\uc2ec \ub2f5\ubcc0:<\/strong> \uc9c0\uae08 \uc989\uc2dc Nuxt \uc804\uccb4\ub97c \uad50\uccb4\ud560 \uc815\uc2dd \ucf54\uc5b4 \ub9b4\ub9ac\uc988\ub294 \ud655\uc778\ub418\uc9c0 \uc54a\uc558\uc9c0\ub9cc, <a href=\"https:\/\/github.com\/unjs\/unhead\/releases\/tag\/v3.3.0\" target=\"_blank\" rel=\"noopener\">Unhead 3.3.0<\/a>\uc740 Vite 6\/7\u00b7webpack\u00b7Rspack\u00b7Rollup \uae30\ubc18\uc5d0\uc11c Unhead transform\uc744 \uc4f0\ub294 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uba85\uc2dc\uc801 \ube4c\ub4dc \uc758\uc874\uc131\uc744 \uc694\uad6c\ud558\ub294 <strong>\uc815\uc2dd breaking change<\/strong>\uc785\ub2c8\ub2e4. \ubc18\uba74 Vite\u00b7Nuxt\u00b7Vitest\uc758 8\uc6d4 2~3\uc77c \ubcc0\uacbd\uc740 \ubaa8\ub450 <strong>main \ube0c\ub79c\uce58\uc758 \ubbf8\ucd9c\uc2dc \uc791\uc5c5<\/strong>\uc774\ubbc0\ub85c \uc6b4\uc601 \ubc18\uc601 \ub300\uc0c1\uc774 \uc544\ub2c8\ub77c \ub2e4\uc74c \uc815\uc2dd \ub9b4\ub9ac\uc988\uc758 \ud68c\uadc0 \ud14c\uc2a4\ud2b8 \ud6c4\ubcf4\ub85c \ucde8\uae09\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>\uc9c8\ubb38:<\/strong> Nuxt \uc571\uc740 \ubc14\ub85c \ubb34\uc5c7\uc744 \ud655\uc778\ud574\uc57c \ud558\ub098\uc694? <strong>\ub2f5:<\/strong> <code>@unhead\/bundler<\/code>\uc640 transform\uc744 \uc0ac\uc6a9\ud558\uba74\uc11c Rolldown\uc774 \uc544\ub2cc \ube4c\ub4dc \uccb4\uc778\uc744 \uc4f4\ub2e4\uba74 CI\uc5d0\uc11c <code>pnpm add -D oxc-parser<\/code> \uc801\uc6a9 \uc804\ud6c4\uc758 production build\ub97c \ube44\uad50\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>\uc9c8\ubb38:<\/strong> Vite main\uc758 CSS \uc131\ub2a5 \ubcc0\uacbd\uc744 \uae30\ub300\ud574\ub3c4 \ub418\ub098\uc694? <strong>\ub2f5:<\/strong> \uc544\uc9c1 \ubc30\ud3ec \uac00\ub2a5\ud55c \ub9b4\ub9ac\uc988\uac00 \uc544\ub2d9\ub2c8\ub2e4. CSS \uccad\ud06c\uac00 \ub9ce\uc740 \uc571\uc758 \ube4c\ub4dc \uc2dc\uac04\u00b7\uc0b0\ucd9c\ubb3c\u00b7lazy route \ub85c\ub529\uc744 \uae30\uc900\uc120\uc73c\ub85c \ub0a8\uaca8 \ub450\ub294 \uac83\uc774 \uba3c\uc800\uc785\ub2c8\ub2e4.<\/li>\n<li><strong>\uc9c8\ubb38:<\/strong> Nuxt \uacbd\uace0\uac00 \uc904\uc5b4\ub4e0\ub2e4\ub294 \ubcc0\uacbd\uc740 \uc65c \uc911\uc694\ud55c\uac00\uc694? <strong>\ub2f5:<\/strong> \uc2ac\ub86f\uc744 \uac00\uc9c4 \uc911\ucca9 \ud398\uc774\uc9c0\uc758 \uc815\uc0c1 \ub124\ube44\uac8c\uc774\uc158\uacfc \uc2e4\uc81c <code>&lt;NuxtPage&gt;<\/code> \ub204\ub77d\uc744 \uad6c\ubcc4\ud558\ub294 \uac1c\ubc1c \uc9c4\ub2e8 \ud488\uc9c8\uacfc \uc5f0\uacb0\ub418\uc9c0\ub9cc, \ubbf8\ucd9c\uc2dc\uc774\ubbc0\ub85c \ud604\uc7ac\ub294 \ub85c\uceec \uacbd\uace0\ub97c \ubb34\uc2dc\ud558\uae30\ubcf4\ub2e4 \uc7ac\ud604 \ud14c\uc2a4\ud2b8\ub97c \ubcf4\uc874\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h2>72\uc2dc\uac04 \ub3d9\uc548 \ud655\uc778\ub41c \ud575\uc2ec \uc774\uc288 6\uac1c<\/h2>\n<h3>1. Unhead 3.3.0: \ubc88\ub4e4\ub7ec \ubcc0\ud658\uc758 \ud30c\uc11c\uac00 \uc120\ud0dd\uc801 peer dependency\ub85c \uc774\ub3d9<\/h3>\n<p><strong>\uc0ac\uc2e4:<\/strong> 8\uc6d4 3\uc77c \uacf5\uac1c\ub41c <a href=\"https:\/\/github.com\/unjs\/unhead\/releases\/tag\/v3.3.0\" target=\"_blank\" rel=\"noopener\">Unhead v3.3.0 \ub9b4\ub9ac\uc988<\/a>\ub294 Vite 6\/7, webpack, Rspack, Rollup \ub4f1 Rolldown \uc5c6\uc774 Unhead Bundler transform\uc744 \uc218\ud589\ud560 \ub54c <code>oxc-parser<\/code>\ub97c <code>@unhead\/bundler<\/code>\uc5d0\uc11c \uc790\ub3d9\uc73c\ub85c \ubc1b\uc9c0 \uc54a\ub294\ub2e4\uace0 \uba85\uc2dc\ud569\ub2c8\ub2e4. \ud574\ub2f9 transform\uc744 \uc4f0\ub294 \ube4c\ub4dc\ub294 \uac1c\ubc1c \uc758\uc874\uc131\uc73c\ub85c <code>oxc-parser<\/code>\ub97c \uc9c1\uc811 \uc124\uce58\ud574\uc57c \ud558\uba70, runtime-only \ud504\ub85c\uc81d\ud2b8 \ub610\ub294 Rolldown \uc124\uce58 \ube4c\ub4dc\ub294 \ubcc0\uacbd\uc774 \ud544\uc694 \uc5c6\ub2e4\uace0 \ub9b4\ub9ac\uc988 \ub178\ud2b8\uac00 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> Nuxt\uc758 head\/SEO \uba54\ud0c0\ub370\uc774\ud130 \uad6c\uc131\uc774 \uc815\uc0c1\uc774\uc5b4\ub3c4, lockfile \uac31\uc2e0 \ub4a4 CI\uc5d0\uc11c\ub9cc parser resolution \uc2e4\ud328\uac00 \ub0a0 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \ub2e8\uc21c \ubc84\uc804 \ubc94\uc704 \ud655\uc778\uc774 \uc544\ub2c8\ub77c \uc2e4\uc81c production build\uc640 SSR head \ucd9c\ub825\uae4c\uc9c0 \uac80\uc99d\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ubc88 \ub9b4\ub9ac\uc988\uc5d0\ub294 Vite target\uc758 static inline script transpile, declarative JSON script minify, Open Graph\u00b7Twitter \uba54\ud0c0\ub370\uc774\ud130 \uc911\ubcf5 \uc81c\uac70 \ubc0f Schema.org \ubcf4\uc815\ub3c4 \ud3ec\ud568\ub418\uc5b4 \uc788\uc5b4 SEO \uc0b0\ucd9c\ubb3c snapshot\uc744 \uac19\uc774 \ube44\uad50\ud560 \uac00\uce58\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>2. Vite main: \uc21c\uc218 CSS \uccad\ud06c \ud0d0\uc0c9\uacfc \ub77c\uc774\ube0c\ub7ec\ub9ac \uc124\uc815 \ubd88\ubcc0\uc131 \ubcf4\uc815<\/h3>\n<p><strong>\uc0ac\uc2e4(\ubbf8\ucd9c\uc2dc\/main):<\/strong> Vite\uc758 8\uc6d4 3\uc77c \ucee4\ubc0b <a href=\"https:\/\/github.com\/vitejs\/vite\/commit\/1331b0b438b1e7193effb7d2341660bccb9c3155\" target=\"_blank\" rel=\"noopener\">#23114<\/a>\ub294 \uc21c\uc218 CSS \uccad\ud06c \uc774\ub984 \uc870\ud68c\uc5d0 <code>Set<\/code>\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ubc14\uafe8\uace0, \uac19\uc740 \ub0a0\uc758 <a href=\"https:\/\/github.com\/vitejs\/vite\/commit\/b4bf59686a7ac238929e91a6e1708c739b843a2f\" target=\"_blank\" rel=\"noopener\">#23135<\/a>\ub294 \ucd5c\uc0c1\uc704 <code>input<\/code>\uc5d0\uc11c lib entry\ub97c \ud574\uc11d\ud560 \ub54c \uc0ac\uc6a9\uc790 \uc81c\uacf5 <code>lib<\/code> \uc635\uc158 \uac1d\uccb4\ub97c \uc9c1\uc811 \ubcc0\uacbd\ud558\uc9c0 \uc54a\ub3c4\ub85d \uc218\uc815\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> \uccab \ubcc0\uacbd\uc740 CSS-only chunk\uac00 \ub9ce\uc740 \uc571\uc5d0\uc11c \uccad\ud06c \ud3ec\ud568 \uc5ec\ubd80\ub97c \ubc18\ubcf5 \ud655\uc778\ud558\ub294 \uacbd\ub85c\uc758 \uc790\ub8cc\uad6c\uc870\ub97c \uac1c\uc120\ud558\ub294 \uac83\uc774\uba70, \ub450 \ubc88\uc9f8\ub294 \uacf5\uc720 Vite \uc124\uc815\uc774\ub098 \ud50c\ub7ec\uadf8\uc778\uc774 \ub3d9\uc77c config \uac1d\uccb4\ub97c \uc7ac\uc0ac\uc6a9\ud560 \ub54c\uc758 \uc608\uce21 \uac00\ub2a5\uc131\uc744 \ub192\uc785\ub2c8\ub2e4. \ub458 \ub2e4 \uc544\uc9c1 \ub9b4\ub9ac\uc988 \ub178\ud2b8\uac00 \uc544\ub2cc main \ubcc0\uacbd\uc785\ub2c8\ub2e4. \ud328\ud0a4\uc9c0 \ubc84\uc804\uc744 \uac15\uc81c\ub85c \uc62c\ub9ac\uae30\ubcf4\ub2e4, \ub77c\uc774\ube0c\ub7ec\ub9ac \ubaa8\ub4dc\u00b7code splitting\u00b7\ub3d9\uc801 import \uc870\ud569\uc744 \uac16\ucd98 \ud504\ub85c\uc81d\ud2b8\ub294 \ub2e4\uc74c Vite \uc815\uc2dd\ud310 \ud6c4\ubcf4\uc5d0\uc11c build manifest\uc640 CSS \uc21c\uc11c\ub97c \ube44\uad50\ud560 \ud14c\uc2a4\ud2b8\ub97c \uc900\ube44\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h3>3. Nuxt main: \uc911\ucca9 \ud398\uc774\uc9c0 \uacbd\uace0\ub97c \ub80c\ub354\ub41c route record \uae30\uc900\uc73c\ub85c \uc815\uad50\ud654<\/h3>\n<p><strong>\uc0ac\uc2e4(\ubbf8\ucd9c\uc2dc\/main):<\/strong> Nuxt\uc758 8\uc6d4 2\uc77c <a href=\"https:\/\/github.com\/nuxt\/nuxt\/commit\/7d873a55abe33aec8b9632ea99888faab2e81dcf\" target=\"_blank\" rel=\"noopener\">\ucee4\ubc0b #35948<\/a>\uc740 \uc2ac\ub86f\uc774 \uc788\ub294 \ud398\uc774\uc9c0\uc5d0\uc11c sibling child route \uc0ac\uc774\ub97c \uc774\ub3d9\ud560 \ub54c <code>&lt;NuxtPage&gt;<\/code>\uac00 \uc5c6\ub2e4\ub294 \uacbd\uace0\ub97c \ub0b4\uc9c0 \uc54a\ub3c4\ub85d \ubcc0\uacbd\ud569\ub2c8\ub2e4. \ud328\uce58\ub294 \uac1c\ubc1c \ud658\uacbd\uc5d0\uc11c route record\uc758 \ub80c\ub354 \ud69f\uc218\ub97c \ucd94\uc801\ud558\uace0, sibling navigation\uc744 \ud3ec\ud568\ud55c \ud68c\uadc0 \ud14c\uc2a4\ud2b8\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> \uc774\ub294 \uae30\ub2a5 \ub3d9\uc791 \uc790\uccb4\ubcf4\ub2e4 \uac1c\ubc1c \uacbd\uace0\uc758 \uc2e0\ub8b0\ub3c4\ub97c \ub192\uc774\ub294 \ubcc0\ud654\uc785\ub2c8\ub2e4. \ud604\uc7ac Nuxt \uc815\uc2dd \ubc84\uc804\uc5d0\uc11c \ube44\uc2b7\ud55c \uacbd\uace0\ub97c \ub9cc\ub0ac\ub2e4\uba74 \ubb34\uc870\uac74 \uc5b5\uc81c\ud558\uc9c0 \ub9d0\uace0, \uc2e4\uc81c\ub85c \uc911\ucca9 child route\uac00 \ub80c\ub354\ub418\ub294\uc9c0 E2E \ud14c\uc2a4\ud2b8\ub85c \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774 \ucee4\ubc0b\uc740 \uc544\uc9c1 main\uc5d0 \uc788\uc73c\ubbc0\ub85c \uc6b4\uc601 \ud574\uacb0\ucc45\uc73c\ub85c \uc778\uc6a9\ud558\uac70\ub098 \ubc30\ud3ec \ubc84\uc804\uc73c\ub85c \uac04\uc8fc\ud574\uc11c\ub294 \uc548 \ub429\ub2c8\ub2e4.<\/p>\n<h3>4. Nuxt main\uc758 Vite\u00b7Rolldown \uc758\uc874\uc131 \uac31\uc2e0: \ucc28\uae30 \ud638\ud658\uc131 \uc2e0\ud638\uc77c \ubfd0<\/h3>\n<p><strong>\uc0ac\uc2e4(\ubbf8\ucd9c\uc2dc\/main):<\/strong> 8\uc6d4 3\uc77c Nuxt main\uc5d0\ub294 <a href=\"https:\/\/github.com\/nuxt\/nuxt\/commit\/192612c73cb2f91e9b66fe84ff562d6e4ab152c0\" target=\"_blank\" rel=\"noopener\">Vite\uc640 Rolldown \uc758\uc874\uc131\uc744 \uac31\uc2e0\ud55c \ucee4\ubc0b<\/a>\uc774 \uae30\ub85d\ub410\uc2b5\ub2c8\ub2e4. \ubcc0\uacbd \ud30c\uc77c\uc5d0\ub294 \uc624\ub958\u00b7\ub85c\ub529 \ud654\uba74\uc774 \uc0ac\uc6a9\ud558\ub294 modulepreload polyfill \uc0b0\ucd9c\ubb3c\ub3c4 \ud3ec\ud568\ub429\ub2c8\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> Nuxt\uac00 \ube4c\ub4dc \ub3c4\uad6c\uc758 \ucc28\uae30 \ubcc0\uacbd\uc744 \ud761\uc218\ud558\ub294 \uacfc\uc815\uc774\ub77c\ub294 \uc2e0\ud638\ub85c\ub294 \ubcfc \uc218 \uc788\uc9c0\ub9cc, \ucee4\ubc0b \ud558\ub098\ub85c \ud638\ud658\uc131\uc744 \ubcf4\uc7a5\ud560 \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4. \ud2b9\ud788 SSR \uc624\ub958 \ud398\uc774\uc9c0, legacy \ube0c\ub77c\uc6b0\uc800, preload \ub3d9\uc791\uc740 \uc77c\ubc18 \ud398\uc774\uc9c0\ubcf4\ub2e4 \ub204\ub77d\ub418\uae30 \uc26c\uc6b0\ubbc0\ub85c preview \ud658\uacbd\uc5d0\uc11c 404\/500 \ud654\uba74\uacfc \uccab \ud654\uba74 network waterfall\uc744 \ubcc4\ub3c4 \ud655\uc778\ud558\ub294 \uac83\uc774 \ud569\ub9ac\uc801\uc785\ub2c8\ub2e4.<\/p>\n<h3>5. Vitest main: blocked globalSetup\uc5d0\uc11c\ub3c4 Ctrl+C \uc885\ub8cc \ucc98\ub9ac<\/h3>\n<p><strong>\uc0ac\uc2e4(\ubbf8\ucd9c\uc2dc\/main):<\/strong> Vitest\ub294 8\uc6d4 3\uc77c <a href=\"https:\/\/github.com\/vitest-dev\/vitest\/commit\/d568f8ce3739b532d5bf2c1ee1e45e8a8a473d09\" target=\"_blank\" rel=\"noopener\">CLI\uac00 blocked code\ub97c \uc2e4\ud589 \uc911\uc778 globalSetup\uc5d0\uc11c\ub3c4 Ctrl+C\ub85c \uc885\ub8cc\ud558\ub3c4\ub85d \ud558\ub294 \uc218\uc815<\/a>\uc744 main\uc5d0 \ubc18\uc601\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> Nuxt \ubaa8\ub4c8\uc774\ub098 E2E \uc900\ube44 \ub2e8\uacc4\uc5d0\uc11c \uc678\ubd80 \uc11c\ube44\uc2a4\ub97c \ub744\uc6b0\ub294 \ud14c\uc2a4\ud2b8\ub294 \ucde8\uc18c\uac00 \uc548 \ub418\uba74 CI \uc6cc\ucee4\uc640 \ub85c\uceec \uac1c\ubc1c \uc2dc\uac04\uc744 \ub3d9\uc2dc\uc5d0 \uc783\uc2b5\ub2c8\ub2e4. \uc774 \uc5ed\uc2dc \ubbf8\ucd9c\uc2dc\uc774\ubbc0\ub85c \ub2f9\uc7a5 \ubc84\uadf8\uac00 \ud574\uacb0\ub410\ub2e4\uace0 \uac00\uc815\ud558\uc9c0 \ub9d0\uace0, \ud604\uc7ac pipeline\uc5d0\ub294 timeout\u00b7cleanup\u00b7AbortSignal \ucc98\ub9ac\ub97c \uba85\uc2dc\ud574 \ub450\ub294 \ud3b8\uc774 \uc548\uc804\ud569\ub2c8\ub2e4.<\/p>\n<h3>6. \uc9c0\ub09c \uc815\uc2dd\ud310\uacfc\uc758 \uacbd\uacc4: \ub9b4\ub9ac\uc988\uc640 main\uc744 \uc11e\uc9c0 \uc54a\ub294\ub2e4<\/h3>\n<p><strong>\uc0ac\uc2e4:<\/strong> npm \ub808\uc9c0\uc2a4\ud2b8\ub9ac\uc640 GitHub \ub9b4\ub9ac\uc988\ub97c \uad50\ucc28 \ud655\uc778\ud558\uba74 \uc774\ubc88 72\uc2dc\uac04\uc5d0 \uc815\uc2dd \ubc30\ud3ec\ub41c \ud575\uc2ec \ud328\ud0a4\uc9c0 \ubcc0\ud654\ub294 Unhead 3.3.0\uc785\ub2c8\ub2e4. Nuxt \ucd5c\uc2e0 \uc815\uc2dd\uc740 7\uc6d4 27\uc77c\uc758 \ubcf4\uc548 \ub9b4\ub9ac\uc988 <a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.5.1\" target=\"_blank\" rel=\"noopener\">v4.5.1<\/a>, Vite \ucd5c\uc2e0 \uc815\uc2dd\uc740 7\uc6d4 30\uc77c\uc758 <a href=\"https:\/\/github.com\/vitejs\/vite\/releases\/tag\/v8.2.0\" target=\"_blank\" rel=\"noopener\">v8.2.0<\/a>\uc774\uba70, \uc774 \uae00\uc758 8\uc6d4 \ucd08 Nuxt\/Vite\/Vitest \ud56d\ubaa9\uc740 \uc0c8 \ub9b4\ub9ac\uc988\uac00 \uc544\ub2d9\ub2c8\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> changelog \uc54c\ub9bc\uc744 \uc6b4\uc601 \ubcc0\uacbd\uc73c\ub85c \uc9c1\uacb0\ud558\uc9c0 \uc54a\ub294 \uac83\uc774 \uc774\ubc88 3\uc77c\uc758 \ud575\uc2ec \uc6b4\uc601 \uc6d0\uce59\uc785\ub2c8\ub2e4. \uc815\uc2dd \ud0dc\uadf8\uc758 migration \uc548\ub0b4\ub294 \ubc30\ud3ec \uacc4\ud68d\uc5d0 \ub123\uace0, main \ucee4\ubc0b\uc740 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\u00b7watchlist\ub85c\ub9cc \uad00\ub9ac\ud558\uba74 \uc5c5\uadf8\ub808\uc774\ub4dc \uc704\ud5d8\uc744 \ub0ae\ucd9c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ud504\ub860\ud2b8\uc5d4\ub4dc \uac1c\ubc1c\uc790 \uc801\uc6a9 \uccb4\ud06c\ub9ac\uc2a4\ud2b8<\/h2>\n<ul>\n<li><strong>Unhead:<\/strong> <code>pnpm why @unhead\/bundler oxc-parser<\/code>\ub85c \uc758\uc874\uc131 \uacbd\ub85c\ub97c \ud655\uc778\ud558\uace0, transform \uc0ac\uc6a9 + non-Rolldown \ube4c\ub4dc\ub77c\uba74 <code>pnpm add -D oxc-parser<\/code>\ub97c \ubcc4\ub3c4 PR\ub85c \ucd94\uac00\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>\ube4c\ub4dc \uac80\uc99d:<\/strong> clean install \ud6c4 production build\ub97c \uc2e4\ud589\ud558\uace0, title\u00b7canonical\u00b7Open Graph\u00b7JSON-LD\uc640 inline script \uc0b0\ucd9c\ubb3c\uc744 HTML snapshot\uc73c\ub85c \ube44\uad50\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>Vite:<\/strong> \ub77c\uc774\ube0c\ub7ec\ub9ac \ubaa8\ub4dc\uc640 CSS code splitting\uc744 \uc4f0\ub294 \uc800\uc7a5\uc18c\uc5d0\uc11c manifest, CSS chunk \ubaa9\ub85d, lazy route\uc758 \uc2a4\ud0c0\uc77c \uc801\uc6a9\uc744 smoke test\ub85c \ub0a8\uae41\ub2c8\ub2e4. main \ucee4\ubc0b\uc744 \uc9c1\uc811 pin\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>Nuxt:<\/strong> \uc911\ucca9 pages \uad6c\uc870\uc5d0\uc11c sibling child navigation, named slot, <code>&lt;NuxtPage&gt;<\/code> \uc720\ubb34\ub97c E2E\ub85c \uac80\uc0ac\ud558\uace0, console warning\uc744 CI \uc2e4\ud328 \uae30\uc900\uc73c\ub85c \uc4f0\ub294 \uacbd\uc6b0 \uc624\ud0d0\uacfc \uc2e4\uc81c \ub204\ub77d\uc744 \ubd84\ub9ac\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>\uc6b4\uc601:<\/strong> preview \ud658\uacbd\uc5d0\uc11c 404\u00b7500\u00b7loading \ud654\uba74, modulepreload, SSR head\ub97c \ud655\uc778\ud558\uace0 \uc2e4\uc81c \uc801\uc6a9\uc740 \uc815\uc2dd Nuxt\/Vite \ub9b4\ub9ac\uc988 \ub178\ud2b8\uc640 lockfile diff\uac00 \ud568\uaed8 \uac80\ud1a0\ub41c \ub4a4 \uc9c4\ud589\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>\ud14c\uc2a4\ud2b8:<\/strong> globalSetup\uc774 \uc678\ubd80 \ub9ac\uc18c\uc2a4\ub97c \uc0ac\uc6a9\ud560 \uacbd\uc6b0 \ud0c0\uc784\uc544\uc6c3, \uc815\ub9ac \ud6c5, \uc778\ud130\ub7fd\ud2b8 \ucc98\ub9ac \ubc29\uc2dd\uc744 \ubb38\uc11c\ud654\ud569\ub2c8\ub2e4. \ud5a5\ud6c4 Vitest \ub9b4\ub9ac\uc988\uc5d0 \ud574\ub2f9 \uc218\uc815\uc774 \ub4e4\uc5b4\uc654\ub294\uc9c0 \ud655\uc778\ud55c \ud6c4\uc5d0\ub9cc \uae30\ub300 \ub3d9\uc791\uc744 \uac31\uc2e0\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h2>FAQ: \uc9c0\uae08 \ubc30\ud3ec\ud574\ub3c4 \ub418\ub294\uac00?<\/h2>\n<h3>Unhead 3.3.0\uc740 \ubc14\ub85c \uc62c\ub824\ub3c4 \ub418\ub098\uc694?<\/h3>\n<p>\uc815\uc2dd \ub9b4\ub9ac\uc988\uc774\uc9c0\ub9cc breaking change\uac00 \uc788\uc73c\ubbc0\ub85c, Unhead transform\uacfc non-Rolldown \ube4c\ub4dc\ub97c \uc4f0\ub294\uc9c0 \uba3c\uc800 \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4. \ud574\ub2f9 \uc870\uac74\uc774\uba74 <code>oxc-parser<\/code>\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \ucd94\uac00\ud558\uace0 clean-install CI\uc640 SSR \uba54\ud0c0\ub370\uc774\ud130 \uac80\uc99d\uc744 \ud1b5\uacfc\uc2dc\ud0a8 \ub4a4 \ubc18\uc601\ud569\ub2c8\ub2e4.<\/p>\n<h3>Vite\u00b7Nuxt main \ucee4\ubc0b\uc744 patch\ub85c \ubc1b\uc544\ub3c4 \ub418\ub098\uc694?<\/h3>\n<p>\uad8c\uc7a5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ubc88\uc5d0 \ud655\uc778\ud55c \ubcc0\uacbd\uc740 upstream main\uc758 \uac1c\ubc1c \uc911 \uc791\uc5c5\uc785\ub2c8\ub2e4. \uc774 \ub9ac\ud3ec\ud2b8\uc5d0\uc11c\ub294 \uad00\ucc30 \uac00\ub2a5\ud55c \uc0ac\uc2e4\uacfc \uc6b4\uc601 \ucd94\ub860\uc744 \ubd84\ub9ac\ud588\uc73c\uba70, \ubc30\ud3ec \ud310\ub2e8\uc740 \ud6c4\uc18d \uc815\uc2dd \ud0dc\uadf8\uc640 \uc644\uc804\ud55c release note\ub97c \uae30\uc900\uc73c\ub85c \ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h3>SEO \ub2f4\ub2f9\uc790\uac00 \uac00\uc7a5 \uba3c\uc800 \ubcfc \uacb0\uacfc\ubb3c\uc740 \ubb34\uc5c7\uc778\uac00\uc694?<\/h3>\n<p>production SSR HTML\uc758 title, canonical, robots, Open Graph\/Twitter \uba54\ud0c0\ub370\uc774\ud130, JSON-LD\uc640 inline script\uc785\ub2c8\ub2e4. Unhead 3.3.0\uc5d0\ub294 \uba54\ud0c0\ub370\uc774\ud130\u00b7Schema.org\u00b7script \uad00\ub828 \ubcc0\uacbd\uc774 \ud568\uaed8 \ud3ec\ud568\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \ud654\uba74 \ud655\uc778\ub9cc\uc73c\ub85c \ub05d\ub0b4\uc9c0 \uc54a\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ub9c8\ubb34\ub9ac: \ud655\uc778\ub41c \uc0ac\uc2e4\uacfc \uc6b4\uc601 \ud310\ub2e8<\/h2>\n<p><strong>\ud655\uc778\ub41c \uc0ac\uc2e4:<\/strong> Unhead 3.3.0\uc740 \uc815\uc2dd\uc73c\ub85c \uacf5\uac1c\ub410\uace0, \ud2b9\uc815 bundler \uc870\ud569\uc5d0\uc11c <code>oxc-parser<\/code>\uc758 \uc9c1\uc811 \uc124\uce58\ub97c \uc694\uad6c\ud569\ub2c8\ub2e4. Vite\uc758 CSS chunk\/\ub77c\uc774\ube0c\ub7ec\ub9ac config, Nuxt\uc758 \ud398\uc774\uc9c0 \uacbd\uace0\u00b7\ub3c4\uad6c \uc758\uc874\uc131, Vitest\uc758 interrupt \ucc98\ub9ac\ub294 \ucd5c\uadfc 72\uc2dc\uac04\uc5d0 main\uc73c\ub85c \uae30\ub85d\ub410\uc9c0\ub9cc \uc544\uc9c1 \uc815\uc2dd \ub9b4\ub9ac\uc988\uac00 \uc544\ub2d9\ub2c8\ub2e4.<\/p>\n<p><strong>\uc6b4\uc601 \ud310\ub2e8:<\/strong> \uc774\ubc88 \uc8fc\uc758 \uc6b0\uc120\uc21c\uc704\ub294 \ud504\ub808\uc784\uc6cc\ud06c \ub300\uaddc\ubaa8 \uc5c5\uadf8\ub808\uc774\ub4dc\uac00 \uc544\ub2c8\ub77c \ube4c\ub4dc \uc758\uc874\uc131\uc758 \uba85\uc2dc\ud654\uc640 \uac80\uc99d \ubc94\uc704\uc758 \ubcf4\uac15\uc785\ub2c8\ub2e4. Nuxt \uc571\uc740 lockfile\uc744 \uc791\uc740 PR\ub85c \ubd84\ub9ac\ud558\uace0, head\/SSR\u00b7CSS chunk\u00b7\uc911\ucca9 \ub77c\uc6b0\ud305\u00b7\ud14c\uc2a4\ud2b8 \ucde8\uc18c\ub97c \ubb36\uc740 \uc9e7\uc740 release-candidate \uccb4\ud06c\ub9ac\uc2a4\ud2b8\ub97c \uc720\uc9c0\ud558\ub294 \ubc29\uc2dd\uc774 \uac00\uc7a5 \ub0ae\uc740 \uc704\ud5d8\uc73c\ub85c \ub300\uc751\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc8fc\uc694 \ucd9c\ucc98<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/unjs\/unhead\/releases\/tag\/v3.3.0\" target=\"_blank\" rel=\"noopener\">Unhead v3.3.0 \uc815\uc2dd \ub9b4\ub9ac\uc988 \ub178\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitejs\/vite\/commit\/1331b0b438b1e7193effb7d2341660bccb9c3155\" target=\"_blank\" rel=\"noopener\">Vite main: pure CSS chunk Set \uc870\ud68c<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitejs\/vite\/commit\/b4bf59686a7ac238929e91a6e1708c739b843a2f\" target=\"_blank\" rel=\"noopener\">Vite main: library config mutation \ubc29\uc9c0<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/commit\/7d873a55abe33aec8b9632ea99888faab2e81dcf\" target=\"_blank\" rel=\"noopener\">Nuxt main: sibling navigation \uacbd\uace0 \ubcf4\uc815<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/commit\/192612c73cb2f91e9b66fe84ff562d6e4ab152c0\" target=\"_blank\" rel=\"noopener\">Nuxt main: Vite\u00b7Rolldown \uc758\uc874\uc131 \uac31\uc2e0<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitest-dev\/vitest\/commit\/d568f8ce3739b532d5bf2c1ee1e45e8a8a473d09\" target=\"_blank\" rel=\"noopener\">Vitest main: blocked globalSetup Ctrl+C \uc885\ub8cc<\/a><\/li>\n<\/ul>\n<h2>\ub354 \uae4a\uac8c \uc77d\uae30: \uc2e4\uc804 \uac00\uc774\ub4dc<\/h2>\n<p>\uc774 \ub9ac\ud3ec\ud2b8\ub294 \ucd5c\uadfc \ud750\ub984\uc744 \ube60\ub974\uac8c \ud30c\uc545\ud558\uae30 \uc704\ud55c \uc694\uc57d\uc785\ub2c8\ub2e4. \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ud560 \ub54c\ub294 \uc544\ub798\uc758 \uae30\uc900 \uae00\uacfc \ud568\uaed8 \ud655\uc778\ud558\uba74 \ub354 \uc548\uc804\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/113\/\">AI \uc5d0\uc774\uc804\ud2b8\ub780 \ubb34\uc5c7\uc778\uac00?<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/114\/\">\ud504\ub86c\ud504\ud2b8 \uc778\uc81d\uc158 \ubcf4\uc548 \uccb4\ud06c\ub9ac\uc2a4\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/115\/\">AI \ucf54\ub529 \ub3c4\uad6c \uc548\uc804 \uc6cc\ud06c\ud50c\ub85c<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/116\/\">Nuxt SEO \uc124\uc815 \ubc29\ubc95<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/117\/\">Nuxt\uc640 WordPress Headless CMS \uad6c\uc870<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/118\/\">\uac1c\ubc1c\uc790 \ube14\ub85c\uadf8 \uc560\ub4dc\uc13c\uc2a4 \uc2b9\uc778 \uc804\ub7b5<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\uc694\uc57d: 2026\ub144 8\uc6d4 1~4\uc77c KST \uae30\uc900 Nuxt\/Vue\/Vite \uc0dd\ud0dc\uacc4\uc758 \ucd5c\uadfc 72\uc2dc\uac04\uc740 \ub300\ud615 \ud504\ub808\uc784\uc6cc\ud06c \uc815\uc2dd \ub9b4\ub9ac\uc988\ubcf4\ub2e4 \ud5e4\ub4dc \uba54\ud0c0\ub370\uc774\ud130 \ube4c\ub4dc \uc758\uc874\uc131, CSS \uccad\ud06c \ucc98\ub9ac, \uac1c\ubc1c \uc9c4\ub2e8, \ud14c\uc2a4\ud2b8 \uc885\ub8cc \ub3d9\uc791\uc744 \ub2e4\ub4ec\ub294 \ud750\ub984\uc774 \ub450\ub4dc\ub7ec\uc84c\uc2b5\ub2c8\ub2e4. Nuxt \ud504\ub860\ud2b8\uc5d4\ub4dc \ud300\uc740 \uc774\ubc88 \uc8fc \ubc30\ud3ec \uc804\uc5d0 Unhead \ubc88\ub4e4\ub7ec\uc758 oxc-parser \uc758\uc874\uc131 \uc5ec\ubd80\uc640 \ub77c\uc774\ube0c\ub7ec\ub9ac \ube4c\ub4dc\u00b7SSR \ud68c\uadc0 \ud14c\uc2a4\ud2b8\ub97c \ud568\uaed8 \uc810\uac80\ud558\ub294 \ud3b8\uc774 \uc548\uc804\ud569\ub2c8\ub2e4. 3\uc77c \uacb0\ub860 \ud575\uc2ec \ub2f5\ubcc0: \uc9c0\uae08 \uc989\uc2dc [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":409,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-410","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nuxt-trend"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/comments?post=410"}],"version-history":[{"count":0,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/410\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media\/409"}],"wp:attachment":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media?parent=410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/categories?post=410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/tags?post=410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}