{"id":426,"date":"2026-08-08T00:03:40","date_gmt":"2026-08-08T00:03:40","guid":{"rendered":"https:\/\/gilnas.synology.me\/wordpress\/426\/"},"modified":"2026-08-08T00:03:40","modified_gmt":"2026-08-08T00:03:40","slug":"nuxt%c2%b7vue%c2%b7vite-%ed%8c%a8%ec%b9%98%eb%a1%9c-%eb%b3%b4%eb%8a%94-ssr%c2%b7%eb%b9%8c%eb%93%9c-%ec%9a%b4%ec%98%81-%ec%b2%b4%ed%81%ac%ed%8f%ac%ec%9d%b8%ed%8a%b8-three-day-ssr-and-build-operations","status":"publish","type":"post","link":"https:\/\/gilnas.synology.me\/wordpress\/426\/","title":{"rendered":"Nuxt\u00b7Vue\u00b7Vite \ud328\uce58\ub85c \ubcf4\ub294 SSR\u00b7\ube4c\ub4dc \uc6b4\uc601 \uccb4\ud06c\ud3ec\uc778\ud2b8 | Three-Day SSR and Build Operations Update"},"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-hero-6.png\" alt=\"Nuxt\u00b7Vue\u00b7Vite \ud328\uce58\ub85c \ubcf4\ub294 SSR\u00b7\ube4c\ub4dc \uc6b4\uc601 \uccb4\ud06c\ud3ec\uc778\ud2b8 | Three-Day SSR and Build Operations Update\" \/><\/figure>\n<p><strong>\ud575\uc2ec \ub2f5\ubcc0:<\/strong> 2026\ub144 8\uc6d4 5~8\uc77c KST\uc758 Nuxt\/Vue\/Vite \uc0dd\ud0dc\uacc4\ub294 \u201c\uc0c8 \uae30\ub2a5 \uacbd\uc7c1\u201d\ubcf4\ub2e4 <strong>SSR\u00b7island \ub80c\ub354\ub9c1\u00b7\ube4c\ub4dc \ud50c\ub7ec\uadf8\uc778 \uacbd\ub85c\uc758 \uc548\uc815\ud654<\/strong>\uc5d0 \uc9d1\uc911\ud588\ub2e4. <a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.5.2\" target=\"_blank\" rel=\"noopener\">Nuxt 4.5.2<\/a>\ub294 \uc0dd\uc131 \ud30c\uc77c\u00b7\ucef4\ud3ec\ub10c\ud2b8 \uc2a4\uce94\uacfc prerender island\ub97c \ubcf4\uc815\ud588\uace0, <a href=\"https:\/\/github.com\/vuejs\/core\/releases\/tag\/v3.5.41\" target=\"_blank\" rel=\"noopener\">Vue 3.5.41<\/a>\uc740 hydration\uacfc SSR setup state\ub97c, <a href=\"https:\/\/github.com\/vitejs\/vite\/releases\/tag\/v8.2.1\" target=\"_blank\" rel=\"noopener\">Vite 8.2.1<\/a>\uc740 shared plugin \ube4c\ub4dc\uc640 CSS \ucc98\ub9ac \uacbd\ub85c\ub97c \uc218\uc815\ud588\ub2e4. \uc6b4\uc601 \uc911\uc778 Nuxt 3 \uc571\uc740 <a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v3.21.11\" target=\"_blank\" rel=\"noopener\">3.21.11<\/a> \ud328\uce58\ub97c \uc801\uc6a9\ud560 \uc218 \uc788\uc9c0\ub9cc, \uacf5\uc2dd \ub9b4\ub9ac\uc988\uac00 \ubc1d\ud78c Nuxt 3 EOL\uc744 \uadfc\uac70\ub85c v4 \uc774\ud589\uc744 \ubcc4\ub3c4 \uc791\uc5c5\uc73c\ub85c \uc2dc\uc791\ud574\uc57c \ud55c\ub2e4.<\/p>\n<p><strong>\uc694\uc57d:<\/strong> \uc774\ubc88 3\uc77c \ub9ac\ud3ec\ud2b8\ub294 Nuxt \uac1c\ubc1c\uc790\uac00 \ubc30\ud3ec \uc804 SSR hydration, server island prerender, Vite sharedPlugins\u00b7legacy bundle\uc744 \ubb36\uc5b4 \ud68c\uadc0 \uc2dc\ud5d8\ud574\uc57c \ud558\ub294 \uc774\uc720\uc640 \uc6b0\uc120\uc21c\uc704\ub97c \uc815\ub9ac\ud55c\ub2e4. \ud655\uc778\ub41c \ub9b4\ub9ac\uc988 \ub178\ud2b8\uc640 changelog\ub9cc\uc744 \uadfc\uac70\ub85c \ud558\uba70, \uc544\uc9c1 \ub9b4\ub9ac\uc988\ub418\uc9c0 \uc54a\uc740 main \ubcc0\uacbd\uc740 \ubc30\ud3ec \uad8c\uace0\ub85c \ucde8\uae09\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<h2>3\uc77c \uacb0\ub860<\/h2>\n<p><strong>\uc0ac\uc2e4:<\/strong> Nuxt 4.5.2\u00b73.21.11, Vue 3.5.41, Vite 8.2.1\uacfc plugin-legacy 8.2.3\uc774 72\uc2dc\uac04 \ucc3d\uc5d0 \uacf5\uac1c\ub410\ub2e4. <strong>\uadfc\uac70:<\/strong> \uac01 \ud504\ub85c\uc81d\ud2b8\uc758 GitHub Release \ubc0f \ud574\ub2f9 \ud0dc\uadf8 changelog\uac00 \uc0dd\uc131\u00b7island\u00b7SSR hydration\u00b7chunk import map\u00b7CSS minify \uad00\ub828 \uc218\uc815 \ud56d\ubaa9\uc744 \uba85\uc2dc\ud55c\ub2e4. <strong>\uc2dc\uc0ac\uc810:<\/strong> \uc774 \uc870\ud569\uc740 \u201c\ubc84\uc804 \uc22b\uc790\ub97c \ub9de\ucd94\ub294\u201d \uc5c5\ub370\uc774\ud2b8\uac00 \uc544\ub2c8\ub77c \ub80c\ub354\ub9c1\uacfc \ube4c\ub4dc \uacbd\uacc4\uac00 \ub9cc\ub098\ub294 \uc2dc\ub098\ub9ac\uc624\ub97c \ub2e4\uc2dc \uc2dc\ud5d8\ud560 \uc2e0\ud638\ub2e4. \ud2b9\ud788 Nuxt 3\uc758 \ud328\uce58\uc640 EOL\uc740 \uc11c\ub85c \ub2e4\ub978 \ubb38\uc81c\ub2e4. \ub2f9\uc7a5\uc740 \ud328\uce58\ud560 \uc218 \uc788\uc5b4\ub3c4, \uc7a5\uae30 \uc9c0\uc6d0 \uacbd\ub85c\ub294 v4\uc5d0 \uc788\ub2e4.<\/p>\n<ul>\n<li><strong>\uc9c0\uae08 \uc801\uc6a9:<\/strong> Nuxt 4.5.2 \ub610\ub294 3.21.11, Vue 3.5.41, Vite 8.2.1\uc744 \ub3c5\ub9bd \ubcc0\uacbd\uc73c\ub85c \uac80\uc99d\ud55c\ub2e4.<\/li>\n<li><strong>\ubc18\ub4dc\uc2dc \uc2dc\ud5d8:<\/strong> SSR \uccab \ub80c\ub354\u2192hydration, server island prerender, async setup, \uae34 <code>v-for<\/code>, sharedPlugins build, legacy \uc0b0\ucd9c\ubb3c.<\/li>\n<li><strong>\ubd84\ub9ac\ud574\uc11c \uacc4\ud68d:<\/strong> Nuxt 3 EOL \ub300\uc751\uc740 \ud328\uce58 PR\uacfc \uc11e\uc9c0 \ub9d0\uace0 v4 compatibility\u00b7\ubaa8\ub4c8\u00b7\ubc30\ud3ec preset \uac80\ud1a0\ub97c \ubcc4\ub3c4 \ubc31\ub85c\uadf8\ub85c \ub9cc\ub4e0\ub2e4.<\/li>\n<\/ul>\n<h2>72\uc2dc\uac04 \ub3d9\uc548 \ud655\uc778\ub41c 6\uac1c \uc774\uc288, 3\uac1c \ud750\ub984<\/h2>\n<h3>\ud750\ub984 1 \u2014 Nuxt \ud328\uce58\ub294 \uac1c\ubc1c \ub8e8\ud504\uc640 server island \uacbd\uacc4\uc5d0 \ub2ff\ub294\ub2e4<\/h3>\n<p><strong>\ud655\uc778\ub41c \uc0ac\uc2e4:<\/strong> 8\uc6d4 5\uc77c \uacf5\uac1c\ub41c <a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.5.2\" target=\"_blank\" rel=\"noopener\">Nuxt 4.5.2<\/a>\ub294 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc740 \uc0dd\uc131 \ud30c\uc77c\uc758 \uc7ac\uc791\uc131\uc744 \uac74\ub108\ub6f0\uace0 lazy import\ub85c parsing\uc744 \uac1c\uc120\ud558\uba70, \ubcc0\ud558\uc9c0 \uc54a\uc740 \uad6c\uc870\uc758 app\/component scan\uc744 \uc7ac\uc0ac\uc6a9\ud55c\ub2e4. \uac19\uc740 \ub9b4\ub9ac\uc988\ub294 prerender \uc911 island render dedupe, non-object island props \uac70\ubd80, underscore \ud0a4\ub97c \uac00\uc9c4 component\uc758 island payload \uc9c1\ub82c\ud654, never-hydrated chunk\uc758 prefetch hint \uc81c\uac70\ub97c \ud3ec\ud568\ud55c\ub2e4.<\/p>\n<p><strong>\uc65c \uc911\uc694\ud55c\uac00:<\/strong> \uc774\ub294 \ubca4\uce58\ub9c8\ud06c \uc218\uce58\ub97c \uc0c8\ub85c \uc57d\uc18d\ud55c \uae30\ub2a5\uc774 \uc544\ub2c8\ub2e4. \ub300\uc2e0 \ud070 \ubaa8\ub178\ub808\ud3ec \ub610\ub294 \ub9ce\uc740 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uac00\uc9c4 \uc571\uc5d0\uc11c dev \uc7ac\uc2dc\uc791\u00b7\ud15c\ud50c\ub9bf \uc0dd\uc131\u00b7prerender\uac00 \uc2e4\uc81c \uc571 \uad6c\uc870\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9c0\ub294 \uc601\uc5ed\uc744 \ubcf4\uc815\ud55c\ub2e4. island\ub97c \uc4f0\ub294 \uc0ac\uc774\ud2b8\ub294 \u201c\ud398\uc774\uc9c0\uac00 \uc5f4\ub9b0\ub2e4\u201d\ub294 \ud655\uc778\ub9cc\uc73c\ub85c \ucda9\ubd84\ud558\uc9c0 \uc54a\ub2e4. prerender \uc0b0\ucd9c\ubb3c, client navigation, payload \uc9c1\ub82c\ud654\uac00 \ud568\uaed8 \uc720\uc9c0\ub418\ub294\uc9c0 \ubd10\uc57c \ud55c\ub2e4.<\/p>\n<p><strong>\uc2e4\ubb34 \ud574\uc11d:<\/strong> 4.5.2\ub85c \uc62c\ub9b4 \ub54c\ub294 local dev cold start\uc640 production build \uc2dc\uac04\uc744 \uae30\uc900\uc120\uc73c\ub85c \ub0a8\uae30\uace0, island\uac00 \uc788\ub294 \ud398\uc774\uc9c0\uc5d0\uc11c direct load\u00b7client navigation\u00b7prerender \uacb0\uacfc\ub97c \uac01\uac01 \ucea1\ucc98\ud55c\ub2e4. URL parameter\ub098 CMS \ub370\uc774\ud130\ub97c island props\ub85c \ub118\uae30\ub294 \uc571\uc740 props\uac00 \uac1d\uccb4\uc778\uc9c0, null\u00b7\ubc30\uc5f4\u00b7\ubb38\uc790\uc5f4 \uc785\ub825\uc5d0\uc11c \uc548\uc804\ud788 \uc2e4\ud328\ud558\ub294\uc9c0\ub3c4 \ud655\uc778\ud55c\ub2e4. \uc774\uac83\uc740 \ub9b4\ub9ac\uc988\uac00 \uc0c8\ub85c\uc6b4 \ubcf4\uc548 \uacf5\uc9c0\ub77c\uace0 \ub9d0\ud55c \uac83\uc740 \uc544\ub2c8\uba70, \uc548\uc815\uc131 \ud68c\uadc0\ub97c \uc904\uc774\uae30 \uc704\ud55c \uac80\uc99d \ud56d\ubaa9\uc774\ub2e4.<\/p>\n<h3>\ud750\ub984 2 \u2014 Nuxt 3.21.11\uc740 \uc720\uc9c0\ubcf4\uc218 \ud328\uce58\uc774\uc790 \uc9c0\uc6d0 \uacbd\ub85c \uc804\ud658 \uc2e0\ud638\ub2e4<\/h3>\n<p><strong>\ud655\uc778\ub41c \uc0ac\uc2e4:<\/strong> \uac19\uc740 \ub0a0 \uacf5\uac1c\ub41c <a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v3.21.11\" target=\"_blank\" rel=\"noopener\">Nuxt 3.21.11<\/a>\uc740 underscore component key\uc758 island payload \uc9c1\ub82c\ud654, prerender island \uc911\ubcf5 \ub80c\ub354 \ubc29\uc9c0, non-object island props \uac70\ubd80, preview hydration \ub4a4 preview mode \uc7ac\uac80\uc0ac, route rule\uc744 decoded path\uc5d0 \ub9de\ucdb0 \uac80\uc0ac\ud558\ub294 \uc218\uc815\uc744 \uc5f4\uac70\ud55c\ub2e4. \ub9b4\ub9ac\uc988 \ubcf8\ubb38\uc740 Nuxt v3\uac00 end-of-life\uc774\uba70 v4 \uc5c5\uadf8\ub808\uc774\ub4dc \ub610\ub294 \uc7a5\uae30 \uc9c0\uc6d0 \ud30c\ud2b8\ub108 \uac80\ud1a0\ub97c \uc548\ub0b4\ud55c\ub2e4.<\/p>\n<p><strong>\uc65c \uc911\uc694\ud55c\uac00:<\/strong> 3.21.11\uc740 \uae30\uc874 3.x \uc11c\ube44\uc2a4\uc758 \uc989\uc2dc \ud68c\uadc0 \uc644\ud654\uc5d0 \uc720\uc6a9\ud558\uc9c0\ub9cc, EOL \uc120\uc5b8\uc744 \ub418\ub3cc\ub9ac\uc9c0\ub294 \uc54a\ub294\ub2e4. \uc774 \uc810\uc744 \u201c3.x\uac00 \uacc4\uc18d \uae30\ub2a5 \uc9c0\uc6d0\ub41c\ub2e4\u201d\ub85c \uacfc\uc7a5\ud558\uba74 \uc548 \ub41c\ub2e4. \ud328\uce58 \uc801\uc6a9\uc740 \ub2e8\uae30 \uc548\uc815\ud654, v4 \uc774\ud589\uc740 \uc7a5\uae30 \uc6b4\uc601 \ub9ac\uc2a4\ud06c \ucd95\uc18c\ub77c\ub294 \uc11c\ub85c \ub2e4\ub978 \ud2b8\ub799\uc774\ub2e4.<\/p>\n<p><strong>\uac1c\ubc1c\uc790 \uc561\uc158:<\/strong> \ud604\uc7ac Nuxt major\/minor\uc640 lockfile\uc758 \uc2e4\uc81c resolved version\uc744 \uba3c\uc800 \uae30\ub85d\ud55c\ub2e4. 3.21.11 PR\uc5d0\uc11c\ub294 prerender, preview mode, encoded\/decoded route path\uc640 island payload\ub9cc \uc881\uac8c \uac80\uc99d\ud55c\ub2e4. \ubcc4\ub3c4 v4 \uc900\ube44 PR\uc5d0\uc11c\ub294 \uc0ac\uc6a9 \uc911\uc778 module, custom builder, server preset, routeRules, runtime config\ub97c \ubaa9\ub85d\ud654\ud558\uace0 <a href=\"https:\/\/nuxt.com\/docs\/getting-started\/upgrade\" target=\"_blank\" rel=\"noopener\">\uacf5\uc2dd \uc5c5\uadf8\ub808\uc774\ub4dc \uac00\uc774\ub4dc<\/a> \uae30\uc900\uc73c\ub85c \ud638\ud658\uc131 \uc791\uc5c5\uc744 \ubd84\ud574\ud55c\ub2e4.<\/p>\n<h3>\ud750\ub984 3 \u2014 Vue 3.5.41\uc740 SSR hydration\uacfc \ub300\ud615 \ub80c\ub354 \uc791\uc5c5\uc758 \ubcf5\uc6d0\ub825\uc744 \ubcf4\uc644\ud55c\ub2e4<\/h3>\n<p><strong>\ud655\uc778\ub41c \uc0ac\uc2e4:<\/strong> <a href=\"https:\/\/github.com\/vuejs\/core\/releases\/tag\/v3.5.41\" target=\"_blank\" rel=\"noopener\">Vue 3.5.41<\/a>\uc758 \uacf5\uc2dd changelog\ub294 hydration \uc911 hidden state \uc815\uaddc\ud654, async setup \uacb0\uacfc \ucc98\ub9ac \uc911 SSR setup state \ubcf5\uc6d0, stable <code>v-for<\/code>\uc5d0\uc11c VNode lifecycle \ubcf4\uc874, \ub9e4\uc6b0 \ud070 post-callback \ubc30\uc5f4 flush\uc758 stack overflow \ud68c\ud53c\ub97c \uc218\uc815\ud55c\ub2e4\uace0 \uc801\ub294\ub2e4. resource prop\uc774 \ubc14\ub00c\uc9c0 \uc54a\uc558\uc744 \ub54c \uc7ac\uc870\ud68c \ubc29\uc9c0, nested async custom element mount \uc21c\uc11c, <code>v-model<\/code> hydration \uc804 \ud14d\uc2a4\ud2b8 \ubcf4\uc874\ub3c4 \ud3ec\ud568\ub41c\ub2e4.<\/p>\n<p><strong>\uc65c \uc911\uc694\ud55c\uac00:<\/strong> \uc774 \uc218\uc815\uc740 \ubaa8\ub4e0 Nuxt \uc571\uc774 \uac19\uc740 \uc624\ub958\ub97c \uacaa\ub294\ub2e4\ub294 \ub73b\uc740 \uc544\ub2c8\ub2e4. \ub2e4\ub9cc SSR \ud398\uc774\uc9c0\uac00 hydration\uc73c\ub85c \ub118\uaca8\uc9c0\ub294 \uacbd\uacc4, async setup\/Suspense, \ub300\ud615 \ub3d9\uc801 \ubaa9\ub85d\u00b7\ud6c4\ucc98\ub9ac callback\uc744 \uc4f0\ub294 \uc571\uc5d0\uc11c\ub294 \ube0c\ub77c\uc6b0\uc800 \ucf58\uc194\ub9cc \ubcf4\ub294 \ud14c\uc2a4\ud2b8\ubcf4\ub2e4 DOM \uc0c1\ud0dc\uc640 \uc785\ub825 \ubcf4\uc874\uc744 \uac19\uc774 \uac80\uc99d\ud574\uc57c \ud55c\ub2e4\ub294 \uadfc\uac70\ub2e4.<\/p>\n<p><strong>\uac80\uc99d \ubc29\ubc95:<\/strong> \ub85c\uadf8\uc778\u00b7\ud544\ud130\u00b7\ud0ed UI\ucc98\ub7fc hidden state\ub97c \uc804\ud658\ud558\ub294 SSR \ud398\uc774\uc9c0\uc5d0\uc11c \ucd08\uae30 HTML\uacfc hydration \ub4a4 DOM\uc744 \ube44\uad50\ud55c\ub2e4. async setup\uc744 \uac00\uc9c4 \ucef4\ud3ec\ub10c\ud2b8, \uae34 \ubaa9\ub85d\uc758 \ucd94\uac00\u00b7\uc0ad\uc81c\u00b7\uc815\ub82c, hydration \uc9c1\uc804 \uc0ac\uc6a9\uc790\uac00 \uc785\ub825\ud55c \ud14d\uc2a4\ud2b8\ub97c E2E fixture\ub85c \ub9cc\ub4e0\ub2e4. \uc131\ub2a5 \uac1c\uc120\uc744 \ub2e8\uc815\ud558\uae30\ubcf4\ub2e4 hydration warning, unhandled error, long task, DOM mismatch\ub97c \ubc30\ud3ec \uc804\u00b7\ud6c4\ub85c \uad00\ucc30\ud55c\ub2e4.<\/p>\n<h3>\ud750\ub984 4 \u2014 Vite 8.2.1\uc740 sharedPlugins\u00b7CSS\u00b7\uc784\uc2dc \ud3ec\ud2b8 \ube4c\ub4dc \uacbd\ub85c\ub97c \ubcf4\uc815\ud55c\ub2e4<\/h3>\n<p><strong>\ud655\uc778\ub41c \uc0ac\uc2e4:<\/strong> 8\uc6d4 6\uc77c \uacf5\uac1c\ub41c <a href=\"https:\/\/github.com\/vitejs\/vite\/releases\/tag\/v8.2.1\" target=\"_blank\" rel=\"noopener\">Vite 8.2.1<\/a> changelog\ub294 <code>sharedPlugins: true<\/code>\uc5d0\uc11c client <code>chunkImportMap<\/code>\uc774 \ub3d9\uc791\ud558\ub3c4\ub85d \uc218\uc815\ud588\uace0, bundled-dev\uc758 client script \uc0bd\uc785 \uc21c\uc11c, Lightning CSS minify \uc911 visitor \uc7ac\uc2e4\ud589, top-level <code>input<\/code>\uc5d0\uc11c library entry\ub97c \ud574\uc11d\ud560 \ub54c user config mutation, <code>port: 0<\/code>\uc77c \ub54c random port \uc120\ud0dd\uc744 \uace0\ucce4\ub2e4. pure CSS chunk \ud0d0\uc0c9\uc740 Set\uc744 \uc368 \uac1c\uc120\ud588\ub2e4.<\/p>\n<p><strong>\uc5f0\uacb0 \uc774\uc288:<\/strong> \uac19\uc740 \uc2dc\uc810\uc758 <a href=\"https:\/\/github.com\/vitejs\/vite\/releases\/tag\/plugin-legacy%408.2.3\" target=\"_blank\" rel=\"noopener\">@vitejs\/plugin-legacy 8.2.3<\/a>\ub3c4 sharedPlugins\uc758 client chunkImportMap \uc218\uc815\uacfc Rolldown \uad00\ub828 \uc758\uc874\uc131 \uac31\uc2e0\uc744 \ud3ec\ud568\ud55c\ub2e4. \uc774\ub294 legacy target\uc744 \uc4f0\ub294 \uc571\uc774 plugin-legacy\ub9cc \ub530\ub85c \uace0\uc815\ud55c \ucc44 core Vite \ubcc0\uacbd\uc744 \ubb34\uc2dc\ud558\uba74 \uac80\uc99d \ubc94\uc704\uac00 \uac08\ub77c\uc9c8 \uc218 \uc788\uc74c\uc744 \ub73b\ud55c\ub2e4. \ub2e8, \uc774 \ub9b4\ub9ac\uc988 \ub178\ud2b8\ub294 \ubcf4\uc548 \uacf5\uc9c0\uac00 \uc544\ub2c8\ub77c build bug fix\ub2e4.<\/p>\n<p><strong>\uac1c\ubc1c\uc790 \uc561\uc158:<\/strong> library build, custom plugin, <code>sharedPlugins: true<\/code>, legacy browser bundle, CI\uc758 <code>port: 0<\/code> test server\ub97c \uc0ac\uc6a9\ud558\ub294\uc9c0 \uac80\uc0c9\ud55c\ub2e4. \ud574\ub2f9\ud558\uba74 clean install \ud6c4 <code>vite build<\/code>\uc640 preview\/E2E\ub97c \uc2e4\ud589\ud558\uace0, \uc0b0\ucd9c\ubb3c\uc758 import map\u00b7script \uc21c\uc11c\u00b7CSS \ub9c1\ud06c\u00b7legacy fallback\uc744 \ube44\uad50\ud55c\ub2e4. Rolldown \uad00\ub828 \uc758\uc874\uc131 \ubcc0\ud654\ub294 lockfile diff\uc5d0\uc11c \ubcc4\ub3c4 \uac80\ud1a0\ud55c\ub2e4.<\/p>\n<h2>\ud504\ub860\ud2b8\uc5d4\ub4dc \uac1c\ubc1c\uc790 \uccb4\ud06c\ub9ac\uc2a4\ud2b8<\/h2>\n<ul>\n<li><strong>\ubc84\uc804 \uace0\uc815:<\/strong> <code>pnpm why nuxt vue vite @vitejs\/plugin-legacy<\/code> \ub610\ub294 \ub3d9\ub4f1 \uba85\ub839\uc73c\ub85c \uc2e4\uc81c \uc124\uce58 \ubc84\uc804\uc744 \uae30\ub85d\ud558\uace0, package.json\ub9cc\uc774 \uc544\ub2c8\ub77c lockfile diff\ub97c \ub9ac\ubdf0\ud55c\ub2e4.<\/li>\n<li><strong>Nuxt island:<\/strong> prerender \ub300\uc0c1 \ud398\uc774\uc9c0\ub97c \uc9c1\uc811 \uc5f4\uae30\u00b7client navigation\u00b7\uc0c8\ub85c\uace0\uce68\uc73c\ub85c \uac01\uac01 \uc2dc\ud5d8\ud55c\ub2e4. props\uc5d0 null, \ubb38\uc790\uc5f4, \ubc30\uc5f4 \ub4f1 \uc608\uc0c1 \ubc16 \uc785\ub825\uc774 \ub4e4\uc5b4\uc62c \ub54c \uc624\ub958\uac00 \uc548\uc804\ud558\uac8c \ucc98\ub9ac\ub418\ub294\uc9c0 \ud655\uc778\ud55c\ub2e4.<\/li>\n<li><strong>SSR\/hydration:<\/strong> hidden UI, async setup, \uc0ac\uc6a9\uc790 \uc785\ub825, \uae34 v-for \ubaa9\ub85d\uc744 \ud3ec\ud568\ud55c fixture\uc5d0\uc11c hydration warning\u00b7DOM mismatch\u00b7\uc785\ub825 \uc190\uc2e4\uc744 \uac80\uc0ac\ud55c\ub2e4.<\/li>\n<li><strong>Vite build:<\/strong> sharedPlugins, library <code>input<\/code>, CSS minify, plugin-legacy, port 0\uc744 \uc4f0\ub294 CI\/\ub85c\uceec \uacbd\ub85c\uc5d0\uc11c clean build\u2192preview\u2192E2E\ub97c \uc2e4\ud589\ud55c\ub2e4.<\/li>\n<li><strong>Nuxt 3 \uc6b4\uc601:<\/strong> 3.21.11\uc744 \uc801\uc6a9\ud558\ub354\ub77c\ub3c4 EOL\uc744 \uc9c0\uc6d0 \uc5f0\uc7a5\uc73c\ub85c \uc624\ud574\ud558\uc9c0 \uc54a\ub294\ub2e4. v4 compatibility \uc791\uc5c5\uc740 \ud328\uce58 \ubc30\ud3ec\uc640 \ubd84\ub9ac\ud558\uace0, rollback \uc870\uac74\uacfc owner\ub97c \uc815\ud55c\ub2e4.<\/li>\n<li><strong>\uad00\ucc30:<\/strong> canary\uc5d0\uc11c build time, prerender error, SSR 5xx, hydration warning, client navigation error, CSS\/legacy asset 404\ub97c \uc774\uc804 \ubc30\ud3ec\uc640 \ube44\uad50\ud55c\ub2e4.<\/li>\n<\/ul>\n<h2>\uc9e7\uc740 Q&amp;A<\/h2>\n<h3>Nuxt 3.21.11\ub9cc \uc62c\ub9ac\uba74 Nuxt 3 \uc6b4\uc601\uc744 \uacc4\uc18d\ud574\ub3c4 \ub418\ub098?<\/h3>\n<p>\ub2e8\uae30\uc801\uc73c\ub85c\ub294 \uacf5\uc2dd \ud328\uce58\uc5d0 \ud3ec\ud568\ub41c \uc218\uc815\uc758 \ud68c\uadc0\ub97c \uc904\uc77c \uc218 \uc788\ub2e4. \uadf8\ub7ec\ub098 \ub9b4\ub9ac\uc988 \ubcf8\ubb38\uc740 Nuxt 3 EOL\uc744 \uba85\uc2dc\ud55c\ub2e4. \ub530\ub77c\uc11c \ud328\uce58\uc640 v4 \uc774\ud589 \uacc4\ud68d\uc744 \ubaa8\ub450 \uac00\uc838\uac00\uc57c \ud558\uba70, \ud6c4\uc790\ub97c \uc0dd\ub7b5\ud55c \uc7a5\uae30 \uc6b4\uc601 \ud310\ub2e8\uc758 \uadfc\uac70\ub85c \uc774 \ud328\uce58\ub97c \uc4f0\uba74 \uc548 \ub41c\ub2e4.<\/p>\n<h3>Vue 3.5.41\uc740 \ubaa8\ub4e0 \uc571\uc5d0 \uc989\uc2dc \uccb4\uac10 \uc131\ub2a5\uc744 \uc8fc\ub294\uac00?<\/h3>\n<p>\uacf5\uc2dd changelog\ub294 \ud2b9\uc815 SSR\/hydration\u00b7v-for\u00b7scheduler \ubc84\uadf8 \uc218\uc815\uc744 \ub098\uc5f4\ud55c\ub2e4. \uc571\ubcc4 \uccb4\uac10\uc740 \ub80c\ub354 \uad6c\uc870\uc640 \ub370\uc774\ud130\ub7c9\uc5d0 \ub530\ub77c \ub2e4\ub974\ubbc0\ub85c, \uc131\ub2a5 \uc218\uce58\ub97c \uc77c\ubc18\ud654\ud558\uc9c0 \ub9d0\uace0 \uc601\ud5a5\uc744 \ubc1b\ub294 fixture\uc5d0\uc11c \uc624\ub958\uc640 \uc0ac\uc6a9\uc790 \ud750\ub984\uc744 \uba3c\uc800 \uac80\uc99d\ud55c\ub2e4.<\/p>\n<h3>Vite 8.2.1\uc5d0\uc11c \uac00\uc7a5 \uba3c\uc800 \ud655\uc778\ud560 \uacf3\uc740 \uc5b4\ub514\uc778\uac00?<\/h3>\n<p><code>sharedPlugins: true<\/code>, custom plugin, library build, plugin-legacy, CSS minify, \uc790\ub3d9 \ud3ec\ud2b8 CI\uac00 \uc788\ub294 \ud504\ub85c\uc81d\ud2b8\ub2e4. \ud574\ub2f9\ud558\uc9c0 \uc54a\ub294 \uc77c\ubc18 \uc571\ub3c4 clean build\uc640 preview smoke test\ub294 \uc218\ud589\ud558\ub418, \ud2b9\ubcc4\ud55c \uae30\ub2a5 \ubcc0\ud654\ub85c \ud574\uc11d\ud560 \ud544\uc694\ub294 \uc5c6\ub2e4.<\/p>\n<h2>\ucd9c\ucc98 \ubc0f \ub9b4\ub9ac\uc988 \ub178\ud2b8<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.5.2\" target=\"_blank\" rel=\"noopener\">Nuxt v4.5.2 \u2014 GitHub Release (2026-08-05)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v3.21.11\" target=\"_blank\" rel=\"noopener\">Nuxt v3.21.11 \u2014 GitHub Release \/ Nuxt 3 EOL notice (2026-08-05)<\/a><\/li>\n<li><a href=\"https:\/\/nuxt.com\/docs\/getting-started\/upgrade\" target=\"_blank\" rel=\"noopener\">Nuxt \uacf5\uc2dd Upgrade Guide<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vuejs\/core\/releases\/tag\/v3.5.41\" target=\"_blank\" rel=\"noopener\">Vue v3.5.41 \u2014 GitHub Release (2026-08-05)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vuejs\/core\/blob\/v3.5.41\/CHANGELOG.md\" target=\"_blank\" rel=\"noopener\">Vue v3.5.41 \u2014 CHANGELOG<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitejs\/vite\/releases\/tag\/v8.2.1\" target=\"_blank\" rel=\"noopener\">Vite v8.2.1 \u2014 GitHub Release (2026-08-06)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitejs\/vite\/blob\/v8.2.1\/packages\/vite\/CHANGELOG.md\" target=\"_blank\" rel=\"noopener\">Vite v8.2.1 \u2014 CHANGELOG<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitejs\/vite\/releases\/tag\/plugin-legacy%408.2.3\" target=\"_blank\" rel=\"noopener\">@vitejs\/plugin-legacy v8.2.3 \u2014 GitHub Release (2026-08-06)<\/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>\ud575\uc2ec \ub2f5\ubcc0: 2026\ub144 8\uc6d4 5~8\uc77c KST\uc758 Nuxt\/Vue\/Vite \uc0dd\ud0dc\uacc4\ub294 \u201c\uc0c8 \uae30\ub2a5 \uacbd\uc7c1\u201d\ubcf4\ub2e4 SSR\u00b7island \ub80c\ub354\ub9c1\u00b7\ube4c\ub4dc \ud50c\ub7ec\uadf8\uc778 \uacbd\ub85c\uc758 \uc548\uc815\ud654\uc5d0 \uc9d1\uc911\ud588\ub2e4. Nuxt 4.5.2\ub294 \uc0dd\uc131 \ud30c\uc77c\u00b7\ucef4\ud3ec\ub10c\ud2b8 \uc2a4\uce94\uacfc prerender island\ub97c \ubcf4\uc815\ud588\uace0, Vue 3.5.41\uc740 hydration\uacfc SSR setup state\ub97c, Vite 8.2.1\uc740 shared plugin \ube4c\ub4dc\uc640 CSS \ucc98\ub9ac \uacbd\ub85c\ub97c \uc218\uc815\ud588\ub2e4. \uc6b4\uc601 \uc911\uc778 Nuxt 3 \uc571\uc740 3.21.11 \ud328\uce58\ub97c \uc801\uc6a9\ud560 \uc218 \uc788\uc9c0\ub9cc, \uacf5\uc2dd \ub9b4\ub9ac\uc988\uac00 \ubc1d\ud78c Nuxt 3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":425,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-426","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\/426","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=426"}],"version-history":[{"count":0,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/426\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media\/425"}],"wp:attachment":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media?parent=426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/categories?post=426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/tags?post=426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}