{"id":474,"date":"2026-08-20T00:03:14","date_gmt":"2026-08-20T00:03:14","guid":{"rendered":"https:\/\/gilnas.synology.me\/wordpress\/474\/"},"modified":"2026-08-20T00:03:14","modified_gmt":"2026-08-20T00:03:14","slug":"nuxt-%ec%84%9c%eb%b2%84-%ea%b2%bd%ea%b3%84%c2%b7%ed%85%8c%ec%8a%a4%ed%8a%b8-%ec%95%88%ec%a0%95%ed%99%94-3%ec%9d%bc-%ec%b2%b4%ed%81%ac%ed%8f%ac%ec%9d%b8%ed%8a%b8-nuxt-runtime-and-test-stability-check","status":"publish","type":"post","link":"https:\/\/gilnas.synology.me\/wordpress\/474\/","title":{"rendered":"Nuxt \uc11c\ubc84 \uacbd\uacc4\u00b7\ud14c\uc2a4\ud2b8 \uc548\uc815\ud654 3\uc77c \uccb4\ud06c\ud3ec\uc778\ud2b8 | Nuxt Runtime and Test Stability Checkpoints"},"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-18.png\" alt=\"Nuxt \uc11c\ubc84 \uacbd\uacc4\u00b7\ud14c\uc2a4\ud2b8 \uc548\uc815\ud654 3\uc77c \uccb4\ud06c\ud3ec\uc778\ud2b8 | Nuxt Runtime and Test Stability Checkpoints\" \/><\/figure>\n<p><strong>\uc694\uc57d:<\/strong> 2026\ub144 8\uc6d4 17~20\uc77c Nuxt\u00b7Vue\u00b7Vite\u00b7Nitro \ud504\ub860\ud2b8\uc5d4\ub4dc \uc0dd\ud0dc\uacc4\uc758 \ud655\uc778 \uac00\ub2a5\ud55c \ubcc0\ud654\ub294 \uc11c\ubc84 \ub77c\uc6b0\ud305\/\uc138\uc158 \uc548\uc804\uc131, \ud14c\uc2a4\ud2b8 \uc2e4\ud589 \uc548\uc815\uc131, \uac1c\ubc1c \uc11c\ubc84\uc758 \ud574\uc11d \uc815\ud655\ub3c4, \uadf8\ub9ac\uace0 CSS\u00b7\ud328\ud0a4\uc9c0 \uad00\ub9ac \ub3c4\uad6c\uc758 \uc6b4\uc601 \uc815\ube44\uc5d0 \ubaa8\uc600\ub2e4. \uc774\ubc88 3\uc77c \ub9ac\ud3ec\ud2b8\uc758 \ud575\uc2ec\uc740 \u2018\uc989\uc2dc \ub300\uaddc\ubaa8 \uc5c5\uadf8\ub808\uc774\ub4dc\u2019\ubcf4\ub2e4 H3\uc640 Vitest\uc758 \uc815\uc2dd \ud328\uce58\ub97c \uba3c\uc800 \uac80\uc99d\ud558\uace0, Nuxt\u00b7Vite\uc758 main \ubcc0\uacbd\uc740 \ub9b4\ub9ac\uc2a4 \uc804 \uc2e0\ud638\ub85c \ubd84\ub9ac\ud574 CI\uc640 \ub85c\uceec \uac1c\ubc1c \ud658\uacbd\uc744 \uc810\uac80\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n<h2>\ud575\uc2ec \ub2f5\ubcc0: \uc9c0\uae08 Nuxt \ud300\uc774 \ud574\uc57c \ud560 \uc77c<\/h2>\n<p><strong>\uacb0\ub860\ubd80\ud130 \ub9d0\ud558\uba74<\/strong>, \ubc30\ud3ec \uc911\uc778 Nuxt \uc571\uc740 H3 2.0.1-rc.27\uc758 \ub77c\uc6b0\ud2b8 \uaddc\uce59\u00b7\uc138\uc158\u00b7JSON-RPC \uad00\ub828 \ubcc0\uacbd\uacfc Vitest 4.1.11\uc758 \ube0c\ub77c\uc6b0\uc800 \ud14c\uc2a4\ud2b8 \uc218\uc815 \uc0ac\ud56d\uc744 \uc758\uc874\uc131 \uc7a0\uae08 \ud30c\uc77c \uae30\uc900\uc73c\ub85c \uac80\ud1a0\ud560 \uac00\uce58\uac00 \uc788\ub2e4. \ubc18\uba74 Nuxt\uc640 Vite\uc5d0\uc11c \ubcf4\uc778 hydration\u00b7symlink\u00b7sourcemap \uad00\ub828 \uc218\uc815\uc740 <strong>main \ube0c\ub79c\uce58\uc758 \ubbf8\ucd9c\uc2dc \uc791\uc5c5<\/strong>\uc774\ubbc0\ub85c, \ud604\uc7ac \uc548\uc815 \ubc84\uc804\uc5d0 \ud3ec\ud568\ub410\ub2e4\uace0 \uac00\uc815\ud558\uac70\ub098 \ud504\ub85c\ub355\uc158\uc5d0 \uc9c1\uc811 \ubc18\uc601\ud558\uba74 \uc548 \ub41c\ub2e4.<\/p>\n<ul>\n<li><strong>\uc6b4\uc601:<\/strong> H3\ub97c \uc9c1\uc811 \ub610\ub294 Nuxt \uc11c\ubc84 \uacbd\ub85c\ub85c \uc0ac\uc6a9\ud558\ub294 \uc11c\ube44\uc2a4\ub294 \uc138\uc158 \ub9cc\ub8cc, JSON-RPC \uc694\uccad \ud5e4\ub354, \ud504\ub85d\uc2dc \uc6d0\ubcf8(origin) \ub3d9\uc791\uc744 \uc2a4\ud14c\uc774\uc9d5\uc5d0\uc11c \uc7ac\ud604\ud55c\ub2e4.<\/li>\n<li><strong>\ud488\uc9c8:<\/strong> Vitest 4.1.11\uc744 \uc0ac\uc6a9\ud558\ub294 \ube0c\ub77c\uc6b0\uc800 \ud14c\uc2a4\ud2b8\ub294 \uc800\ub514\uc2a4\ud06c CI \ub7ec\ub108\uc640 \ub3d9\uc2dc\uc131 \uc81c\ud55c \uc2dc\ub098\ub9ac\uc624\ub97c \ud55c \ubc88 \ub354 \uc2e4\ud589\ud55c\ub2e4.<\/li>\n<li><strong>\uac1c\ubc1c \uacbd\ud5d8:<\/strong> \ubaa8\ub178\ub808\ud3ec\/\ub9c1\ud06c \ud328\ud0a4\uc9c0\ub77c\uba74 Vite\uc758 symlink \ubc0f sourcemap \uc218\uc815\uc774 \ucd9c\uc2dc\ub420 \ub54c\uae4c\uc9c0 \ud68c\ud53c \uc124\uc815\uacfc \uc7ac\ud604 \ud14c\uc2a4\ud2b8\ub97c \uc720\uc9c0\ud55c\ub2e4.<\/li>\n<\/ul>\n<h2>3\uc77c \uacb0\ub860: \ub7f0\ud0c0\uc784 \uacbd\uacc4\uc640 \uac1c\ubc1c \ud53c\ub4dc\ubc31 \ub8e8\ud504\ub97c \uac19\uc774 \ub2e4\ub4ec\ub294 \ud750\ub984<\/h2>\n<p>\uc774\ubc88 \ucc3d\uc5d0\uc11c Nuxt \ub610\ub294 Vue\uc758 \uc0c8 \uc815\uc2dd \ub9b4\ub9ac\uc2a4\ub294 \ud655\uc778\ub418\uc9c0 \uc54a\uc558\ub2e4. \uadf8\ub807\ub2e4\uace0 \ubcc0\ud654\uac00 \uc5c6\uc5c8\ub358 \uac83\uc740 \uc544\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/h3js\/h3\/releases\/tag\/v2.0.1-rc.27\" target=\"_blank\" rel=\"noopener\">H3 2.0.1-rc.27 \ub9b4\ub9ac\uc2a4<\/a>\ub294 route rules \uc5d4\uc9c4\uacfc \uc138\uc158 \ub3d9\uc791\uc744 \ud655\uc7a5\ud558\uba74\uc11c, JSON-RPC\uc758 \ucf58\ud150\uce20 \ud0c0\uc785\u00b7origin\u00b7\ubc30\uce58 \ud06c\uae30 \uac80\uc99d\uacfc \uc0c1\ud0dc \uc751\ub2f5 \uc815\ub9ac\ub97c \ud3ec\ud568\ud588\ub2e4. \uc774\ub294 Nuxt \uc11c\ubc84 API\uac00 \uc678\ubd80 \uc785\ub825\uc744 \ubc1b\uc544\ub4e4\uc774\ub294 \uacbd\uacc4\uc5d0\uc11c \u2018\ub77c\uc6b0\ud305 \ud3b8\uc758\uc131\u2019\uacfc \u2018\uc694\uccad \uac80\uc99d\u2019\uc744 \ud568\uaed8 \ub2e4\ub904\uc57c \ud55c\ub2e4\ub294 \uc2e4\ubb34\uc801 \uc2e0\ud638\ub2e4.<\/p>\n<p>\ub3d9\uc2dc\uc5d0 <a href=\"https:\/\/github.com\/vitest-dev\/vitest\/releases\/tag\/v4.1.11\" target=\"_blank\" rel=\"noopener\">Vitest 4.1.11<\/a>\uc740 \uc804\uc5ed \ub3d9\uc2dc\uc131 \uc81c\ud55c\uc744 \ub418\uc0b4\ub9ac\uace0 browser iframe URL \uc778\ucf54\ub529, \ub0ae\uc740 \ub514\uc2a4\ud06c \uacf5\uac04\uc5d0\uc11c Playwright\/Chromium GC \ub3d9\uc791\uc744 \uc190\ubd24\ub2e4. \ub9b4\ub9ac\uc2a4 \ub178\ud2b8\uc5d0 \uba85\uc2dc\ub41c \uc218\uc815\uc774\ubbc0\ub85c, \ube0c\ub77c\uc6b0\uc800 \uae30\ubc18 \ucef4\ud3ec\ub10c\ud2b8\/E2E \ud14c\uc2a4\ud2b8\ub97c CI\uc5d0\uc11c \ub3cc\ub9ac\ub294 \ud300\uc5d0\ub294 \ud604\uc7ac \uc801\uc6a9 \uac00\ub2a5\ud55c \uc548\uc815\ud654 \ud6c4\ubcf4\ub2e4. <a href=\"https:\/\/github.com\/vitest-dev\/vitest\/releases\/tag\/v5.0.0-rc.2\" target=\"_blank\" rel=\"noopener\">Vitest 5.0.0-rc.2<\/a>\ub3c4 \uac19\uc740 \uae30\uac04 \ub098\uc654\uc9c0\ub9cc RC\uc774\ubbc0\ub85c \ubcc4\ub3c4\uc758 \ud638\ud658\uc131 \ube0c\ub79c\uce58\uc5d0\uc11c\ub9cc \ud3c9\uac00\ud558\ub294 \ud3b8\uc774 \uc548\uc804\ud558\ub2e4.<\/p>\n<h2>\ud750\ub984 1 \u2014 H3 RC: \ub77c\uc6b0\ud305\u00b7\uc138\uc158\u00b7RPC\ub97c \u2018\uc11c\ubc84 \uacbd\uacc4\u2019\ub85c \uc810\uac80<\/h2>\n<h3>\ud655\uc778\ub41c \uc0ac\uc2e4<\/h3>\n<p>H3 2.0.1-rc.27\uc740 \uc0c8 route rules \uc5d4\uc9c4, sliding expiration\uc744 \uc704\ud55c opt-in <code>idleTimeout<\/code>, \ud070 \uc138\uc158 payload\uc758 \ub7f0\ud0c0\uc784 \ud638\ud658\uc131 \uc218\uc815, \uadf8\ub9ac\uace0 JSON-RPC\uc5d0\uc11c JSON content-type \uc694\uad6c\u00b7origin \uac80\uc99d\u00b7\ubc30\uce58 \ud06c\uae30 \uc0c1\ud55c\uc744 \ucd94\uac00\ud588\ub2e4. fingerprint \uae30\ubcf8\uac12\ub3c4 SHA-256\uc73c\ub85c \ubc14\ub00c\uc5c8\ub2e4. \ubaa8\ub450 \ub9b4\ub9ac\uc2a4 \ubcf8\ubb38\uc5d0 \uae30\ub85d\ub41c \ud56d\ubaa9\uc774\ub2e4.<\/p>\n<h3>\uc758\ubbf8\uc640 \uc801\uc6a9 \ubc94\uc704<\/h3>\n<p>\uc774 \ubcc0\uacbd\uc740 \ubaa8\ub4e0 Nuxt \uc571\uc5d0 \uc989\uc2dc \uc601\ud5a5\uc744 \uc900\ub2e4\ub294 \ub73b\uc740 \uc544\ub2c8\ub2e4. \ud558\uc9c0\ub9cc Nuxt\uc758 server route, \ud504\ub85d\uc2dc, \uc138\uc158 \ub610\ub294 RPC \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \uc9c1\uc811 \uad6c\uc131\ud55c \uc11c\ube44\uc2a4\ub77c\uba74 \uc694\uccad \ud30c\uc2f1\uacfc \uc138\uc158 \uc218\uba85 \uc815\ucc45\uc774 \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uacfc \ubcf4\uc548\uc5d0 \ub9cc\ub098\ub294 \uc9c0\uc810\uc774\ub2e4. \ud2b9\ud788 \uc2ac\ub77c\uc774\ub529 \ub9cc\ub8cc\uac00 \ud544\uc694\ud55c \ub85c\uadf8\uc778 \ud750\ub984\uc5d0\uc11c\ub294 \u2018\ud65c\ub3d9 \uc911\uc778 \uc0ac\uc6a9\uc790\ub294 \uc720\uc9c0, \uc720\ud734 \uc0ac\uc6a9\uc790\ub294 \ub9cc\ub8cc\u2019\ub77c\ub294 \uc815\ucc45\uc774 \uba85\uc2dc\uc801\uc73c\ub85c \uac80\uc99d\ub3fc\uc57c \ud55c\ub2e4. RC\uc774\ubbc0\ub85c \uc7a0\uae08 \ud30c\uc77c\uc744 \ubb34\uc2ec\ucf54 \uac31\uc2e0\ud558\uc9c0 \ub9d0\uace0, \uc5c5\uadf8\ub808\uc774\ub4dc \ube0c\ub79c\uce58\uc5d0\uc11c route rule \uc6b0\uc120\uc21c\uc704\uc640 \uce90\uc2dc\/\ub9ac\ub2e4\uc774\ub809\ud2b8 \ud68c\uadc0\ub97c \ud655\uc778\ud574\uc57c \ud55c\ub2e4.<\/p>\n<ul>\n<li>\uc138\uc158 \uc0dd\uc131\u00b7\uac31\uc2e0\u00b7\uc720\ud734 \ub9cc\ub8cc\u00b7\ud070 payload\ub97c \ud3ec\ud568\ud55c \ud1b5\ud569 \ud14c\uc2a4\ud2b8\ub97c \ucd94\uac00\ud55c\ub2e4.<\/li>\n<li>JSON-RPC\ub97c \uc4f0\uba74 Content-Type, \ud5c8\uc6a9 origin, \ub300\ub7c9 \ubc30\uce58 \uac70\ubd80\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \uc2dc\ud5d8\ud55c\ub2e4.<\/li>\n<li>\ud504\ub85d\uc2dc \ub300\uc0c1\uc774 \ub0b4\ubd80 origin\uc744 \ubc97\uc5b4\ub098\uc9c0 \uc54a\ub294\uc9c0 \uc2a4\ud14c\uc774\uc9d5 \ub85c\uadf8\uc640 allowlist\ub85c \ud655\uc778\ud55c\ub2e4.<\/li>\n<\/ul>\n<h2>\ud750\ub984 2 \u2014 \ud14c\uc2a4\ud2b8 \ub3c4\uad6c: \uc548\uc815 \ud328\uce58\uc640 \ucc28\uae30 RC\ub97c \ubd84\ub9ac<\/h2>\n<h3>Vitest 4.1.11\uc740 \ud604\uc7ac \uac80\uc99d \ud6c4\ubcf4<\/h3>\n<p>\uc815\uc2dd \ud328\uce58\uc778 Vitest 4.1.11\uc740 \ud14c\uc2a4\ud2b8 lifecycle\uc758 \uc804\uc5ed \ub3d9\uc2dc\uc131 \ud55c\ub3c4, browser tester iframe ID \uc778\ucf54\ub529, \uc800\ub514\uc2a4\ud06c \uc0c1\ud669\uc758 Chromium GC, fs allowlist\ub85c\uc758 redirect mock \uc81c\ud55c\uc744 \uc218\uc815\ud588\ub2e4. \ubcd1\ub82c \ud14c\uc2a4\ud2b8\uac00 \ub9ce\uc740 Nuxt \ucef4\ud3ec\ub10c\ud2b8 \uc800\uc7a5\uc18c\ub77c\uba74 flaky failure\ub97c \u2018\ud14c\uc2a4\ud2b8 \ucf54\ub4dc \ud0d3\u2019\uc73c\ub85c \ub2e8\uc815\ud558\uae30 \uc804\uc5d0 \uc774 \ud328\uce58\uc758 \ud6a8\uacfc\ub97c \ud655\uc778\ud560 \ub9cc\ud558\ub2e4. \ub2e4\ub9cc \ud504\ub85c\uc81d\ud2b8\uc758 Node\u00b7Playwright\u00b7\ube0c\ub77c\uc6b0\uc800 \uc870\ud569\uc5d0\uc11c \ud55c \ubc88\uc758 clean install\uacfc \uc7ac\uc2e4\ud589\uc73c\ub85c \uac80\uc99d\ud574\uc57c \ud55c\ub2e4.<\/p>\n<h3>Vitest 5.0.0-rc.2\ub294 \uc0ac\uc804 \ud3c9\uac00 \ud2b8\ub799<\/h3>\n<p>\ub3d9 \uae30\uac04\uc758 5.0.0-rc.2\ub294 GitHub Actions summary title \ub4f1 \uae30\ub2a5\uacfc worker\/restart\u00b7browser \uad00\ub828 \uc218\uc815\uc744 \ub2f4\uc740 <strong>\ub9b4\ub9ac\uc2a4 \ud6c4\ubcf4<\/strong>\ub2e4. \uc0c8 \uba54\uc774\uc800\ub97c \ub3c4\uc785\ud560 \uadfc\uac70\uac00 \ub420 \uc218\ub294 \uc788\uc5b4\ub3c4 \uc548\uc815 \ubc84\uc804 \ub300\uccb4\ub85c \ud45c\ud604\ud560 \uc218\ub294 \uc5c6\ub2e4. CI \ub9e4\ud2b8\ub9ad\uc2a4\uc5d0 RC job\uc744 \ucd94\uac00\ud558\ub418, \uae30\ubcf8 \ubcd1\ud569 \uac8c\uc774\ud2b8\ub294 \uac80\uc99d\ub41c \uc548\uc815 \ub77c\uc778\uc5d0 \ub0a8\uaca8 \ub450\ub294 \ubc29\uc2dd\uc774 \ube44\uc6a9\uc744 \ub0ae\ucd98\ub2e4.<\/p>\n<h2>\ud750\ub984 3 \u2014 Nuxt\u00b7Vite main \ubcc0\uacbd: \ubc30\ud3ec \uacf5\uc9c0\uac00 \uc544\ub2cc \uc120\ud589 \uc9c0\ud45c<\/h2>\n<p><a href=\"https:\/\/github.com\/nuxt\/nuxt\/commit\/dd6b22841c8f7107ded5c97142bb60a48dfbb8b4\" target=\"_blank\" rel=\"noopener\">Nuxt main\uc758 hydration \uc218\uc815<\/a>\uc740 \uc544\uc9c1 \uac00\uc838\uc624\uc9c0 \uc54a\uc740 <code>useAsyncData<\/code>\uac00 hydration \uc911 await \uacb0\uacfc\ub85c \ud574\uc11d\ub418\uc9c0 \uc54a\uac8c \uc870\uc815\ud55c\ub2e4. \uac19\uc740 \uc2dc\uc810\uc758 main\uc5d0\ub294 base prefix\uac00 \ubd99\uc740 Vite \ub0b4\ubd80 URL\uc744 dev \uc11c\ubc84\ub85c \ub77c\uc6b0\ud305\ud558\ub294 \uc218\uc815, plugin filter\ub85c <code>isVue<\/code> \ud638\ucd9c\uc744 \uc62e\uae30\ub294 \uc131\ub2a5 \uc791\uc5c5, e2e setup timeout \ub4a4 dev server\uac00 \uace0\uc544\uac00 \ub418\ub294 \uac83\uc744 \ub9c9\ub294 \ud14c\uc2a4\ud2b8 \ubcc0\uacbd\ub3c4 \uc788\ub2e4. \uc774\ub294 <strong>\ubbf8\ucd9c\uc2dc(main) \ubcc0\uacbd<\/strong>\uc774\uba70, \ubc84\uc804 \ubc88\ud638\ub098 \ub9b4\ub9ac\uc2a4 \ub178\ud2b8\uac00 \uc5c6\ub294 \uc0c1\ud0dc\uc5d0\uc11c \uc77c\ubc18 \ud504\ub85c\uc81d\ud2b8 \uc758\uc874\uc131\uc73c\ub85c \uace0\uc815\ud558\uba74 \uc548 \ub41c\ub2e4.<\/p>\n<p><a href=\"https:\/\/github.com\/vitejs\/vite\/commit\/8413052731836d4aaf3eb94a0f25788dd35d2888\" target=\"_blank\" rel=\"noopener\">Vite main\uc758 preserveSymlinks \uc218\uc815<\/a>, <a href=\"https:\/\/github.com\/vitejs\/vite\/commit\/05a003e6a17a84d75f907ea0f1598bc39b8dce6c\" target=\"_blank\" rel=\"noopener\">sourcemap \uacbd\ub85c \ud574\uc11d \uc218\uc815<\/a>\ub3c4 \uac19\uc740 \uc6d0\uce59\uc744 \ub530\ub978\ub2e4. \uc6cc\ud06c\uc2a4\ud398\uc774\uc2a4\u00b7npm link\u00b7\uc0ac\ub0b4 \ud328\ud0a4\uc9c0\ucc98\ub7fc symlink\ub97c \uc4f0\ub294 \uac1c\ubc1c \ud658\uacbd, \uc624\ub958 \ucd94\uc801\uc6a9 sourcemap\uc744 \uc5c5\ub85c\ub4dc\ud558\ub294 \ubc30\ud3ec \ud750\ub984\uc5d0\uc11c \uc7ac\ud604 \ucf00\uc774\uc2a4\ub97c \ubcf4\uc720\ud558\uace0 \ub2e4\uc74c \uc815\uc2dd \ub9b4\ub9ac\uc2a4\uc758 changelog\ub97c \uae30\ub2e4\ub9ac\ub294 \uac83\uc774 \uc801\uc808\ud558\ub2e4. \uc804\ub9dd\uc740 \u2018\ucd9c\uc2dc \uc2dc \ud574\ub2f9 \ubb38\uc81c \uc601\uc5ed\uc774 \uac1c\uc120\ub420 \uac00\ub2a5\uc131\u2019\uae4c\uc9c0\uc774\uba70, \uc9c0\uae08 \ud574\uacb0\ub410\ub2e4\ub294 \uc8fc\uc7a5\uc740 \uadfc\uac70\uac00 \uc5c6\ub2e4.<\/p>\n<h2>\ud750\ub984 4 \u2014 \uc2a4\ud0c0\uc77c\ub9c1\uacfc \uc124\uce58 \uc7ac\ud604\uc131: UnoCSS\u00b7pnpm\uc758 \uc791\uc740 \uc6b4\uc601 \ubcc0\ud654<\/h2>\n<p><a href=\"https:\/\/github.com\/unocss\/unocss\/releases\/tag\/v66.8.0\" target=\"_blank\" rel=\"noopener\">UnoCSS 66.8.0<\/a>\uc740 reset\/preset-wind4\uc5d0 \uc0c8 Tailwind \ubcc0\uacbd\uc744 \ubc18\uc601\ud558\uace0 <code>open<\/code> pseudo class \uc0dd\uc131 \ubc0f playground \ud3ec\ub9f7\ud305\uc744 \ubcf4\uac15\ud588\ub2e4. Nuxt\uc5d0\uc11c UnoCSS\uc640 Tailwind \ud638\ud658 preset\uc744 \uc4f0\ub294 \uacbd\uc6b0, \uc0c1\ud0dc \uae30\ubc18 \uc2a4\ud0c0\uc77c\uacfc reset \uacb0\uacfc\ub97c visual regression\uc73c\ub85c \ud655\uc778\ud560 \uc774\uc720\uac00 \ub41c\ub2e4. \ub300\uaddc\ubaa8 \ub514\uc790\uc778 \uc2dc\uc2a4\ud15c \ubcc0\uacbd\uc73c\ub85c \uacfc\uc7a5\ud560 \ud544\uc694\ub294 \uc5c6\uc9c0\ub9cc, preset \uc5c5\ub370\uc774\ud2b8\ub294 \uc0dd\uc131 CSS \uacb0\uacfc\ub97c \ubc14\uafc0 \uc218 \uc788\uc73c\ubbc0\ub85c \ud575\uc2ec \ud654\uba74 \uc2a4\ub0c5\uc0f7\uc744 \ud568\uaed8 \ube44\uad50\ud558\ub294 \ud3b8\uc774 \ub0ab\ub2e4.<\/p>\n<p><a href=\"https:\/\/github.com\/pnpm\/pnpm\/releases\/tag\/v12.0.0-rc.7\" target=\"_blank\" rel=\"noopener\">pnpm 12.0.0-rc.7<\/a>\uc740 \uc124\uce58 \ud2b8\ub9ac\uc758 <code>.modules.yaml<\/code>\uc5d0 \ub354 \uc774\uc0c1 \uacfc\uac70 registry \uc815\ubcf4\ub97c \uae30\ub85d\ud558\uc9c0 \uc54a\uace0, \uc124\uc815\ub41c registry\ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d \uc815\ub9ac\ud588\ub2e4. \ub610\ud55c global virtual store\uac00 \ucf1c\uc9c4 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c spawn\ub418\ub294 \ud504\ub85c\uc138\uc2a4\uc758 \uacbd\ub85c\/\ub9c1\ucee4 \uc77c\uad00\uc131\ub3c4 \ub2e4\ub8ec\ub2e4. \uc774\uac83 \uc5ed\uc2dc RC\ub2e4. private registry\ub97c \uac70\uce58\uac70\ub098 global virtual store\ub97c \ud65c\uc6a9\ud558\ub294 Nuxt \ubaa8\ub178\ub808\ud3ec\ub9cc \uaca9\ub9ac\ub41c CI\uc5d0\uc11c install\u00b7<code>pnpm why<\/code>\u00b7\ube4c\ub4dc\u00b7\ud14c\uc2a4\ud2b8 \uc21c\uc11c\ub85c \ud655\uc778\ud55c\ub2e4.<\/p>\n<h2>\ud504\ub860\ud2b8\uc5d4\ub4dc \uac1c\ubc1c\uc790 \uccb4\ud06c\ub9ac\uc2a4\ud2b8<\/h2>\n<ul>\n<li><strong>\uc11c\ubc84:<\/strong> H3 RC \ud14c\uc2a4\ud2b8 \ube0c\ub79c\uce58\uc5d0\uc11c route rules, session idle timeout, RPC origin\/Content-Type, \ud504\ub85d\uc2dc \uacbd\uacc4\ub97c \ud14c\uc2a4\ud2b8\ud588\ub2e4.<\/li>\n<li><strong>\ud14c\uc2a4\ud2b8:<\/strong> Vitest 4.1.11\ub85c \uace0\uc815\ud55c \ub4a4 \uc800\ub514\uc2a4\ud06c CI \ub7ec\ub108\uc640 \ubcd1\ub82c lifecycle \ud14c\uc2a4\ud2b8\ub97c \uc7ac\uc2e4\ud589\ud588\ub2e4. Vitest 5 RC\ub294 non-blocking matrix\ub85c \ubd84\ub9ac\ud588\ub2e4.<\/li>\n<li><strong>Nuxt:<\/strong> <code>useAsyncData<\/code> hydration, base path \uac1c\ubc1c \uc11c\ubc84, e2e timeout\uc744 \uc7ac\ud604\ud558\ub294 \ud14c\uc2a4\ud2b8\ub97c \uc720\uc9c0\ud558\ub418 main \ucee4\ubc0b\uc744 \ud504\ub85c\ub355\uc158 \uc758\uc874\uc131\uc73c\ub85c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc558\ub2e4.<\/li>\n<li><strong>Vite:<\/strong> symlink \ud328\ud0a4\uc9c0\uc640 sourcemap \uc5c5\ub85c\ub4dc\ub97c \uc2e4\uc81c \ubaa8\ub178\ub808\ud3ec\/\ubc30\ud3ec \uc124\uc815\uc5d0\uc11c \ud655\uc778\ud558\uace0 \ub2e4\uc74c stable changelog\ub97c \uad6c\ub3c5\ud588\ub2e4.<\/li>\n<li><strong>\ub3c4\uad6c:<\/strong> UnoCSS preset \uc5c5\ub370\uc774\ud2b8\ub294 \ud575\uc2ec UI snapshot\uc73c\ub85c, pnpm 12 RC\ub294 registry \uc804\ud658\uacfc clean install\uc73c\ub85c \uac80\uc99d\ud588\ub2e4.<\/li>\n<\/ul>\n<h2>\uc9e7\uc740 Q&amp;A<\/h2>\n<h3>\uc9c0\uae08 Nuxt \uc790\uccb4\ub97c \uc5c5\uadf8\ub808\uc774\ub4dc\ud574\uc57c \ud558\ub098?<\/h3>\n<p>\uc774\ubc88 72\uc2dc\uac04\uc5d0 Nuxt\uc758 \uc0c8 \uc815\uc2dd \ub9b4\ub9ac\uc2a4\ub294 \ud655\uc778\ub418\uc9c0 \uc54a\uc558\ub2e4. main \ucee4\ubc0b\uc740 \ud5a5\ud6c4 \ubcc0\uacbd\uc758 \uc2e0\ud638\uc77c \ubfd0\uc774\ubbc0\ub85c, \ud604\uc7ac\ub294 \uc7ac\ud604 \ud14c\uc2a4\ud2b8\ub97c \uc900\ube44\ud558\uace0 \ub2e4\uc74c \uacf5\uc2dd \ub9b4\ub9ac\uc2a4 \ub178\ud2b8\ub97c \uae30\uc900\uc73c\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \uacb0\uc815\uc744 \ub0b4\ub9ac\ub294 \uac83\uc774 \ub9de\ub2e4.<\/p>\n<h3>\uac00\uc7a5 \uba3c\uc800 \uc801\uc6a9\ud574 \ubcfc \ud328\uce58\ub294 \ubb34\uc5c7\uc778\uac00?<\/h3>\n<p>\ube0c\ub77c\uc6b0\uc800 \ud14c\uc2a4\ud2b8\ub098 \ubcd1\ub82c CI \ubb38\uc81c\uac00 \uc788\ub294 \uc800\uc7a5\uc18c\ub77c\uba74 \uc815\uc2dd \ub9b4\ub9ac\uc2a4\uc778 Vitest 4.1.11\uc744 \uc2a4\ud14c\uc774\uc9d5\/CI\uc5d0\uc11c \uac80\uc99d\ud560 \uc6b0\uc120\uc21c\uc704\uac00 \ub192\ub2e4. H3 2.0.1-rc.27, Vitest 5 RC, pnpm 12 RC\ub294 \ubaa8\ub450 \uc0ac\uc804 \uac80\uc99d \ud2b8\ub799\uc73c\ub85c \ubd84\ub9ac\ud55c\ub2e4.<\/p>\n<h3>\uc774\ubc88 \ubcc0\ud654\uac00 SEO\ub098 \uc0ac\uc6a9\uc790 \uc131\ub2a5\uc5d0 \ubc14\ub85c \uc5f0\uacb0\ub418\ub098?<\/h3>\n<p>\uc9c1\uc811\uc801\uc778 \uc131\ub2a5 \ud5a5\uc0c1\uc744 \ubcf4\uc7a5\ud558\ub294 \uadfc\uac70\ub294 \uc5c6\ub2e4. \ub2e4\ub9cc hydration, sourcemap, route rules, \ud14c\uc2a4\ud2b8 \uc548\uc815\uc131\uc740 \ubc30\ud3ec \uc2e0\ub8b0\ub3c4\uc640 \uc624\ub958 \ud0d0\uc9c0 \uc2dc\uac04\uc744 \uc88c\uc6b0\ud558\ubbc0\ub85c, \uce21\uc815 \uac00\ub2a5\ud55c \ud68c\uadc0 \ud14c\uc2a4\ud2b8\uc640 \uc6b4\uc601 \uc9c0\ud45c\ub97c \ud1b5\ud574 \uc5f0\uacb0\ud574\uc57c \ud55c\ub2e4.<\/p>\n<h2>\ucd9c\ucc98\uc640 \ud655\uc778 \uae30\uc900<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/h3js\/h3\/releases\/tag\/v2.0.1-rc.27\" target=\"_blank\" rel=\"noopener\">H3 2.0.1-rc.27 \uacf5\uc2dd \ub9b4\ub9ac\uc2a4 \ub178\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitest-dev\/vitest\/releases\/tag\/v4.1.11\" target=\"_blank\" rel=\"noopener\">Vitest 4.1.11 \uacf5\uc2dd \ub9b4\ub9ac\uc2a4 \ub178\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitest-dev\/vitest\/releases\/tag\/v5.0.0-rc.2\" target=\"_blank\" rel=\"noopener\">Vitest 5.0.0-rc.2 \uacf5\uc2dd \ub9b4\ub9ac\uc2a4 \ub178\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/commit\/dd6b22841c8f7107ded5c97142bb60a48dfbb8b4\" target=\"_blank\" rel=\"noopener\">Nuxt main: useAsyncData hydration \uc218\uc815 (\ubbf8\ucd9c\uc2dc)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitejs\/vite\/commit\/8413052731836d4aaf3eb94a0f25788dd35d2888\" target=\"_blank\" rel=\"noopener\">Vite main: preserveSymlinks \uc218\uc815 (\ubbf8\ucd9c\uc2dc)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/unocss\/unocss\/releases\/tag\/v66.8.0\" target=\"_blank\" rel=\"noopener\">UnoCSS 66.8.0 \uacf5\uc2dd \ub9b4\ub9ac\uc2a4 \ub178\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/pnpm\/pnpm\/releases\/tag\/v12.0.0-rc.7\" target=\"_blank\" rel=\"noopener\">pnpm 12.0.0-rc.7 \uacf5\uc2dd \ub9b4\ub9ac\uc2a4 \ub178\ud2b8<\/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 17~20\uc77c Nuxt\u00b7Vue\u00b7Vite\u00b7Nitro \ud504\ub860\ud2b8\uc5d4\ub4dc \uc0dd\ud0dc\uacc4\uc758 \ud655\uc778 \uac00\ub2a5\ud55c \ubcc0\ud654\ub294 \uc11c\ubc84 \ub77c\uc6b0\ud305\/\uc138\uc158 \uc548\uc804\uc131, \ud14c\uc2a4\ud2b8 \uc2e4\ud589 \uc548\uc815\uc131, \uac1c\ubc1c \uc11c\ubc84\uc758 \ud574\uc11d \uc815\ud655\ub3c4, \uadf8\ub9ac\uace0 CSS\u00b7\ud328\ud0a4\uc9c0 \uad00\ub9ac \ub3c4\uad6c\uc758 \uc6b4\uc601 \uc815\ube44\uc5d0 \ubaa8\uc600\ub2e4. \uc774\ubc88 3\uc77c \ub9ac\ud3ec\ud2b8\uc758 \ud575\uc2ec\uc740 \u2018\uc989\uc2dc \ub300\uaddc\ubaa8 \uc5c5\uadf8\ub808\uc774\ub4dc\u2019\ubcf4\ub2e4 H3\uc640 Vitest\uc758 \uc815\uc2dd \ud328\uce58\ub97c \uba3c\uc800 \uac80\uc99d\ud558\uace0, Nuxt\u00b7Vite\uc758 main \ubcc0\uacbd\uc740 \ub9b4\ub9ac\uc2a4 \uc804 \uc2e0\ud638\ub85c \ubd84\ub9ac\ud574 CI\uc640 \ub85c\uceec \uac1c\ubc1c \ud658\uacbd\uc744 \uc810\uac80\ud558\ub294 \uac83\uc774\ub2e4. \ud575\uc2ec \ub2f5\ubcc0: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":473,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-474","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\/474","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=474"}],"version-history":[{"count":0,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/474\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media\/473"}],"wp:attachment":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media?parent=474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/categories?post=474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/tags?post=474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}