{"id":261,"date":"2026-07-17T11:59:41","date_gmt":"2026-07-17T11:59:41","guid":{"rendered":"https:\/\/gilnas.synology.me\/wordpress\/261\/"},"modified":"2026-07-17T11:59:41","modified_gmt":"2026-07-17T11:59:41","slug":"nuxt-%eb%b3%b4%ec%95%88-%ed%8c%a8%ec%b9%98-%ec%a0%90%ea%b2%80-%ea%b2%bd%eb%a1%9c-%ea%b2%bd%ea%b3%84%ec%99%80-macos-dev-server-%ea%b2%80%ec%a6%9d-nuxt-security-patch-checklist","status":"publish","type":"post","link":"https:\/\/gilnas.synology.me\/wordpress\/261\/","title":{"rendered":"Nuxt \ubcf4\uc548 \ud328\uce58 \uc810\uac80: \uacbd\ub85c \uacbd\uacc4\uc640 macOS dev server \uac80\uc99d | Nuxt Security Patch Checklist"},"content":{"rendered":"<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/gilnas.synology.me\/wordpress\/wp-content\/uploads\/2026\/07\/nuxt-trend-2026-07-17.jpg\" alt=\"Nuxt \ubcf4\uc548 \ud328\uce58 \uc810\uac80: \uacbd\ub85c \uacbd\uacc4\uc640 macOS dev server \uac80\uc99d | Nuxt Security Patch Checklist\" \/><\/figure>\n<p><strong>\uc624\ub298\uc758 \uacb0\ub860:<\/strong> Nuxt 4.4.7\u00b73.21.7\uc740 6\uc6d4 2\uc77c \ubcf4\uc548 hotfix\ub85c \ubc30\ud3ec\ub410\uace0, 4.4.8\u00b73.21.8\uc740 6\uc6d4 8\uc77c macOS \uac1c\ubc1c \uc11c\ubc84 \ubb38\uc81c\ub97c \ucd94\uac00\ub85c \uace0\ucce4\ub2e4. 7\uc6d4 16\uc77c\uc5d0\ub294 Vite 8.1.5\ub3c4 \uacf5\uac1c\ub410\ub2e4. \uc9c0\uae08 \uc911\uc694\ud55c \uacb0\uc815\uc740 \u2018\ucd5c\uc2e0 \ubc84\uc804\uc774 \ub098\uc654\uc73c\ub2c8 \uc5c5\ub370\uc774\ud2b8\u2019\uac00 \uc544\ub2c8\ub77c, \uacf5\uac1c\u00b7\ube44\uacf5\uac1c SSR \uc571 \ubaa8\ub450\uc5d0\uc11c lockfile\uc744 \ud328\uce58 \ubc84\uc804\uc73c\ub85c \uc62c\ub9b0 \ub4a4 \uacbd\ub85c \uacbd\uacc4, dev server \uae30\ub3d9, SSR build\uc640 \ubc30\ud3ec \uc0b0\ucd9c\ubb3c\uc744 \ud55c \ubb36\uc74c\uc73c\ub85c \uac80\uc99d\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n<p>\ud2b9\ud788 macOS\uc5d0\uc11c Nuxt\ub97c \uac1c\ubc1c\ud558\uac70\ub098 CI\uac00 workspace\u00b7\uc2ec\ubcfc\ub9ad \ub9c1\ud06c\u00b7\uae34 \uc784\uc2dc \uacbd\ub85c\ub97c \uc4f0\ub294 \ud300\uc740 \uc774\ubc88 Nuxt hotfix\ub97c \ub2e8\uc21c\ud55c \ub85c\uceec \ubd88\ud3b8\uc73c\ub85c \ucde8\uae09\ud558\uba74 \uc548 \ub41c\ub2e4. \uac1c\ubc1c \uc11c\ubc84\uac00 \ubd88\uc548\uc815\ud558\uba74 \uc7ac\ud604 \uac00\ub2a5\ud55c \ubcf4\uc548\u00b7\uc131\ub2a5 \uac80\uc99d \uc790\uccb4\uac00 \ud754\ub4e4\ub9b0\ub2e4. \ubc18\ub300\ub85c \ub9b4\ub9ac\uc2a4\uc758 \u2018security hotfix\u2019 \ubb38\uad6c\ub9cc \ubcf4\uace0 \ucde8\uc57d\uc810\uc758 \uc138\ubd80 \uc601\ud5a5 \ubc94\uc704\ub97c \ucd94\uc815\ud574\uc11c\ub294 \uc548 \ub41c\ub2e4. \uacf5\uc2dd advisory\uc640 \uc790\uc2e0\uc758 \ub178\ucd9c \uacbd\ub85c\ub97c \ud655\uc778\ud558\uace0, staging\uc5d0\uc11c \uc7ac\ud604\u00b7\ud68c\uadc0 \ud14c\uc2a4\ud2b8\ud55c \ub4a4 \ubc30\ud3ec\ud574\uc57c \ud55c\ub2e4.<\/p>\n<h2>\ubb34\uc2a8 \uc77c\uc774 \uc788\uc5c8\ub098<\/h2>\n<p>Nuxt \ud300\uc740 2026\ub144 6\uc6d4 2\uc77c <a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.4.7\" target=\"_blank\" rel=\"noopener\">Nuxt v4.4.7<\/a> \ubc0f <a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v3.21.7\" target=\"_blank\" rel=\"noopener\">v3.21.7<\/a>\uc744 security hotfix\ub85c \ub9b4\ub9ac\uc2a4\ud588\ub2e4. \uacf5\uc2dd \ub178\ud2b8\ub294 \ud574\uacb0\ub41c advisory\ub97c <a href=\"https:\/\/github.com\/nuxt\/nuxt\/security\/advisories\" target=\"_blank\" rel=\"noopener\">Nuxt Security Advisories<\/a>\uc5d0\uc11c \ud655\uc778\ud558\ub77c\uace0 \uba85\uc2dc\ud55c\ub2e4. changelog\uc5d0\ub294 Nitro\uc758 payload extraction \ud310\ub2e8 \uc21c\uc11c, Vite allowDirs\uc758 shared-prefix \ub514\ub809\ud130\ub9ac \ud544\ud130\ub9c1, buildCache path boundary, sibling-directory traversal \ubc29\uc9c0 \uad00\ub828 \uc218\uc815\uc774 \ud3ec\ud568\ub3fc \uc788\ub2e4.<\/p>\n<p>6\uc6d4 8\uc77c <a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.4.8\" target=\"_blank\" rel=\"noopener\">v4.4.8<\/a>\uacfc <a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v3.21.8\" target=\"_blank\" rel=\"noopener\">v3.21.8<\/a>\uc740 macOS\uc5d0\uc11c dev server\ub97c \uc2e4\ud589\ud560 \ub54c\uc758 \ubb38\uc81c\ub97c \uace0\uce5c hotfix\ub2e4. \ub178\ud2b8\ub294 \ub354 \uc9e7\uc740 socket name\uacfc tmp fallback\uc744 \uc5b8\uae09\ud55c\ub2e4. \ubcc4\ub3c4\ub85c Vite \ud504\ub85c\uc81d\ud2b8\ub294 7\uc6d4 16\uc77c <a href=\"https:\/\/github.com\/vitejs\/vite\/releases\/tag\/v8.1.5\" target=\"_blank\" rel=\"noopener\">Vite 8.1.5<\/a>\ub97c \uac8c\uc2dc\ud588\uace0 \uc138\ubd80 \ubcc0\uacbd\uc740 \ud574\ub2f9 \ud0dc\uadf8\uc758 CHANGELOG\ub97c \ucc38\uc870\ud558\ub3c4\ub85d \uc548\ub0b4\ud55c\ub2e4.<\/p>\n<p><strong>\ud655\uc778 \ubc94\uc704:<\/strong> \uc774 \uae00\uc740 \ub9b4\ub9ac\uc2a4 \ub178\ud2b8\uc758 \uacf5\uac1c\ub41c \uc0ac\uc2e4\uc744 \uae30\uc900\uc73c\ub85c \ud55c\ub2e4. \ud604\uc7ac \uc5f4\ub824 \uc788\uac70\ub098 \ube44\uacf5\uac1c\uc600\ub358 advisory\uc758 CVSS\u00b7\uacf5\uaca9 \uc870\uac74\uc744 \ub9b4\ub9ac\uc2a4 \uc81c\ubaa9\ub9cc\uc73c\ub85c \ud655\uc815\ud558\uc9c0 \uc54a\ub294\ub2e4. Nuxt \uc571\uc758 \uc2e4\uc81c \uc704\ud5d8\ub3c4\ub294 \uc0ac\uc6a9 \uc911\uc778 major, Nitro preset, public asset\u00b7server route \uad6c\uc131, \ud30c\uc77c\uc2dc\uc2a4\ud15c \uad8c\ud55c, reverse proxy\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n<h2>\uc65c \uc911\uc694\ud55c\uac00<\/h2>\n<p><strong>\uc0ac\uc2e4:<\/strong> Nuxt\ub294 path boundary\u00b7\ub514\ub809\ud130\ub9ac \ud5c8\uc6a9\u00b7payload extraction\u00b7macOS socket \ucc98\ub9ac\uc5d0 \ud328\uce58\ub97c \ub0c8\ub2e4. <strong>\ud574\uc11d:<\/strong> \uc774 \uc601\uc5ed\ub4e4\uc740 \uac01\uac01 \u2018\ube4c\ub4dc\uac00 \ub418\ub294\uac00\u2019\ubcf4\ub2e4 \uac1c\ubc1c \uc11c\ubc84\uac00 \uc811\uadfc \uac00\ub2a5\ud55c \ud30c\uc77c, SSR payload\uac00 \uc0dd\uc131\ub418\ub294 \uc870\uac74, monorepo\uc758 \ubaa8\ub4c8 \ud574\uc11d \uacbd\uacc4\ub97c \uc88c\uc6b0\ud55c\ub2e4. <strong>\ucd94\uac00 \ud655\uc778:<\/strong> \uc5ec\ub7ec\ubd84\uc758 \uc571\uc774 \uc2e4\uc81c\ub85c \uc601\ud5a5\uc744 \ubc1b\ub294\uc9c0\ub294 lockfile\uc758 \ud574\uc11d \ubc84\uc804\uacfc \uacf5\uac1c endpoint\ub97c \uae30\uc900\uc73c\ub85c \ud14c\uc2a4\ud2b8\ud574\uc57c \ud55c\ub2e4. \ud2b9\ud788 SemVer \ubc94\uc704\uac00 \uc788\uc5b4\ub3c4 \ubc30\ud3ec \uc774\ubbf8\uc9c0\uac00 \uc774\uc804 lockfile\uc744 \uc7ac\uc0ac\uc6a9\ud558\uba74 \ud328\uce58\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<p>Gil\uc758 Nuxt \uc6b4\uc601 \uad00\uc810\uc5d0\uc11c\ub294 \ud504\ub860\ud2b8 \uae30\ub2a5 \ud14c\uc2a4\ud2b8\ub9cc \ud1b5\uacfc\ud574\ub3c4 \ucda9\ubd84\ud558\uc9c0 \uc54a\ub2e4. <code>nuxi dev<\/code>, <code>nuxi build<\/code>, \uc0dd\uc131\ub41c Nitro \uc11c\ubc84 \uae30\ub3d9, \ub300\ud45c SSR URL\uacfc API route, CDN \ub4a4 \uce90\uc2dc \ud5e4\ub354\uae4c\uc9c0 \ud655\uc778\ud574\uc57c \ud55c\ub2e4. \uac1c\ubc1c \ud658\uacbd\uc5d0\uc11c\ub9cc \ud1b5\uacfc\ud558\uace0 container \ub610\ub294 serverless preset\uc5d0\uc11c \uae68\uc9c0\ub294 \uc0ac\ub840\ub294 socket\u00b7\uacbd\ub85c\u00b7\ud658\uacbd\ubcc0\uc218 \ucc28\uc774\uc5d0\uc11c \uc790\uc8fc \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n<h3>1. security hotfix\ub294 \ubc84\uc804 \ubc94\uc704\uac00 \uc544\ub2c8\ub77c lockfile\ub85c \ud655\uc778\ud55c\ub2e4<\/h3>\n<p><strong>\ubcc0\uacbd \ub0b4\uc6a9:<\/strong> 4.4.7\/3.21.7\uc740 \ubcf4\uc548 hotfix\ub85c \ubc1c\ud45c\ub410\uc73c\uba70 Nuxt\ub294 advisory \ud655\uc778\uc744 \uc548\ub0b4\ud55c\ub2e4. <strong>\uc2e4\uc81c \uc601\ud5a5:<\/strong> <code>package.json<\/code>\uc758 <code>^4.4.7<\/code>\ub9cc \ubcf4\uace0 \uc548\uc804\ud558\ub2e4\uace0 \ud310\ub2e8\ud560 \uc218 \uc5c6\ub2e4. CI \uce90\uc2dc\uc640 <code>pnpm-lock.yaml<\/code>\/<code>package-lock.json<\/code>\uc774 \uacfc\uac70 \ud574\uc11d \uacb0\uacfc\ub97c \uace0\uc815\ud560 \uc218 \uc788\ub2e4. <strong>\uc801\uc6a9 \uc870\uac74:<\/strong> Nuxt 3 \uacc4\uc5f4\uc740 3.21.7 \uc774\uc0c1, Nuxt 4 \uacc4\uc5f4\uc740 4.4.7 \uc774\uc0c1\uc73c\ub85c \uc2e4\uc81c \uc124\uce58 \ubc84\uc804\uc744 \ub9de\ucd94\uace0 \ud504\ub85c\uc81d\ud2b8 \ud638\ud658\uc131\ub3c4 \ud655\uc778\ud55c\ub2e4. <strong>\uac80\uc99d \ubc29\ubc95:<\/strong> \uae68\ub057\ud55c \uc791\uc5c5 \ub514\ub809\ud130\ub9ac\uc5d0\uc11c frozen lockfile \uc124\uce58 \ud6c4 <code>npx nuxi info<\/code>\uc640 \ud328\ud0a4\uc9c0 \ub9e4\ub2c8\uc800\uc758 dependency tree\ub85c \ud574\uc11d\ub41c Nuxt\/Nitro\/Vite\ub97c \uae30\ub85d\ud55c\ub2e4. \ube4c\ub4dc \uc774\ubbf8\uc9c0 \uc548\uc5d0\uc11c\ub3c4 \uac19\uc740 \uba85\ub839\uc744 \uc2e4\ud589\ud574 \ub85c\uceec\uacfc \ub2e4\ub974\uc9c0 \uc54a\uc740\uc9c0 \ube44\uad50\ud55c\ub2e4.<\/p>\n<h3>2. \uacbd\ub85c \uacbd\uacc4 \uc218\uc815\uc740 monorepo\u00b7\uc5c5\ub85c\ub4dc \uae30\ub2a5\uc5d0\uc11c \ud2b9\ud788 \uc911\uc694\ud558\ub2e4<\/h3>\n<p><strong>\ubcc0\uacbd \ub0b4\uc6a9:<\/strong> \ub9b4\ub9ac\uc2a4\uc5d0\ub294 buildCache path boundary\uc640 sibling-directory traversal \ubc29\uc9c0, Vite allowDirs shared-prefix \ucc98\ub9ac \uc218\uc815\uc774 \uc801\ud600 \uc788\ub2e4. <strong>\uc2e4\uc81c \uc601\ud5a5:<\/strong> workspace\uc5d0\uc11c <code>apps\/web<\/code>\uacfc <code>apps\/web-admin<\/code>\ucc98\ub7fc \uc811\ub450\uc0ac\uac00 \uacb9\uce58\ub294 \ud3f4\ub354, alias\u00b7linked package, \uc0ac\uc6a9\uc790 \ud30c\uc77c \ubbf8\ub9ac\ubcf4\uae30 \uacbd\ub85c\uac00 \uc788\uc73c\uba74 \uc758\ub3c4\ud558\uc9c0 \uc54a\uc740 \ud574\uc11d \ub610\ub294 \ucc28\ub2e8\uc774 \ub098\ud0c0\ub0a0 \uc218 \uc788\ub2e4. <strong>\uc801\uc6a9\/\ud68c\ud53c \uc870\uac74:<\/strong> <code>vite.server.fs.allow<\/code>\ub97c \ub113\uac8c \uc9c0\uc815\ud574 \uc784\uc2dc\ub85c \ud574\uacb0\ud558\ub294 \uac83\uc740 \ub178\ucd9c\uba74\uc744 \ud0a4\uc6b4\ub2e4. \ud544\uc694\ud55c workspace \ub8e8\ud2b8\ub9cc \uba85\uc2dc\ud558\uace0, public directory\uc640 \ube44\ubc00 \uc124\uc815 \ud30c\uc77c\uc744 \ubd84\ub9ac\ud55c\ub2e4. <strong>\uac80\uc99d \ubc29\ubc95:<\/strong> \ud5c8\uc6a9\ub41c shared package import\ub294 \uc131\uacf5\ud558\uace0, \uc778\uc811 \ud615\uc81c \ub514\ub809\ud130\ub9ac\u00b7<code>..\/<\/code> \uc815\uaddc\ud654\u00b7\uc2ec\ubcfc\ub9ad \ub9c1\ud06c\ub97c \ud1b5\ud55c \ubbfc\uac10 \ud30c\uc77c \uc694\uccad\uc740 \uc2e4\ud328\ud558\ub294 fixture \ud14c\uc2a4\ud2b8\ub97c \ub9cc\ub4e0\ub2e4. \ud14c\uc2a4\ud2b8\ub294 macOS\uc640 Linux CI\uc5d0\uc11c \uac01\uac01 \uc2e4\ud589\ud55c\ub2e4.<\/p>\n<h3>3. payload extraction\u00b7SSR\uc740 HTML \uc2a4\ub0c5\uc0f7\uae4c\uc9c0 \uac80\uc99d\ud55c\ub2e4<\/h3>\n<p><strong>\ubcc0\uacbd \ub0b4\uc6a9:<\/strong> 4.4.7 changelog\uc5d0\ub294 Nitro\uac00 payload extraction \ud310\ub2e8 \uc804\uc5d0 <code>noSSR<\/code>\ub97c \ud560\ub2f9\ud558\ub3c4\ub85d \ud55c \uc218\uc815\uc774 \uc788\ub2e4. <strong>\uc2e4\uc81c \uc601\ud5a5:<\/strong> route rule, SPA fallback, islands \ub610\ub294 payload \ucd94\ucd9c\uc744 \uc4f0\ub294 \uc571\uc740 hydration \ub370\uc774\ud130\uc758 \uacbd\ub85c\u00b7\uc874\uc7ac \uc5ec\ubd80\uac00 \ubc14\ub014 \uc218 \uc788\ub2e4. \ub2e8\uc704 \ud14c\uc2a4\ud2b8\ub9cc\uc73c\ub85c\ub294 CDN\uc5d0\uc11c \uc2e4\uc81c HTML\uacfc payload URL\uc774 \ub9de\ubb3c\ub9ac\ub294\uc9c0\ub97c \ub193\uce58\uae30 \uc27d\ub2e4. <strong>\uc801\uc6a9 \uc870\uac74:<\/strong> SEO\uac00 \ud544\uc694\ud55c \ud398\uc774\uc9c0\ub97c \ubb34\uc2ec\ucf54 <code>ssr: false<\/code>\ub85c \uc804\ud658\ud558\uac70\ub098 payload \uce90\uc2dc\ub97c \uc0ac\uc6a9\uc790\ubcc4 \uc751\ub2f5\uacfc \uacf5\uc720\ud558\uba74 \uc548 \ub41c\ub2e4. <strong>\uac80\uc99d \ubc29\ubc95:<\/strong> production build\ub97c \ub85c\uceec\uc5d0\uc11c \ub744\uc6b4 \ub4a4 \ub85c\uadf8\uc778 \uc804\/\ud6c4 \ub300\ud45c URL\uc744 <code>curl -I<\/code> \ubc0f \ube0c\ub77c\uc6b0\uc800\ub85c \uac80\uc0ac\ud55c\ub2e4. HTML\uc758 canonical, payload \ucc38\uc870, 200\/404, cache-control, hydration error\ub97c Playwright \uc2a4\ub0c5\uc0f7\uacfc \ucf58\uc194 \uc624\ub958 0\uac74 \uae30\uc900\uc73c\ub85c \ube44\uad50\ud55c\ub2e4.<\/p>\n<h3>4. macOS socket hotfix\ub294 \uac1c\ubc1c \ud658\uacbd\uc744 \ucf54\ub4dc\ub85c \uace0\uc815\ud560 \uc774\uc720\ub2e4<\/h3>\n<p><strong>\ubcc0\uacbd \ub0b4\uc6a9:<\/strong> 4.4.8\/3.21.8\uc740 \uc9e7\uc740 socket name\uacfc tmp fallback\uc73c\ub85c macOS dev server \ubb38\uc81c\ub97c \ud574\uacb0\ud55c\ub2e4. <strong>\uc2e4\uc81c \uc601\ud5a5:<\/strong> \uae4a\uc740 workspace \uacbd\ub85c \ub610\ub294 \uae34 \uc784\uc2dc \ub514\ub809\ud130\ub9ac\uc5d0\uc11c HMR\uc774 \ubd88\uc548\uc815\ud558\uac70\ub098 \uc2dc\uc791\uc5d0 \uc2e4\ud328\ud558\ub294 \uacbd\uc6b0\uac00 \uc904\uc5b4\ub4e4 \uc218 \uc788\ub2e4. <strong>\uc801\uc6a9 \uc870\uac74:<\/strong> \uc774 \ubb38\uc81c\ub294 production Linux \ub7f0\ud0c0\uc784\uc758 \uc9c1\uc811 \ubcf4\uc548 \uc218\uc815\uc774 \uc544\ub2c8\ub77c \uac1c\ubc1c \uc11c\ubc84 hotfix\ub2e4. \uadf8\ub807\uc9c0\ub9cc \ub85c\uceec \uc7ac\ud604\uc131\uc774 \uae68\uc9c0\uba74 hotfix \uac80\uc99d\uacfc \ubcf4\uc548 \ud328\uce58 \ubc30\ud3ec\ub3c4 \uc9c0\uc5f0\ub41c\ub2e4. <strong>\uac80\uc99d \ubc29\ubc95:<\/strong> \uc2e4\uc81c \uac1c\ubc1c\uc790 Mac\uc5d0\uc11c \uae34 \uc808\ub300 \uacbd\ub85c\uc758 fresh clone, \uae30\uc874 clone, monorepo \ud328\ud0a4\uc9c0 \uac01\uac01\uc73c\ub85c <code>pnpm dev<\/code>\ub97c 3\ud68c \uc7ac\uc2dc\uc791\ud55c\ub2e4. HMR \ubcc0\uacbd \ubc18\uc601 \uc2dc\uac04, \uc18c\ucf13\/ENOENT \uc624\ub958, CPU \uc810\uc720\ub97c \uae30\ub85d\ud55c\ub2e4.<\/p>\n<h3>5. Vite 8.1.5\ub294 Nuxt \uc5c5\uadf8\ub808\uc774\ub4dc\uc640 \ubd84\ub9ac\ud574 \ud3c9\uac00\ud55c\ub2e4<\/h3>\n<p><strong>\ubcc0\uacbd \ub0b4\uc6a9:<\/strong> Vite\ub294 7\uc6d4 16\uc77c 8.1.5\ub97c \ub9b4\ub9ac\uc2a4\ud588\ub2e4. <strong>\uc2e4\uc81c \uc601\ud5a5:<\/strong> Nuxt\uac00 \uc9c1\uc811 \uad00\ub9ac\ud558\ub294 Vite \ubc84\uc804\uacfc \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 override\ud55c \ubc84\uc804\uc774 \ub2e4\ub974\uba74 \uae30\ub300\uc640 \ub2e4\ub978 build graph\uac00 \ub098\uc62c \uc218 \uc788\ub2e4. <strong>\uc801\uc6a9 \uc870\uac74:<\/strong> Nuxt\uac00 \uc120\uc5b8\ud55c \ud638\ud658 \ubc94\uc704\ub97c \ubb34\uc2dc\ud558\uace0 Vite major\ub97c \uac15\uc81c\ud558\uc9c0 \ub9d0\uace0, plugin\u00b7Vitest\u00b7legacy browser \uc124\uc815\ub3c4 \ud568\uaed8 \ud3c9\uac00\ud55c\ub2e4. <strong>\uac80\uc99d \ubc29\ubc95:<\/strong> <code>pnpm why vite<\/code>\ub85c \uc911\ubcf5\uc744 \ud655\uc778\ud558\uace0, cold build \uc2dc\uac04\u00b7\uc0b0\ucd9c\ubb3c \ud06c\uae30\u00b7SSR smoke\u00b7client navigation\u00b7HMR\uc744 baseline\uacfc \ube44\uad50\ud55c\ub2e4. bundle size\ub9cc \uc904\uc5b4\ub3c4 hydration \uc624\ub958\uac00 \uc0dd\uae30\uba74 \uc2b9\uaca9\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<h2>\uac1c\ubc1c\uc790 \uc2e4\ud589 \uacc4\ud68d<\/h2>\n<ul>\n<li><strong>P0:<\/strong> \uc0c8 \ube0c\ub79c\uce58\uc5d0\uc11c Nuxt 3\uc740 3.21.8, Nuxt 4\ub294 4.4.8 \uc774\uc0c1\uc73c\ub85c lockfile\uc744 \uac31\uc2e0\ud558\uace0 diff\ub97c \uac80\ud1a0\ud55c\ub2e4.<\/li>\n<li><strong>P0:<\/strong> <code>package.json<\/code>, lockfile, Dockerfile\/CI cache key\ub97c \uc810\uac80\ud574 \uc2e4\uc81c \ubc30\ud3ec \uc774\ubbf8\uc9c0\uac00 \uc0c8 dependency tree\ub97c \uc4f0\ub294\uc9c0 \uc99d\uba85\ud55c\ub2e4.<\/li>\n<li><strong>P0:<\/strong> Nuxt Security Advisories\ub97c \ud655\uc778\ud574 \uc0ac\uc6a9 \uc911 major\uc640 \ub178\ucd9c\ub41c route\uc5d0 \ud574\ub2f9\ud558\ub294 \ud56d\ubaa9\uc744 \ubcf4\uc548 \ud2f0\ucf13\uc5d0 \uc5f0\uacb0\ud55c\ub2e4.<\/li>\n<li><strong>P1:<\/strong> <code>nuxt.config.ts<\/code>\uc758 <code>vite.server.fs.allow<\/code>, alias, routeRules, Nitro preset\uc744 \ucd5c\uc18c \uad8c\ud55c \uc6d0\uce59\uc73c\ub85c \uac80\ud1a0\ud55c\ub2e4.<\/li>\n<li><strong>P1:<\/strong> CI\uc5d0 <code>nuxi build<\/code> \ub4a4 Nitro \uae30\ub3d9 \ubc0f \ub300\ud45c SSR\/API smoke test\ub97c \ub123\uace0 200\/404, hydration console \uc624\ub958, TTFB\ub97c \uad00\ucc30\ud55c\ub2e4.<\/li>\n<li><strong>P1:<\/strong> path traversal\u00b7\uc778\uc811 sibling\u00b7symlink fixture\ub97c <code>tests\/security\/path-boundary.spec.ts<\/code>\uc5d0 \ucd94\uac00\ud55c\ub2e4.<\/li>\n<li><strong>P2:<\/strong> macOS \uac1c\ubc1c\uc790\ub294 \uae34 \uacbd\ub85c fresh clone\uc5d0\uc11c dev\/HMR \uc7ac\uae30\ub3d9 \ud14c\uc2a4\ud2b8\ub97c \ud45c\uc900 onboarding \uccb4\ud06c\ub9ac\uc2a4\ud2b8\uc5d0 \ub123\ub294\ub2e4.<\/li>\n<li><strong>P2:<\/strong> Vite override\uac00 \uc788\ub2e4\uba74 \uc81c\uac70\ud55c baseline\uacfc \ube44\uad50\ud574 build \uc2dc\uac04\u00b7bundle \ud06c\uae30\u00b7SSR \ud68c\uadc0\ub97c \uae30\ub85d\ud55c\ub2e4.<\/li>\n<\/ul>\n<h2>\ub9ac\uc2a4\ud06c\uc640 \ud55c\uacc4<\/h2>\n<p>\ud328\uce58 \uc5c5\uadf8\ub808\uc774\ub4dc\ub3c4 plugin peer dependency, generated types, route payload, CI Node \ubc84\uc804\uc5d0 \uc601\ud5a5\uc744 \uc904 \uc218 \uc788\ub2e4. build \uc2e4\ud328, SSR 5xx, hydration error \uc99d\uac00, \uc608\uae30\uce58 \uc54a\uc740 \ud30c\uc77c \uc811\uadfc \ud5c8\uc6a9\/\ucc28\ub2e8\uc774 \ubc1c\uc0dd\ud558\uba74 \uc774\uc804 lockfile\uacfc \uc9c1\uc804 \uc774\ubbf8\uc9c0\ub85c \ub864\ubc31\ud55c\ub2e4. security hotfix\uc758 \uc0c1\uc138 \uacf5\uaca9 \uc870\uac74\uc740 advisory\uc5d0\uc11c \ud655\uc778\ud558\uae30 \uc804\uae4c\uc9c0 \ucd94\uc815\ud558\uc9c0 \ub9d0\uc544\uc57c \ud55c\ub2e4. \ub610\ud55c dev server \uc131\uacf5\uc740 production \uc548\uc804\uc131\uc758 \uc99d\uac70\uac00 \uc544\ub2c8\ub2e4. reverse proxy, object storage, CDN cache key, serverless filesystem \uad8c\ud55c\uae4c\uc9c0 \ubcc4\ub3c4 \uac80\uc99d\ud574\uc57c \ud55c\ub2e4.<\/p>\n<h2>FAQ<\/h2>\n<h3>Nuxt 4.4.7\uacfc 4.4.8 \uc911 \uc5b4\ub290 \ubc84\uc804\uc73c\ub85c \uc62c\ub824\uc57c \ud558\ub098?<\/h3>\n<p>Nuxt 4 \uc0ac\uc6a9\uc790\ub294 \ubcf4\uc548 hotfix \ub4a4 macOS dev server \uc218\uc815\uae4c\uc9c0 \ud3ec\ud568\ud55c 4.4.8 \uc774\uc0c1\uc744 staging\uc5d0\uc11c \uac80\uc99d\ud558\ub294 \uac83\uc774 \ud569\ub9ac\uc801\uc774\ub2e4. Nuxt 3 \uc0ac\uc6a9\uc790\ub294 \uac19\uc740 \uc774\uc720\ub85c 3.21.8 \uc774\uc0c1\uc744 \uac80\ud1a0\ud55c\ub2e4. \ub2e8, \uc870\uc9c1 lockfile\uacfc plugin \ud638\ud658\uc131\uc744 \ud568\uaed8 \ud14c\uc2a4\ud2b8\ud574\uc57c \ud55c\ub2e4.<\/p>\n<h3>Nuxt security hotfix\uba74 \uc6b4\uc601 \uc11c\ubc84\ub97c \uc989\uc2dc \uc7ac\ubc30\ud3ec\ud574\uc57c \ud558\ub098?<\/h3>\n<p>\uc778\ud130\ub137\uc5d0 \ub178\ucd9c\ub41c SSR\/API \uc571\uc774\ub77c\uba74 advisory \ubc94\uc704 \ud655\uc778\uacfc \ud328\uce58 \uac80\uc99d\uc744 \uae34\uae09 \uc6b0\uc120\uc21c\uc704\ub85c \ub454\ub2e4. \ub2e4\ub9cc \ubb34\uac80\uc99d \uc989\uc2dc \ubc30\ud3ec\ubcf4\ub2e4 \uae68\ub057\ud55c \uc124\uce58\u00b7SSR smoke\u00b7\uacbd\ub85c \uacbd\uacc4 \ud14c\uc2a4\ud2b8\ub97c \uac70\uce5c canary \ubc30\ud3ec\uac00 \ub354 \uc548\uc804\ud558\ub2e4.<\/p>\n<h3>macOS \uac1c\ubc1c \uc11c\ubc84 hotfix\uac00 Linux \ubc30\ud3ec \uc131\ub2a5\ub3c4 \ub192\uc774\ub098?<\/h3>\n<p>\uacf5\uc2dd \ub178\ud2b8\uac00 \ub9d0\ud558\ub294 \uc9c1\uc811 \ub300\uc0c1\uc740 macOS dev server\uc758 socket \ucc98\ub9ac\ub2e4. Linux production \uc131\ub2a5 \ud5a5\uc0c1\uc73c\ub85c \uc77c\ubc18\ud654\ud560 \uadfc\uac70\ub294 \uc5c6\ub2e4. production\uc5d0\ub294 \ubcc4\ub3c4 build\u00b7TTFB\u00b7\uc624\ub958\uc728 \uce21\uc815\uc774 \ud544\uc694\ud558\ub2e4.<\/p>\n<h2>\ucd9c\ucc98 \ubc0f \ucd94\uac00 \uc77d\uae30<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.4.8\" target=\"_blank\" rel=\"noopener\">Nuxt v4.4.8 \uacf5\uc2dd \ub9b4\ub9ac\uc2a4<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v3.21.8\" target=\"_blank\" rel=\"noopener\">Nuxt v3.21.8 \uacf5\uc2dd \ub9b4\ub9ac\uc2a4<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.4.7\" target=\"_blank\" rel=\"noopener\">Nuxt v4.4.7 security hotfix<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v3.21.7\" target=\"_blank\" rel=\"noopener\">Nuxt v3.21.7 security hotfix<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/security\/advisories\" target=\"_blank\" rel=\"noopener\">Nuxt GitHub Security Advisories<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitejs\/vite\/releases\/tag\/v8.1.5\" target=\"_blank\" rel=\"noopener\">Vite v8.1.5 \uacf5\uc2dd \ub9b4\ub9ac\uc2a4<\/a><\/li>\n<li><a href=\"https:\/\/nuxt.com\/docs\/4.x\/getting-started\/upgrade\" target=\"_blank\" rel=\"noopener\">Nuxt \uacf5\uc2dd \uc5c5\uadf8\ub808\uc774\ub4dc \uac00\uc774\ub4dc<\/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>Nuxt 4.4.7\/4.4.8 \ubc0f 3.21.7\/3.21.8 \ubcf4\uc548\u00b7macOS hotfix\ub97c lockfile, SSR, Nitro, \ubc30\ud3ec \uad00\uc810\uc5d0\uc11c \uac80\uc99d\ud558\ub294 \ubc29\ubc95.<\/p>\n","protected":false},"author":1,"featured_media":260,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-261","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\/261","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=261"}],"version-history":[{"count":0,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/261\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media\/260"}],"wp:attachment":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media?parent=261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/categories?post=261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/tags?post=261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}