nuxt-nightly 4.1.0-29279365.79d172b6 → 4.1.1-29280872.e12125a9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/components/welcome.vue +1 -1
- package/dist/index.mjs +82 -90
- package/package.json +4 -4
|
@@ -26,7 +26,7 @@ useHead({
|
|
|
26
26
|
</script>
|
|
27
27
|
|
|
28
28
|
<template>
|
|
29
|
-
<div class="antialiased bg-white dark:bg-[#020420] dark:text-white flex flex-col items-center justify-center min-h-screen place-content-center sm:text-base text-[#020420] text-sm"><div class="flex flex-col mt-6 sm:mt-0"><h1 class="flex flex-col gap-y-4 items-center justify-center"><a href="https://nuxt.com?utm_source=nuxt-welcome" target="_blank" class="gap-4 inline-flex items-end"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" aria-label="Nuxt" class="h-8 sm:h-12" viewBox="0 0 800 200"><path fill="#00dc82" d="M168.303 200h111.522c3.543 0 7.022-.924 10.09-2.679A20.1 20.1 0 0 0 297.3 190a19.86 19.86 0 0 0 2.7-10.001 19.86 19.86 0 0 0-2.709-9.998L222.396 41.429a20.1 20.1 0 0 0-7.384-7.32 20.3 20.3 0 0 0-10.088-2.679c-3.541 0-7.02.925-10.087 2.68a20.1 20.1 0 0 0-7.384 7.32l-19.15 32.896L130.86 9.998a20.1 20.1 0 0 0-7.387-7.32A20.3 20.3 0 0 0 113.384 0c-3.542 0-7.022.924-10.09 2.679a20.1 20.1 0 0 0-7.387 7.319L2.709 170A19.85 19.85 0 0 0 0 179.999c-.002 3.511.93 6.96 2.7 10.001a20.1 20.1 0 0 0 7.385 7.321A20.3 20.3 0 0 0 20.175 200h70.004c27.737 0 48.192-12.075 62.266-35.633l34.171-58.652 18.303-31.389 54.93 94.285h-73.233zm-79.265-31.421-48.854-.011 73.232-125.706 36.541 62.853-24.466 42.01c-9.347 15.285-19.965 20.854-36.453 20.854"/><path fill="currentColor" d="M377 200a4 4 0 0 0 4-4v-93s5.244 8.286 15 25l38.707 66.961c1.789 3.119 5.084 5.039 8.649 5.039H470V50h-27a4 4 0 0 0-4 4v94l-17-30-36.588-62.98c-1.792-3.108-5.081-5.02-8.639-5.02H350v150zm299.203-56.143L710.551 92h-25.73a9.97 9.97 0 0 0-8.333 4.522L660.757 120.5l-15.731-23.978A9.97 9.97 0 0 0 636.693 92h-25.527l34.348 51.643L608.524 200h24.966a9.97 9.97 0 0 0 8.29-4.458l19.18-28.756 18.981 28.72a9.97 9.97 0 0 0 8.313 4.494h24.736zM724.598 92h19.714V60.071h28.251V92H800v24.857h-27.437V159.5c0 10.5 5.284 15.429 14.43 15.429H800V200h-16.869c-23.576 0-38.819-14.143-38.819-39.214v-43.929h-19.714zM590 92h-15c-3.489 0-6.218.145-8.5 2.523-2.282 2.246-2.5 3.63-2.5 7.066v52.486c0 8.058-.376 12.962-4 16.925-3.624 3.831-8.619 5-16 5-7.247 0-12.376-1.169-16-5-3.624-3.963-4-8.867-4-16.925v-52.486c0-3.435-.218-4.82-2.5-7.066C519.218 92.145 516.489 92 513 92h-15v62.422q0 21.006 11.676 33.292C517.594 195.905 529.103 200 544 200s26.204-4.095 34.123-12.286Q590 175.428 590 154.422z"/></svg> <span class="bg-[#00DC42]/10 border border-[#00DC42]/50 font-mono font-semibold group-hover:bg-[#00DC42]/15 group-hover:border-[#00DC42] inline-block leading-none px-2 py-1 rounded sm:px-2.5 sm:py-1.5 sm:text-[14px] text-[#00DC82] text-[12px]">4.0.3</span> </a></h1><div class="gap-4 grid grid-cols-1 max-w-[980px] mt-6 px-4 sm:gap-6 sm:grid-cols-3 sm:mt-10 w-full"><div class="bg-gray-50/10 border border-[#00DC42]/50 dark:bg-white/5 flex flex-col gap-1 p-6 rounded-lg sm:col-span-2"><div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/80 dark:text-[#00DC82] flex h-[32px] items-center justify-center rounded text-[#00DC82] w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" class="size-[18px]" viewBox="0 0 256 256"><path fill="currentColor" d="m228.1 121.2-143.9-88A8 8 0 0 0 72 40v176a8 8 0 0 0 12.2 6.8l143.9-88a7.9 7.9 0 0 0 0-13.6" opacity=".2"/><path fill="currentColor" d="M80 232a15.5 15.5 0 0 1-7.8-2.1A15.8 15.8 0 0 1 64 216V40a15.8 15.8 0 0 1 8.2-13.9 15.5 15.5 0 0 1 16.1.3l144 87.9a16 16 0 0 1 0 27.4l-144 87.9A15.4 15.4 0 0 1 80 232m0-192v176l144-88Z"/></svg></div><h2 class="font-semibold mt-1 text-base">Get started</h2><p class="dark:text-gray-200 text-gray-700 text-sm">Remove this welcome page by replacing <a class="bg-green-50 border border-green-600/10 dark:bg-[#020420] dark:border-white/10 dark:text-[#00DC82] font-bold font-mono p-1 rounded text-green-700"><NuxtWelcome/></a> in <a href="https://nuxt.com/docs/guide/directory-structure/app" target="_blank" rel="noopener" class="bg-green-50 border border-green-600/20 dark:bg-[#020420] dark:border-white/20 dark:text-[#00DC82] font-bold font-mono hover:border-[#00DC82] p-1 rounded text-green-700">app.vue</a> with your own code.</p></div><a href="https://nuxt.com/docs?utm_source=nuxt-welcome" target="_blank" class="bg-gray-50/10 border border-gray-200 dark:bg-white/5 dark:border-white/10 flex flex-col gap-1 group hover:border-[#00DC82] hover:dark:border-[#00DC82] p-6 relative rounded-lg transition-all"> <div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/50 dark:text-[#00DC82] flex group-hover:dark:border-[#00DC82]/80 h-[32px] items-center justify-center rounded text-[#00DC82] transition-all w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" class="size-5" viewBox="0 0 256 256"><path fill="currentColor" d="M136 48v128H88V80H40V48a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8 8 8 0 0 1 8-8h32a8 8 0 0 1 8 8m89.9 149.6-8.3-30.9-46.4 12.5 8.3 30.9a8 8 0 0 0 9.8 5.6l30.9-8.3a8 8 0 0 0 5.7-9.8M184.5 43.1a8.1 8.1 0 0 0-9.8-5.7l-30.9 8.3a8.1 8.1 0 0 0-5.7 9.8l8.3 30.9L192.8 74Z" opacity=".2"/><path fill="currentColor" d="M233.6 195.6 192.2 41a16 16 0 0 0-19.6-11.3L141.7 38l-1 .3A16 16 0 0 0 128 32H96a15.8 15.8 0 0 0-8 2.2 15.8 15.8 0 0 0-8-2.2H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h32a15.8 15.8 0 0 0 8-2.2 15.8 15.8 0 0 0 8 2.2h32a16 16 0 0 0 16-16v-99.6l27.8 103.7a16 16 0 0 0 15.5 11.9 20 20 0 0 0 4.1-.5l30.9-8.3a16 16 0 0 0 11.3-19.6M156.2 92.1l30.9-8.3 20.7 77.3-30.9 8.3Zm20.5-46.9 6.3 23.1-30.9 8.3-6.3-23.1ZM128 48v120H96V48Zm-48 0v24H48V48ZM48 208V88h32v120Zm80 0H96v-24h32zm90.2-8.3-30.9 8.3-6.3-23.2 31-8.3z"/></svg></div> <svg xmlns="http://www.w3.org/2000/svg" class="absolute dark:text-white/40 group-hover:size-5 group-hover:text-[#00DC82] right-4 size-4 text-[#020420]/20 top-4 transition-all" viewBox="0 0 256 256"><path fill="currentColor" d="M200 64v104a8 8 0 0 1-16 0V83.3L69.7 197.7a8.2 8.2 0 0 1-11.4 0 8.1 8.1 0 0 1 0-11.4L172.7 72H88a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8"/></svg> <h2 class="font-semibold mt-1 text-base">Documentation</h2> <p class="dark:text-gray-200 group-hover:dark:text-gray-100 text-gray-700 text-sm">We highly recommend you take a look at the Nuxt documentation to level up.</p> </a></div><div class="gap-4 grid grid-cols-1 max-w-[980px] mt-4 px-4 sm:gap-6 sm:grid-cols-3 sm:mt-6 w-full"><a href="https://nuxt.com/modules?utm_source=nuxt-welcome" target="_blank" class="bg-gray-50/10 border border-gray-200 dark:bg-white/5 dark:border-white/10 flex flex-col gap-1 group hover:border-[#00DC82] hover:dark:border-[#00DC82] p-6 relative rounded-lg transition-all"> <div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/50 dark:text-[#00DC82] flex group-hover:dark:border-[#00DC82]/80 h-[32px] items-center justify-center rounded text-[#00DC82] transition-all w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" class="size-5" viewBox="0 0 256 256"><path fill="currentColor" d="M64 216a8 8 0 0 1-8-8v-42.7a27.6 27.6 0 0 1-14.1 2.6A28 28 0 1 1 56 114.7V72a8 8 0 0 1 8-8h46.7a27.6 27.6 0 0 1-2.6-14.1A28 28 0 1 1 161.3 64H208a8 8 0 0 1 8 8v42.7a27.6 27.6 0 0 0-14.1-2.6 28 28 0 1 0 14.1 53.2V208a8 8 0 0 1-8 8Z" opacity=".2"/><path fill="currentColor" d="M220.3 158.5a8.1 8.1 0 0 0-7.7-.4 20.2 20.2 0 0 1-23.2-4.4 20 20 0 0 1 13.1-33.6 19.6 19.6 0 0 1 10.1 1.8 8.1 8.1 0 0 0 7.7-.4 8.2 8.2 0 0 0 3.7-6.8V72a16 16 0 0 0-16-16h-36.2c.1-1.3.2-2.7.2-4a36.1 36.1 0 0 0-38.3-35.9 36 36 0 0 0-33.6 33.3 36.4 36.4 0 0 0 .1 6.6H64a16 16 0 0 0-16 16v32.2l-4-.2a35.6 35.6 0 0 0-26.2 11.4 35.3 35.3 0 0 0-9.7 26.9 36 36 0 0 0 33.3 33.6 36.4 36.4 0 0 0 6.6-.1V208a16 16 0 0 0 16 16h144a16 16 0 0 0 16-16v-42.7a8.2 8.2 0 0 0-3.7-6.8M208 208H64v-42.7a8.2 8.2 0 0 0-3.7-6.8 8.1 8.1 0 0 0-7.7-.4 19.6 19.6 0 0 1-10.1 1.8 20 20 0 0 1-13.1-33.6 20.2 20.2 0 0 1 23.2-4.4 8.1 8.1 0 0 0 7.7-.4 8.2 8.2 0 0 0 3.7-6.8V72h46.7a8.2 8.2 0 0 0 6.8-3.7 8.1 8.1 0 0 0 .4-7.7 19.6 19.6 0 0 1-1.8-10.1 20 20 0 0 1 33.6-13.1 20.2 20.2 0 0 1 4.4 23.2 8.1 8.1 0 0 0 .4 7.7 8.2 8.2 0 0 0 6.8 3.7H208v32.2a36.4 36.4 0 0 0-6.6-.1 36 36 0 0 0-33.3 33.6A36.1 36.1 0 0 0 204 176l4-.2Z"/></svg></div> <svg xmlns="http://www.w3.org/2000/svg" class="absolute dark:text-white/40 group-hover:size-5 group-hover:text-[#00DC82] right-4 size-4 text-[#020420]/20 top-4 transition-all" viewBox="0 0 256 256"><path fill="currentColor" d="M200 64v104a8 8 0 0 1-16 0V83.3L69.7 197.7a8.2 8.2 0 0 1-11.4 0 8.1 8.1 0 0 1 0-11.4L172.7 72H88a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8"/></svg> <h2 class="font-semibold mt-1 text-base">Modules</h2> <p class="dark:text-gray-200 group-hover:dark:text-gray-100 text-gray-700 text-sm">Discover our list of modules to supercharge your Nuxt project.</p> </a> <a href="https://nuxt.com/docs/examples?utm_source=nuxt-welcome" target="_blank" class="bg-gray-50/10 border border-gray-200 dark:bg-white/5 dark:border-white/10 flex flex-col gap-1 group hover:border-[#00DC82] hover:dark:border-[#00DC82] p-6 relative rounded-lg transition-all"><div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/50 dark:text-[#00DC82] flex group-hover:dark:border-[#00DC82]/80 h-[32px] items-center justify-center rounded text-[#00DC82] transition-all w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" class="size-5" viewBox="0 0 256 256"><path fill="currentColor" d="M224 56v144a8 8 0 0 1-8 8H40a8 8 0 0 1-8-8V56a8 8 0 0 1 8-8h176a8 8 0 0 1 8 8" opacity=".2"/><path fill="currentColor" d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 160H40V56h176zM80 84a12 12 0 1 1-12-12 12 12 0 0 1 12 12m40 0a12 12 0 1 1-12-12 12 12 0 0 1 12 12"/></svg></div> <svg xmlns="http://www.w3.org/2000/svg" class="absolute dark:text-white/40 group-hover:size-5 group-hover:text-[#00DC82] right-4 size-4 text-[#020420]/20 top-4 transition-all" viewBox="0 0 256 256"><path fill="currentColor" d="M200 64v104a8 8 0 0 1-16 0V83.3L69.7 197.7a8.2 8.2 0 0 1-11.4 0 8.1 8.1 0 0 1 0-11.4L172.7 72H88a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8"/></svg> <h2 class="font-semibold mt-1 text-base">Examples</h2> <p class="dark:text-gray-200 group-hover:dark:text-gray-100 text-gray-700 text-sm">Explore different way of using Nuxt features and get inspired.</p> </a> <a href="https://nuxt.com/deploy?utm_source=nuxt-welcome" target="_blank" class="bg-gray-50/10 border border-gray-200 dark:bg-white/5 dark:border-white/10 flex flex-col gap-1 group hover:border-[#00DC82] hover:dark:border-[#00DC82] p-6 relative rounded-lg transition-all"><div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/50 dark:text-[#00DC82] flex group-hover:dark:border-[#00DC82]/80 h-[32px] items-center justify-center rounded text-[#00DC82] transition-all w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 256 256"><path fill="currentColor" d="M94.1 184.6c-11.4 33.9-56.6 33.9-56.6 33.9s0-45.2 33.9-56.6Zm90.5-67.9v64.6a8 8 0 0 1-2.4 5.6l-32.3 32.4a8 8 0 0 1-13.5-4.1l-8.4-41.9Zm-45.3-45.3H74.7a8 8 0 0 0-5.6 2.4l-32.4 32.3a8 8 0 0 0 4.1 13.5l41.9 8.4Z" opacity=".2"/><path fill="currentColor" d="M96.6 177a7.9 7.9 0 0 0-10.1 5c-6.6 19.7-27.9 25.8-40.2 27.7 1.9-12.3 8-33.6 27.7-40.2a8 8 0 1 0-5.1-15.1c-16.4 5.4-28.4 18.4-34.8 37.5a91.8 91.8 0 0 0-4.6 26.6 8 8 0 0 0 8 8 91.8 91.8 0 0 0 26.6-4.6c19.1-6.4 32.1-18.4 37.5-34.8a7.9 7.9 0 0 0-5-10.1"/><path fill="currentColor" d="M227.6 41.8a15.7 15.7 0 0 0-13.4-13.4c-11.3-1.7-40.6-2.5-69.2 26.1l-9 8.9H74.7a16.2 16.2 0 0 0-11.3 4.7l-32.3 32.4a15.9 15.9 0 0 0-4 15.9 16 16 0 0 0 12.2 11.1l39.5 7.9 41.8 41.8 7.9 39.5a16 16 0 0 0 11.1 12.2 14.7 14.7 0 0 0 4.6.7 15.6 15.6 0 0 0 11.3-4.7l32.4-32.3a16.2 16.2 0 0 0 4.7-11.3V120l8.9-9c28.6-28.6 27.8-57.9 26.1-69.2M74.7 79.4H120l-39.9 39.9-37.7-7.5Zm81.6-13.6c7.8-7.8 28.8-25.6 55.5-21.6 4 26.7-13.8 47.7-21.6 55.5L128 161.9 94.1 128Zm20.3 115.5-32.4 32.3-7.5-37.7 39.9-39.9Z"/></svg></div> <svg xmlns="http://www.w3.org/2000/svg" class="absolute dark:text-white/40 group-hover:size-5 group-hover:text-[#00DC82] right-4 size-4 text-[#020420]/20 top-4 transition-all" viewBox="0 0 256 256"><path fill="currentColor" d="M200 64v104a8 8 0 0 1-16 0V83.3L69.7 197.7a8.2 8.2 0 0 1-11.4 0 8.1 8.1 0 0 1 0-11.4L172.7 72H88a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8"/></svg> <h2 class="font-semibold mt-1 text-base">Deploy</h2> <p class="dark:text-gray-200 group-hover:dark:text-gray-100 text-gray-700 text-sm">Learn how to deploy your Nuxt project on different providers.</p> </a></div><footer class="lg:px-8 mb-6 mt-6 mx-auto px-4 sm:mb-0 sm:mt-10 sm:px-6 w-full"><ul class="flex gap-4 items-center justify-center"><li><a href="https://go.nuxt.com/github" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt GitHub Repository</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> </a></li><li><a href="https://go.nuxt.com/discord" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt Discord Server</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M20.317 4.37a19.8 19.8 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.3 18.3 0 0 0-5.487 0 13 13 0 0 0-.617-1.25.08.08 0 0 0-.079-.037A19.7 19.7 0 0 0 3.677 4.37a.1.1 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.08.08 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.08.08 0 0 0 .084-.028 14 14 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13 13 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10 10 0 0 0 .372-.292.07.07 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.07.07 0 0 1 .078.01q.181.149.373.292a.077.077 0 0 1-.006.127 12.3 12.3 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.08.08 0 0 0 .084.028 19.8 19.8 0 0 0 6.002-3.03.08.08 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.06.06 0 0 0-.031-.03M8.02 15.33c-1.182 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418m7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418"/></svg> </a></li><li><a href="https://go.nuxt.com/x" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt on X</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"/></svg> </a></li><li><a href="https://go.nuxt.com/bluesky" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt Bluesky</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364q.204-.03.415-.056-.207.033-.415.056c-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a9 9 0 0 1-.415-.056q.21.026.415.056c2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8"/></svg> </a></li><li><a href="https://go.nuxt.com/linkedin" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt Linkedin</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.06 2.06 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065m1.782 13.019H3.555V9h3.564zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0z"/></svg> </a></li></ul></footer></div></div>
|
|
29
|
+
<div class="antialiased bg-white dark:bg-[#020420] dark:text-white flex flex-col items-center justify-center min-h-screen place-content-center sm:text-base text-[#020420] text-sm"><div class="flex flex-col mt-6 sm:mt-0"><h1 class="flex flex-col gap-y-4 items-center justify-center"><a href="https://nuxt.com?utm_source=nuxt-welcome" target="_blank" class="gap-4 inline-flex items-end"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" aria-label="Nuxt" class="h-8 sm:h-12" viewBox="0 0 800 200"><path fill="#00dc82" d="M168.303 200h111.522c3.543 0 7.022-.924 10.09-2.679A20.1 20.1 0 0 0 297.3 190a19.86 19.86 0 0 0 2.7-10.001 19.86 19.86 0 0 0-2.709-9.998L222.396 41.429a20.1 20.1 0 0 0-7.384-7.32 20.3 20.3 0 0 0-10.088-2.679c-3.541 0-7.02.925-10.087 2.68a20.1 20.1 0 0 0-7.384 7.32l-19.15 32.896L130.86 9.998a20.1 20.1 0 0 0-7.387-7.32A20.3 20.3 0 0 0 113.384 0c-3.542 0-7.022.924-10.09 2.679a20.1 20.1 0 0 0-7.387 7.319L2.709 170A19.85 19.85 0 0 0 0 179.999c-.002 3.511.93 6.96 2.7 10.001a20.1 20.1 0 0 0 7.385 7.321A20.3 20.3 0 0 0 20.175 200h70.004c27.737 0 48.192-12.075 62.266-35.633l34.171-58.652 18.303-31.389 54.93 94.285h-73.233zm-79.265-31.421-48.854-.011 73.232-125.706 36.541 62.853-24.466 42.01c-9.347 15.285-19.965 20.854-36.453 20.854"/><path fill="currentColor" d="M377 200a4 4 0 0 0 4-4v-93s5.244 8.286 15 25l38.707 66.961c1.789 3.119 5.084 5.039 8.649 5.039H470V50h-27a4 4 0 0 0-4 4v94l-17-30-36.588-62.98c-1.792-3.108-5.081-5.02-8.639-5.02H350v150zm299.203-56.143L710.551 92h-25.73a9.97 9.97 0 0 0-8.333 4.522L660.757 120.5l-15.731-23.978A9.97 9.97 0 0 0 636.693 92h-25.527l34.348 51.643L608.524 200h24.966a9.97 9.97 0 0 0 8.29-4.458l19.18-28.756 18.981 28.72a9.97 9.97 0 0 0 8.313 4.494h24.736zM724.598 92h19.714V60.071h28.251V92H800v24.857h-27.437V159.5c0 10.5 5.284 15.429 14.43 15.429H800V200h-16.869c-23.576 0-38.819-14.143-38.819-39.214v-43.929h-19.714zM590 92h-15c-3.489 0-6.218.145-8.5 2.523-2.282 2.246-2.5 3.63-2.5 7.066v52.486c0 8.058-.376 12.962-4 16.925-3.624 3.831-8.619 5-16 5-7.247 0-12.376-1.169-16-5-3.624-3.963-4-8.867-4-16.925v-52.486c0-3.435-.218-4.82-2.5-7.066C519.218 92.145 516.489 92 513 92h-15v62.422q0 21.006 11.676 33.292C517.594 195.905 529.103 200 544 200s26.204-4.095 34.123-12.286Q590 175.428 590 154.422z"/></svg> <span class="bg-[#00DC42]/10 border border-[#00DC42]/50 font-mono font-semibold group-hover:bg-[#00DC42]/15 group-hover:border-[#00DC42] inline-block leading-none px-2 py-1 rounded sm:px-2.5 sm:py-1.5 sm:text-[14px] text-[#00DC82] text-[12px]">4.1.0</span> </a></h1><div class="gap-4 grid grid-cols-1 max-w-[980px] mt-6 px-4 sm:gap-6 sm:grid-cols-3 sm:mt-10 w-full"><div class="bg-gray-50/10 border border-[#00DC42]/50 dark:bg-white/5 flex flex-col gap-1 p-6 rounded-lg sm:col-span-2"><div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/80 dark:text-[#00DC82] flex h-[32px] items-center justify-center rounded text-[#00DC82] w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" class="size-[18px]" viewBox="0 0 256 256"><path fill="currentColor" d="m228.1 121.2-143.9-88A8 8 0 0 0 72 40v176a8 8 0 0 0 12.2 6.8l143.9-88a7.9 7.9 0 0 0 0-13.6" opacity=".2"/><path fill="currentColor" d="M80 232a15.5 15.5 0 0 1-7.8-2.1A15.8 15.8 0 0 1 64 216V40a15.8 15.8 0 0 1 8.2-13.9 15.5 15.5 0 0 1 16.1.3l144 87.9a16 16 0 0 1 0 27.4l-144 87.9A15.4 15.4 0 0 1 80 232m0-192v176l144-88Z"/></svg></div><h2 class="font-semibold mt-1 text-base">Get started</h2><p class="dark:text-gray-200 text-gray-700 text-sm">Remove this welcome page by replacing <a class="bg-green-50 border border-green-600/10 dark:bg-[#020420] dark:border-white/10 dark:text-[#00DC82] font-bold font-mono p-1 rounded text-green-700"><NuxtWelcome/></a> in <a href="https://nuxt.com/docs/guide/directory-structure/app" target="_blank" rel="noopener" class="bg-green-50 border border-green-600/20 dark:bg-[#020420] dark:border-white/20 dark:text-[#00DC82] font-bold font-mono hover:border-[#00DC82] p-1 rounded text-green-700">app.vue</a> with your own code.</p></div><a href="https://nuxt.com/docs?utm_source=nuxt-welcome" target="_blank" class="bg-gray-50/10 border border-gray-200 dark:bg-white/5 dark:border-white/10 flex flex-col gap-1 group hover:border-[#00DC82] hover:dark:border-[#00DC82] p-6 relative rounded-lg transition-all"> <div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/50 dark:text-[#00DC82] flex group-hover:dark:border-[#00DC82]/80 h-[32px] items-center justify-center rounded text-[#00DC82] transition-all w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" class="size-5" viewBox="0 0 256 256"><path fill="currentColor" d="M136 48v128H88V80H40V48a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8 8 8 0 0 1 8-8h32a8 8 0 0 1 8 8m89.9 149.6-8.3-30.9-46.4 12.5 8.3 30.9a8 8 0 0 0 9.8 5.6l30.9-8.3a8 8 0 0 0 5.7-9.8M184.5 43.1a8.1 8.1 0 0 0-9.8-5.7l-30.9 8.3a8.1 8.1 0 0 0-5.7 9.8l8.3 30.9L192.8 74Z" opacity=".2"/><path fill="currentColor" d="M233.6 195.6 192.2 41a16 16 0 0 0-19.6-11.3L141.7 38l-1 .3A16 16 0 0 0 128 32H96a15.8 15.8 0 0 0-8 2.2 15.8 15.8 0 0 0-8-2.2H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h32a15.8 15.8 0 0 0 8-2.2 15.8 15.8 0 0 0 8 2.2h32a16 16 0 0 0 16-16v-99.6l27.8 103.7a16 16 0 0 0 15.5 11.9 20 20 0 0 0 4.1-.5l30.9-8.3a16 16 0 0 0 11.3-19.6M156.2 92.1l30.9-8.3 20.7 77.3-30.9 8.3Zm20.5-46.9 6.3 23.1-30.9 8.3-6.3-23.1ZM128 48v120H96V48Zm-48 0v24H48V48ZM48 208V88h32v120Zm80 0H96v-24h32zm90.2-8.3-30.9 8.3-6.3-23.2 31-8.3z"/></svg></div> <svg xmlns="http://www.w3.org/2000/svg" class="absolute dark:text-white/40 group-hover:size-5 group-hover:text-[#00DC82] right-4 size-4 text-[#020420]/20 top-4 transition-all" viewBox="0 0 256 256"><path fill="currentColor" d="M200 64v104a8 8 0 0 1-16 0V83.3L69.7 197.7a8.2 8.2 0 0 1-11.4 0 8.1 8.1 0 0 1 0-11.4L172.7 72H88a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8"/></svg> <h2 class="font-semibold mt-1 text-base">Documentation</h2> <p class="dark:text-gray-200 group-hover:dark:text-gray-100 text-gray-700 text-sm">We highly recommend you take a look at the Nuxt documentation to level up.</p> </a></div><div class="gap-4 grid grid-cols-1 max-w-[980px] mt-4 px-4 sm:gap-6 sm:grid-cols-3 sm:mt-6 w-full"><a href="https://nuxt.com/modules?utm_source=nuxt-welcome" target="_blank" class="bg-gray-50/10 border border-gray-200 dark:bg-white/5 dark:border-white/10 flex flex-col gap-1 group hover:border-[#00DC82] hover:dark:border-[#00DC82] p-6 relative rounded-lg transition-all"> <div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/50 dark:text-[#00DC82] flex group-hover:dark:border-[#00DC82]/80 h-[32px] items-center justify-center rounded text-[#00DC82] transition-all w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" class="size-5" viewBox="0 0 256 256"><path fill="currentColor" d="M64 216a8 8 0 0 1-8-8v-42.7a27.6 27.6 0 0 1-14.1 2.6A28 28 0 1 1 56 114.7V72a8 8 0 0 1 8-8h46.7a27.6 27.6 0 0 1-2.6-14.1A28 28 0 1 1 161.3 64H208a8 8 0 0 1 8 8v42.7a27.6 27.6 0 0 0-14.1-2.6 28 28 0 1 0 14.1 53.2V208a8 8 0 0 1-8 8Z" opacity=".2"/><path fill="currentColor" d="M220.3 158.5a8.1 8.1 0 0 0-7.7-.4 20.2 20.2 0 0 1-23.2-4.4 20 20 0 0 1 13.1-33.6 19.6 19.6 0 0 1 10.1 1.8 8.1 8.1 0 0 0 7.7-.4 8.2 8.2 0 0 0 3.7-6.8V72a16 16 0 0 0-16-16h-36.2c.1-1.3.2-2.7.2-4a36.1 36.1 0 0 0-38.3-35.9 36 36 0 0 0-33.6 33.3 36.4 36.4 0 0 0 .1 6.6H64a16 16 0 0 0-16 16v32.2l-4-.2a35.6 35.6 0 0 0-26.2 11.4 35.3 35.3 0 0 0-9.7 26.9 36 36 0 0 0 33.3 33.6 36.4 36.4 0 0 0 6.6-.1V208a16 16 0 0 0 16 16h144a16 16 0 0 0 16-16v-42.7a8.2 8.2 0 0 0-3.7-6.8M208 208H64v-42.7a8.2 8.2 0 0 0-3.7-6.8 8.1 8.1 0 0 0-7.7-.4 19.6 19.6 0 0 1-10.1 1.8 20 20 0 0 1-13.1-33.6 20.2 20.2 0 0 1 23.2-4.4 8.1 8.1 0 0 0 7.7-.4 8.2 8.2 0 0 0 3.7-6.8V72h46.7a8.2 8.2 0 0 0 6.8-3.7 8.1 8.1 0 0 0 .4-7.7 19.6 19.6 0 0 1-1.8-10.1 20 20 0 0 1 33.6-13.1 20.2 20.2 0 0 1 4.4 23.2 8.1 8.1 0 0 0 .4 7.7 8.2 8.2 0 0 0 6.8 3.7H208v32.2a36.4 36.4 0 0 0-6.6-.1 36 36 0 0 0-33.3 33.6A36.1 36.1 0 0 0 204 176l4-.2Z"/></svg></div> <svg xmlns="http://www.w3.org/2000/svg" class="absolute dark:text-white/40 group-hover:size-5 group-hover:text-[#00DC82] right-4 size-4 text-[#020420]/20 top-4 transition-all" viewBox="0 0 256 256"><path fill="currentColor" d="M200 64v104a8 8 0 0 1-16 0V83.3L69.7 197.7a8.2 8.2 0 0 1-11.4 0 8.1 8.1 0 0 1 0-11.4L172.7 72H88a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8"/></svg> <h2 class="font-semibold mt-1 text-base">Modules</h2> <p class="dark:text-gray-200 group-hover:dark:text-gray-100 text-gray-700 text-sm">Discover our list of modules to supercharge your Nuxt project.</p> </a> <a href="https://nuxt.com/docs/examples?utm_source=nuxt-welcome" target="_blank" class="bg-gray-50/10 border border-gray-200 dark:bg-white/5 dark:border-white/10 flex flex-col gap-1 group hover:border-[#00DC82] hover:dark:border-[#00DC82] p-6 relative rounded-lg transition-all"><div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/50 dark:text-[#00DC82] flex group-hover:dark:border-[#00DC82]/80 h-[32px] items-center justify-center rounded text-[#00DC82] transition-all w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" class="size-5" viewBox="0 0 256 256"><path fill="currentColor" d="M224 56v144a8 8 0 0 1-8 8H40a8 8 0 0 1-8-8V56a8 8 0 0 1 8-8h176a8 8 0 0 1 8 8" opacity=".2"/><path fill="currentColor" d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 160H40V56h176zM80 84a12 12 0 1 1-12-12 12 12 0 0 1 12 12m40 0a12 12 0 1 1-12-12 12 12 0 0 1 12 12"/></svg></div> <svg xmlns="http://www.w3.org/2000/svg" class="absolute dark:text-white/40 group-hover:size-5 group-hover:text-[#00DC82] right-4 size-4 text-[#020420]/20 top-4 transition-all" viewBox="0 0 256 256"><path fill="currentColor" d="M200 64v104a8 8 0 0 1-16 0V83.3L69.7 197.7a8.2 8.2 0 0 1-11.4 0 8.1 8.1 0 0 1 0-11.4L172.7 72H88a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8"/></svg> <h2 class="font-semibold mt-1 text-base">Examples</h2> <p class="dark:text-gray-200 group-hover:dark:text-gray-100 text-gray-700 text-sm">Explore different way of using Nuxt features and get inspired.</p> </a> <a href="https://nuxt.com/deploy?utm_source=nuxt-welcome" target="_blank" class="bg-gray-50/10 border border-gray-200 dark:bg-white/5 dark:border-white/10 flex flex-col gap-1 group hover:border-[#00DC82] hover:dark:border-[#00DC82] p-6 relative rounded-lg transition-all"><div class="bg-[#00DC82]/5 border border-[#00DC82] dark:bg-[#020420] dark:border-[#00DC82]/50 dark:text-[#00DC82] flex group-hover:dark:border-[#00DC82]/80 h-[32px] items-center justify-center rounded text-[#00DC82] transition-all w-[32px]"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 256 256"><path fill="currentColor" d="M94.1 184.6c-11.4 33.9-56.6 33.9-56.6 33.9s0-45.2 33.9-56.6Zm90.5-67.9v64.6a8 8 0 0 1-2.4 5.6l-32.3 32.4a8 8 0 0 1-13.5-4.1l-8.4-41.9Zm-45.3-45.3H74.7a8 8 0 0 0-5.6 2.4l-32.4 32.3a8 8 0 0 0 4.1 13.5l41.9 8.4Z" opacity=".2"/><path fill="currentColor" d="M96.6 177a7.9 7.9 0 0 0-10.1 5c-6.6 19.7-27.9 25.8-40.2 27.7 1.9-12.3 8-33.6 27.7-40.2a8 8 0 1 0-5.1-15.1c-16.4 5.4-28.4 18.4-34.8 37.5a91.8 91.8 0 0 0-4.6 26.6 8 8 0 0 0 8 8 91.8 91.8 0 0 0 26.6-4.6c19.1-6.4 32.1-18.4 37.5-34.8a7.9 7.9 0 0 0-5-10.1"/><path fill="currentColor" d="M227.6 41.8a15.7 15.7 0 0 0-13.4-13.4c-11.3-1.7-40.6-2.5-69.2 26.1l-9 8.9H74.7a16.2 16.2 0 0 0-11.3 4.7l-32.3 32.4a15.9 15.9 0 0 0-4 15.9 16 16 0 0 0 12.2 11.1l39.5 7.9 41.8 41.8 7.9 39.5a16 16 0 0 0 11.1 12.2 14.7 14.7 0 0 0 4.6.7 15.6 15.6 0 0 0 11.3-4.7l32.4-32.3a16.2 16.2 0 0 0 4.7-11.3V120l8.9-9c28.6-28.6 27.8-57.9 26.1-69.2M74.7 79.4H120l-39.9 39.9-37.7-7.5Zm81.6-13.6c7.8-7.8 28.8-25.6 55.5-21.6 4 26.7-13.8 47.7-21.6 55.5L128 161.9 94.1 128Zm20.3 115.5-32.4 32.3-7.5-37.7 39.9-39.9Z"/></svg></div> <svg xmlns="http://www.w3.org/2000/svg" class="absolute dark:text-white/40 group-hover:size-5 group-hover:text-[#00DC82] right-4 size-4 text-[#020420]/20 top-4 transition-all" viewBox="0 0 256 256"><path fill="currentColor" d="M200 64v104a8 8 0 0 1-16 0V83.3L69.7 197.7a8.2 8.2 0 0 1-11.4 0 8.1 8.1 0 0 1 0-11.4L172.7 72H88a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8"/></svg> <h2 class="font-semibold mt-1 text-base">Deploy</h2> <p class="dark:text-gray-200 group-hover:dark:text-gray-100 text-gray-700 text-sm">Learn how to deploy your Nuxt project on different providers.</p> </a></div><footer class="lg:px-8 mb-6 mt-6 mx-auto px-4 sm:mb-0 sm:mt-10 sm:px-6 w-full"><ul class="flex gap-4 items-center justify-center"><li><a href="https://go.nuxt.com/github" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt GitHub Repository</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> </a></li><li><a href="https://go.nuxt.com/discord" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt Discord Server</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M20.317 4.37a19.8 19.8 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.3 18.3 0 0 0-5.487 0 13 13 0 0 0-.617-1.25.08.08 0 0 0-.079-.037A19.7 19.7 0 0 0 3.677 4.37a.1.1 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.08.08 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.08.08 0 0 0 .084-.028 14 14 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13 13 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10 10 0 0 0 .372-.292.07.07 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.07.07 0 0 1 .078.01q.181.149.373.292a.077.077 0 0 1-.006.127 12.3 12.3 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.08.08 0 0 0 .084.028 19.8 19.8 0 0 0 6.002-3.03.08.08 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.06.06 0 0 0-.031-.03M8.02 15.33c-1.182 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418m7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418"/></svg> </a></li><li><a href="https://go.nuxt.com/x" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt on X</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"/></svg> </a></li><li><a href="https://go.nuxt.com/bluesky" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt Bluesky</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364q.204-.03.415-.056-.207.033-.415.056c-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a9 9 0 0 1-.415-.056q.21.026.415.056c2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8"/></svg> </a></li><li><a href="https://go.nuxt.com/linkedin" target="_blank" class="dark:hover:text-white dark:text-gray-400 focus-visible:ring-2 hover:text-[#020420] text-gray-500"> <span class="sr-only">Nuxt Linkedin</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.06 2.06 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065m1.782 13.019H3.555V9h3.564zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0z"/></svg> </a></li></ul></footer></div></div>
|
|
30
30
|
</template>
|
|
31
31
|
|
|
32
32
|
<style scoped>
|
package/dist/index.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { AsyncLocalStorage } from 'node:async_hooks';
|
|
|
5
5
|
import { dirname, resolve, normalize, basename, extname, relative, isAbsolute, join } from 'pathe';
|
|
6
6
|
import { createHooks, createDebugger } from 'hookable';
|
|
7
7
|
import ignore from 'ignore';
|
|
8
|
-
import { useLogger, tryUseNuxt, useNuxt, directoryToURL, resolveFiles, resolvePath, defineNuxtModule, findPath, addPlugin, addTemplate, addTypeTemplate, addComponent, useNitro, addBuildPlugin, isIgnored, resolveAlias as resolveAlias$1, addPluginTemplate, addImportsSources, addVitePlugin, createIsIgnored, updateTemplates, tryResolveModule, normalizeModuleTranspilePath, resolveNuxtModule, resolveIgnorePatterns, logger as logger$1, createResolver, importModule, tryImportModule, runWithNuxtContext, nuxtCtx, loadNuxtConfig, addWebpackPlugin, addServerPlugin, installModules, addServerTemplate, addServerHandler, addRouteMiddleware, resolveModuleWithOptions, normalizeTemplate, normalizePlugin } from '@nuxt/kit';
|
|
8
|
+
import { useLogger, tryUseNuxt, useNuxt, directoryToURL, getLayerDirectories, resolveFiles, resolvePath, defineNuxtModule, findPath, addPlugin, addTemplate, addTypeTemplate, addComponent, useNitro, addBuildPlugin, isIgnored, resolveAlias as resolveAlias$1, addPluginTemplate, addImportsSources, addVitePlugin, createIsIgnored, updateTemplates, tryResolveModule, normalizeModuleTranspilePath, resolveNuxtModule, resolveIgnorePatterns, logger as logger$1, createResolver, importModule, tryImportModule, runWithNuxtContext, nuxtCtx, loadNuxtConfig, addWebpackPlugin, addServerPlugin, installModules, addServerTemplate, addServerHandler, addRouteMiddleware, resolveModuleWithOptions, normalizeTemplate, normalizePlugin } from '@nuxt/kit';
|
|
9
9
|
import { resolvePackageJSON, readPackageJSON } from 'pkg-types';
|
|
10
10
|
import { hash, isEqual, serialize } from 'ohash';
|
|
11
11
|
import consola, { consola as consola$1 } from 'consola';
|
|
@@ -13,7 +13,7 @@ import onChange from 'on-change';
|
|
|
13
13
|
import { colors } from 'consola/utils';
|
|
14
14
|
import { resolveCompatibilityDatesFromEnv, formatDate } from 'compatx';
|
|
15
15
|
import escapeRE from 'escape-string-regexp';
|
|
16
|
-
import { withTrailingSlash, parseURL, parseQuery, joinURL, withLeadingSlash, encodePath, withoutLeadingSlash } from 'ufo';
|
|
16
|
+
import { withTrailingSlash as withTrailingSlash$1, parseURL, parseQuery, joinURL, withLeadingSlash, encodePath, withoutLeadingSlash } from 'ufo';
|
|
17
17
|
import { ImpoundPlugin } from 'impound';
|
|
18
18
|
import defu$1, { defu } from 'defu';
|
|
19
19
|
import { satisfies, coerce } from 'semver';
|
|
@@ -150,7 +150,7 @@ async function resolveTypePath(path, subpath, searchPaths = tryUseNuxt()?.option
|
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
function getNameFromPath(path, relativeTo) {
|
|
153
|
-
const relativePath = relativeTo ? normalize(path).replace(withTrailingSlash(normalize(relativeTo)), "") : basename(path);
|
|
153
|
+
const relativePath = relativeTo ? normalize(path).replace(withTrailingSlash$1(normalize(relativeTo)), "") : basename(path);
|
|
154
154
|
const prefixParts = splitByCase(dirname(relativePath));
|
|
155
155
|
const fileName = basename(relativePath, extname(relativePath));
|
|
156
156
|
const segments = resolveComponentNameSegments(fileName.toLowerCase() === "index" ? "" : fileName, prefixParts).filter(Boolean);
|
|
@@ -256,9 +256,7 @@ const SegmentParserState = {
|
|
|
256
256
|
};
|
|
257
257
|
const enUSComparator = new Intl.Collator("en-US");
|
|
258
258
|
async function resolvePagesRoutes(pattern, nuxt = useNuxt()) {
|
|
259
|
-
const pagesDirs = nuxt.
|
|
260
|
-
(layer) => resolve(layer.config.srcDir, (layer.config.rootDir === nuxt.options.rootDir ? nuxt.options.dir : layer.config.dir)?.pages || "pages")
|
|
261
|
-
);
|
|
259
|
+
const pagesDirs = getLayerDirectories(nuxt).map((d) => d.appPages);
|
|
262
260
|
const scannedFiles = [];
|
|
263
261
|
for (const dir of pagesDirs) {
|
|
264
262
|
const files = await resolveFiles(dir, pattern);
|
|
@@ -1204,9 +1202,7 @@ const pagesModule = defineNuxtModule({
|
|
|
1204
1202
|
};
|
|
1205
1203
|
const useExperimentalTypedPages = nuxt.options.experimental.typedPages;
|
|
1206
1204
|
const builtInRouterOptions = await findPath(resolve(runtimeDir, "router.options")) || resolve(runtimeDir, "router.options");
|
|
1207
|
-
const pagesDirs = nuxt.
|
|
1208
|
-
(layer) => resolve(layer.config.srcDir, (layer.config.rootDir === nuxt.options.rootDir ? nuxt.options : layer.config).dir?.pages || "pages")
|
|
1209
|
-
);
|
|
1205
|
+
const pagesDirs = getLayerDirectories(nuxt).map((dirs) => dirs.appPages);
|
|
1210
1206
|
nuxt.options.alias["#vue-router"] = "vue-router";
|
|
1211
1207
|
const routerPath = await resolveTypePath("vue-router", "", nuxt.options.modulesDir) || "vue-router";
|
|
1212
1208
|
nuxt.hook("prepare:types", ({ tsConfig }) => {
|
|
@@ -1381,14 +1377,11 @@ const pagesModule = defineNuxtModule({
|
|
|
1381
1377
|
routerImports.from = "vue-router";
|
|
1382
1378
|
}
|
|
1383
1379
|
});
|
|
1384
|
-
const updateTemplatePaths = nuxt.
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
resolve(l.config.srcDir || l.cwd, dir?.middleware || "middleware") + "/"
|
|
1390
|
-
];
|
|
1391
|
-
});
|
|
1380
|
+
const updateTemplatePaths = getLayerDirectories(nuxt).flatMap((dirs) => [
|
|
1381
|
+
dirs.appPages,
|
|
1382
|
+
dirs.appLayouts,
|
|
1383
|
+
dirs.appMiddleware
|
|
1384
|
+
]);
|
|
1392
1385
|
function isPage(file, pages = nuxt.apps.default?.pages) {
|
|
1393
1386
|
if (!pages) {
|
|
1394
1387
|
return false;
|
|
@@ -2283,7 +2276,7 @@ async function scanComponents(dirs, srcDir) {
|
|
|
2283
2276
|
}
|
|
2284
2277
|
for (const _file of files) {
|
|
2285
2278
|
const filePath = join(dir.path, _file);
|
|
2286
|
-
if (scannedPaths.find((d) => filePath.startsWith(withTrailingSlash(d))) || isIgnored(filePath)) {
|
|
2279
|
+
if (scannedPaths.find((d) => filePath.startsWith(withTrailingSlash$1(d))) || isIgnored(filePath)) {
|
|
2287
2280
|
continue;
|
|
2288
2281
|
}
|
|
2289
2282
|
if (filePaths.has(filePath)) {
|
|
@@ -3662,7 +3655,7 @@ const importsModule = defineNuxtModule({
|
|
|
3662
3655
|
});
|
|
3663
3656
|
nuxt.options.alias["#imports"] = join(nuxt.options.buildDir, "imports");
|
|
3664
3657
|
addBuildPlugin(TransformPlugin({ ctx, options, sourcemap: !!nuxt.options.sourcemap.server || !!nuxt.options.sourcemap.client }));
|
|
3665
|
-
const priorities = nuxt.
|
|
3658
|
+
const priorities = getLayerDirectories(nuxt).map((dirs, i) => [dirs.app, -i]).sort(([a], [b]) => b.length - a.length);
|
|
3666
3659
|
const IMPORTS_TEMPLATE_RE = /\/imports\.(?:d\.ts|mjs)$/;
|
|
3667
3660
|
function isImportsTemplate(template) {
|
|
3668
3661
|
return IMPORTS_TEMPLATE_RE.test(template.filename);
|
|
@@ -3765,7 +3758,7 @@ function addDeclarationTemplates(ctx, options) {
|
|
|
3765
3758
|
});
|
|
3766
3759
|
}
|
|
3767
3760
|
|
|
3768
|
-
const version = "4.1.
|
|
3761
|
+
const version = "4.1.1-29280872.e12125a9";
|
|
3769
3762
|
|
|
3770
3763
|
const createImportProtectionPatterns = (nuxt, options) => {
|
|
3771
3764
|
const patterns = [];
|
|
@@ -4006,12 +3999,13 @@ const logLevelMapReverse = {
|
|
|
4006
3999
|
const NODE_MODULES_RE = /(?<=\/)node_modules\/(.+)$/;
|
|
4007
4000
|
const PNPM_NODE_MODULES_RE = /\.pnpm\/.+\/node_modules\/(.+)$/;
|
|
4008
4001
|
async function initNitro(nuxt) {
|
|
4009
|
-
const
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
|
|
4002
|
+
const layerDirs = getLayerDirectories(nuxt);
|
|
4003
|
+
const excludePaths = layerDirs.flatMap((dirs) => [
|
|
4004
|
+
dirs.root.match(NODE_MODULES_RE)?.[1]?.replace(/\/$/, ""),
|
|
4005
|
+
dirs.root.match(PNPM_NODE_MODULES_RE)?.[1]?.replace(/\/$/, "")
|
|
4006
|
+
].filter((dir) => Boolean(dir)).map((dir) => escapeRE(dir)));
|
|
4013
4007
|
const excludePattern = excludePaths.length ? [new RegExp(`node_modules\\/(?!${excludePaths.join("|")})`)] : [/node_modules/];
|
|
4014
|
-
const rootDirWithSlash = withTrailingSlash(nuxt.options.rootDir);
|
|
4008
|
+
const rootDirWithSlash = withTrailingSlash$1(nuxt.options.rootDir);
|
|
4015
4009
|
const moduleEntryPaths = [];
|
|
4016
4010
|
for (const m of nuxt.options._installedModules) {
|
|
4017
4011
|
const path = m.meta?.rawPath || m.entryPath;
|
|
@@ -4078,7 +4072,7 @@ async function initNitro(nuxt) {
|
|
|
4078
4072
|
projectRoot: nuxt.options.rootDir,
|
|
4079
4073
|
filename: join(nuxt.options.analyzeDir, "{name}.html")
|
|
4080
4074
|
} : false,
|
|
4081
|
-
scanDirs:
|
|
4075
|
+
scanDirs: layerDirs.map((dirs) => dirs.server),
|
|
4082
4076
|
renderer: resolve(distDir, "core/runtime/nitro/handlers/renderer"),
|
|
4083
4077
|
nodeModulesDirs: nuxt.options.modulesDir,
|
|
4084
4078
|
handlers: nuxt.options.serverHandlers,
|
|
@@ -4095,9 +4089,7 @@ async function initNitro(nuxt) {
|
|
|
4095
4089
|
"/__nuxt_error": { cache: false }
|
|
4096
4090
|
},
|
|
4097
4091
|
appConfig: nuxt.options.appConfig,
|
|
4098
|
-
appConfigFiles:
|
|
4099
|
-
(layer) => resolve(layer.config.srcDir, "app.config")
|
|
4100
|
-
),
|
|
4092
|
+
appConfigFiles: layerDirs.map((dirs) => join(dirs.app, "app.config")),
|
|
4101
4093
|
typescript: {
|
|
4102
4094
|
strict: true,
|
|
4103
4095
|
generateTsConfig: true,
|
|
@@ -4116,12 +4108,7 @@ async function initNitro(nuxt) {
|
|
|
4116
4108
|
join(moduleDir, "dist/runtime/server")
|
|
4117
4109
|
];
|
|
4118
4110
|
}),
|
|
4119
|
-
...nuxt.options.
|
|
4120
|
-
(layer) => relativeWithDot(
|
|
4121
|
-
nuxt.options.buildDir,
|
|
4122
|
-
resolve(layer.config.rootDir, layer.config.dir?.shared ?? "shared", "**/*.d.ts")
|
|
4123
|
-
)
|
|
4124
|
-
)
|
|
4111
|
+
...getLayerDirectories(nuxt).map((dirs) => relativeWithDot(nuxt.options.buildDir, join(dirs.shared, "**/*.d.ts")))
|
|
4125
4112
|
],
|
|
4126
4113
|
exclude: [
|
|
4127
4114
|
...nuxt.options.modulesDir.map((m) => relativeWithDot(nuxt.options.buildDir, m)),
|
|
@@ -4136,7 +4123,7 @@ async function initNitro(nuxt) {
|
|
|
4136
4123
|
maxAge: 31536e3,
|
|
4137
4124
|
baseURL: nuxt.options.app.buildAssetsDir
|
|
4138
4125
|
},
|
|
4139
|
-
...
|
|
4126
|
+
...getLayerDirectories(nuxt).filter((dirs) => existsSync(dirs.public)).map((dirs) => ({ dir: dirs.public }))
|
|
4140
4127
|
],
|
|
4141
4128
|
prerender: {
|
|
4142
4129
|
ignoreUnprefixedPublicAssets: true,
|
|
@@ -4158,7 +4145,7 @@ async function initNitro(nuxt) {
|
|
|
4158
4145
|
"nuxt-nightly/dist",
|
|
4159
4146
|
distDir,
|
|
4160
4147
|
// Ensure app config files have auto-imports injected even if they are pure .js files
|
|
4161
|
-
...nuxt.
|
|
4148
|
+
...getLayerDirectories(nuxt).map((dirs) => join(dirs.app, "app.config"))
|
|
4162
4149
|
],
|
|
4163
4150
|
traceInclude: [
|
|
4164
4151
|
// force include files used in generated code from the runtime-compiler
|
|
@@ -4353,8 +4340,8 @@ async function initNitro(nuxt) {
|
|
|
4353
4340
|
}
|
|
4354
4341
|
nitroConfig.rollupConfig.plugins = await nitroConfig.rollupConfig.plugins || [];
|
|
4355
4342
|
nitroConfig.rollupConfig.plugins = toArray(nitroConfig.rollupConfig.plugins);
|
|
4356
|
-
const sharedDir = withTrailingSlash(resolve(nuxt.options.rootDir, nuxt.options.dir.shared));
|
|
4357
|
-
const relativeSharedDir = withTrailingSlash(relative(nuxt.options.rootDir, resolve(nuxt.options.rootDir, nuxt.options.dir.shared)));
|
|
4343
|
+
const sharedDir = withTrailingSlash$1(resolve(nuxt.options.rootDir, nuxt.options.dir.shared));
|
|
4344
|
+
const relativeSharedDir = withTrailingSlash$1(relative(nuxt.options.rootDir, resolve(nuxt.options.rootDir, nuxt.options.dir.shared)));
|
|
4358
4345
|
const sharedPatterns = [/^#shared\//, new RegExp("^" + escapeRE(sharedDir)), new RegExp("^" + escapeRE(relativeSharedDir))];
|
|
4359
4346
|
nitroConfig.rollupConfig.plugins.push(
|
|
4360
4347
|
ImpoundPlugin.rollup({
|
|
@@ -4663,6 +4650,7 @@ const schemaModule = defineNuxtModule({
|
|
|
4663
4650
|
schema = await resolveSchema$1();
|
|
4664
4651
|
});
|
|
4665
4652
|
nuxt.hooks.hook("build:done", () => writeSchema(schema));
|
|
4653
|
+
const layerDirs = getLayerDirectories(nuxt);
|
|
4666
4654
|
if (nuxt.options.dev) {
|
|
4667
4655
|
const onChange = debounce(async () => {
|
|
4668
4656
|
schema = await resolveSchema$1();
|
|
@@ -4673,8 +4661,8 @@ const schemaModule = defineNuxtModule({
|
|
|
4673
4661
|
const { subscribe } = await importModule("@parcel/watcher", {
|
|
4674
4662
|
url: [nuxt.options.rootDir, ...nuxt.options.modulesDir].map((dir) => directoryToURL(dir))
|
|
4675
4663
|
});
|
|
4676
|
-
for (const
|
|
4677
|
-
const subscription = await subscribe(
|
|
4664
|
+
for (const dirs of layerDirs) {
|
|
4665
|
+
const subscription = await subscribe(dirs.root, onChange, {
|
|
4678
4666
|
ignore: ["!nuxt.schema.*"]
|
|
4679
4667
|
});
|
|
4680
4668
|
nuxt.hook("close", () => subscription.unsubscribe());
|
|
@@ -4685,9 +4673,9 @@ const schemaModule = defineNuxtModule({
|
|
|
4685
4673
|
}
|
|
4686
4674
|
}
|
|
4687
4675
|
const isIgnored = createIsIgnored(nuxt);
|
|
4688
|
-
const
|
|
4676
|
+
const rootDirs = layerDirs.map((layer) => layer.root);
|
|
4689
4677
|
const SCHEMA_RE = /(?:^|\/)nuxt.schema.\w+$/;
|
|
4690
|
-
const watcher = watch$1(
|
|
4678
|
+
const watcher = watch$1(rootDirs, {
|
|
4691
4679
|
...nuxt.options.watchers.chokidar,
|
|
4692
4680
|
depth: 1,
|
|
4693
4681
|
ignored: [
|
|
@@ -4703,8 +4691,8 @@ const schemaModule = defineNuxtModule({
|
|
|
4703
4691
|
async function resolveSchema$1() {
|
|
4704
4692
|
globalThis.defineNuxtSchema = (val) => val;
|
|
4705
4693
|
const schemaDefs = [nuxt.options.$schema];
|
|
4706
|
-
for (const
|
|
4707
|
-
const filePath = await resolver.resolvePath(
|
|
4694
|
+
for (const dirs of layerDirs) {
|
|
4695
|
+
const filePath = await resolver.resolvePath(join(dirs.root, "nuxt.schema"));
|
|
4708
4696
|
if (filePath && existsSync(filePath)) {
|
|
4709
4697
|
let loadedConfig;
|
|
4710
4698
|
try {
|
|
@@ -5428,6 +5416,7 @@ const nightlies = {
|
|
|
5428
5416
|
};
|
|
5429
5417
|
let warnedAboutCompatDate = false;
|
|
5430
5418
|
async function initNuxt(nuxt) {
|
|
5419
|
+
const layerDirs = getLayerDirectories(nuxt);
|
|
5431
5420
|
for (const config of nuxt.options._layers.map((layer) => layer.config).reverse()) {
|
|
5432
5421
|
if (config.hooks) {
|
|
5433
5422
|
nuxt.hooks.addHooks(config.hooks);
|
|
@@ -5503,8 +5492,8 @@ Using \`${fallbackCompatibilityDate}\` as fallback. More info at: ${colors.under
|
|
|
5503
5492
|
opts.tsConfig.compilerOptions = defu$1(opts.tsConfig.compilerOptions, { paths: { ...paths } });
|
|
5504
5493
|
opts.nodeTsConfig.compilerOptions = defu$1(opts.nodeTsConfig.compilerOptions, { paths: { ...paths } });
|
|
5505
5494
|
opts.sharedTsConfig.compilerOptions = defu$1(opts.sharedTsConfig.compilerOptions, { paths: { ...paths } });
|
|
5506
|
-
for (const
|
|
5507
|
-
const declaration = join(
|
|
5495
|
+
for (const dirs of layerDirs) {
|
|
5496
|
+
const declaration = join(dirs.root, "index.d.ts");
|
|
5508
5497
|
if (existsSync(declaration)) {
|
|
5509
5498
|
opts.references.push({ path: declaration });
|
|
5510
5499
|
opts.nodeReferences.push({ path: declaration });
|
|
@@ -5621,10 +5610,18 @@ Using \`${fallbackCompatibilityDate}\` as fallback. More info at: ${colors.under
|
|
|
5621
5610
|
}
|
|
5622
5611
|
nuxt.options.build.transpile.push("nuxt/app");
|
|
5623
5612
|
nuxt.options.build.transpile.push(
|
|
5624
|
-
...
|
|
5613
|
+
...layerDirs.filter((i) => i.root.includes("node_modules")).map((i) => i.root.replace(/\/$/, ""))
|
|
5625
5614
|
);
|
|
5626
|
-
const locallyScannedLayersDirs =
|
|
5627
|
-
|
|
5615
|
+
const locallyScannedLayersDirs = layerDirs.map((l) => join(l.root, "layers/"));
|
|
5616
|
+
const rootWithTrailingSlash = withTrailingSlash(nuxt.options.rootDir);
|
|
5617
|
+
for (const dirs of layerDirs) {
|
|
5618
|
+
if (dirs.root === rootWithTrailingSlash) {
|
|
5619
|
+
continue;
|
|
5620
|
+
}
|
|
5621
|
+
if (locallyScannedLayersDirs.every((dir) => !dirs.root.startsWith(dir))) {
|
|
5622
|
+
nuxt.options.modulesDir.push(join(dirs.root, "node_modules"));
|
|
5623
|
+
}
|
|
5624
|
+
}
|
|
5628
5625
|
await nuxt.callHook("modules:before");
|
|
5629
5626
|
const { paths: watchedModulePaths, resolvedModulePaths, modules } = await resolveModules(nuxt);
|
|
5630
5627
|
nuxt.options.watch.push(...watchedModulePaths);
|
|
@@ -5816,7 +5813,7 @@ export default defineNuxtPlugin({
|
|
|
5816
5813
|
if (watchedModulePaths.has(path)) {
|
|
5817
5814
|
return nuxt.callHook("restart", { hard: true });
|
|
5818
5815
|
}
|
|
5819
|
-
const layerRelativePaths = new Set(nuxt.
|
|
5816
|
+
const layerRelativePaths = new Set(getLayerDirectories(nuxt).map((l) => relative(l.app, path)));
|
|
5820
5817
|
for (const pattern of nuxt.options.watch) {
|
|
5821
5818
|
if (typeof pattern === "string") {
|
|
5822
5819
|
if (pattern === path || layerRelativePaths.has(pattern)) {
|
|
@@ -5995,10 +5992,10 @@ async function resolveModules(nuxt) {
|
|
|
5995
5992
|
}
|
|
5996
5993
|
}
|
|
5997
5994
|
}
|
|
5998
|
-
const modulesDir = (config.rootDir === nuxt.options.rootDir ? nuxt.options.dir : config.dir)?.modules || "modules";
|
|
5999
|
-
const layerModules = await resolveFiles(
|
|
6000
|
-
|
|
6001
|
-
|
|
5995
|
+
const modulesDir = resolve(config.srcDir, (config.rootDir === nuxt.options.rootDir ? nuxt.options.dir : config.dir)?.modules || "modules");
|
|
5996
|
+
const layerModules = await resolveFiles(modulesDir, [
|
|
5997
|
+
`*{${nuxt.options.extensions.join(",")}}`,
|
|
5998
|
+
`*/index{${nuxt.options.extensions.join(",")}}`
|
|
6002
5999
|
]);
|
|
6003
6000
|
for (const module of layerModules) {
|
|
6004
6001
|
paths.add(module);
|
|
@@ -6049,6 +6046,9 @@ async function resolveTypescriptPaths(nuxt) {
|
|
|
6049
6046
|
})).then((r) => r.flat()));
|
|
6050
6047
|
return paths;
|
|
6051
6048
|
}
|
|
6049
|
+
function withTrailingSlash(dir) {
|
|
6050
|
+
return dir.replace(/[^/]$/, "$&/");
|
|
6051
|
+
}
|
|
6052
6052
|
|
|
6053
6053
|
const vueShim = {
|
|
6054
6054
|
filename: "types/vue-shim.d.ts",
|
|
@@ -6741,26 +6741,18 @@ async function compileTemplate(template, ctx) {
|
|
|
6741
6741
|
throw new Error("[nuxt] Invalid template. Templates must have either `src` or `getContents`: " + JSON.stringify(template));
|
|
6742
6742
|
}
|
|
6743
6743
|
async function resolveApp(nuxt, app) {
|
|
6744
|
-
|
|
6745
|
-
|
|
6746
|
-
|
|
6747
|
-
join(layer.config.srcDir, "app")
|
|
6748
|
-
])
|
|
6749
|
-
);
|
|
6744
|
+
const layerDirs = getLayerDirectories(nuxt);
|
|
6745
|
+
const reversedLayerDirs = [...layerDirs].reverse();
|
|
6746
|
+
app.mainComponent ||= await findPath(layerDirs.flatMap((d) => [join(d.app, "App"), join(d.app, "app")]));
|
|
6750
6747
|
app.mainComponent ||= resolve(nuxt.options.appDir, "components/welcome.vue");
|
|
6751
6748
|
app.rootComponent ||= await findPath(["~/app.root", resolve(nuxt.options.appDir, "components/nuxt-root.vue")]);
|
|
6752
|
-
app.errorComponent ||= await findPath(
|
|
6753
|
-
nuxt.options._layers.map((layer) => join(layer.config.srcDir, "error"))
|
|
6754
|
-
) ?? resolve(nuxt.options.appDir, "components/nuxt-error-page.vue");
|
|
6749
|
+
app.errorComponent ||= await findPath(layerDirs.map((d) => join(d.app, "error"))) ?? resolve(nuxt.options.appDir, "components/nuxt-error-page.vue");
|
|
6755
6750
|
const extensionGlob = nuxt.options.extensions.join(",");
|
|
6756
|
-
const layerConfigs = nuxt.options._layers.map((layer) => layer.config);
|
|
6757
|
-
const reversedConfigs = layerConfigs.slice().reverse();
|
|
6758
6751
|
const layouts = {};
|
|
6759
|
-
for (const
|
|
6760
|
-
const
|
|
6761
|
-
const layoutFiles = await resolveFiles(config.srcDir, `${layoutDir}/**/*{${extensionGlob}}`);
|
|
6752
|
+
for (const dirs of layerDirs) {
|
|
6753
|
+
const layoutFiles = await resolveFiles(dirs.appLayouts, `**/*{${extensionGlob}}`);
|
|
6762
6754
|
for (const file of layoutFiles) {
|
|
6763
|
-
const name = getNameFromPath(file,
|
|
6755
|
+
const name = getNameFromPath(file, dirs.appLayouts);
|
|
6764
6756
|
if (!name) {
|
|
6765
6757
|
logger.warn(`No layout name could be resolved for \`${resolveToAlias(file, nuxt)}\`. Bear in mind that \`index\` is ignored for the purpose of creating a layout name.`);
|
|
6766
6758
|
continue;
|
|
@@ -6769,11 +6761,10 @@ async function resolveApp(nuxt, app) {
|
|
|
6769
6761
|
}
|
|
6770
6762
|
}
|
|
6771
6763
|
let middleware = [];
|
|
6772
|
-
for (const
|
|
6773
|
-
const
|
|
6774
|
-
|
|
6775
|
-
|
|
6776
|
-
`${middlewareDir}/*/index{${extensionGlob}}`
|
|
6764
|
+
for (const dirs of reversedLayerDirs) {
|
|
6765
|
+
const middlewareFiles = await resolveFiles(dirs.appMiddleware, [
|
|
6766
|
+
`*{${extensionGlob}}`,
|
|
6767
|
+
`*/index{${extensionGlob}}`
|
|
6777
6768
|
]);
|
|
6778
6769
|
for (const file of middlewareFiles) {
|
|
6779
6770
|
const name = getNameFromPath(file);
|
|
@@ -6784,15 +6775,17 @@ async function resolveApp(nuxt, app) {
|
|
|
6784
6775
|
middleware.push({ name, path: file, global: hasSuffix(file, ".global") });
|
|
6785
6776
|
}
|
|
6786
6777
|
}
|
|
6778
|
+
const reversedLayers = nuxt.options._layers.slice().reverse();
|
|
6787
6779
|
let plugins = [];
|
|
6788
|
-
for (
|
|
6789
|
-
const
|
|
6780
|
+
for (let i = 0; i < reversedLayerDirs.length; i++) {
|
|
6781
|
+
const config = reversedLayers[i].config;
|
|
6782
|
+
const dirs = reversedLayerDirs[i];
|
|
6790
6783
|
plugins.push(...[
|
|
6791
6784
|
...config.plugins || [],
|
|
6792
|
-
...
|
|
6793
|
-
|
|
6794
|
-
|
|
6795
|
-
])
|
|
6785
|
+
...await resolveFiles(dirs.appPlugins, [
|
|
6786
|
+
`*{${extensionGlob}}`,
|
|
6787
|
+
`*/index{${extensionGlob}}`
|
|
6788
|
+
])
|
|
6796
6789
|
].map((plugin) => normalizePlugin(plugin)));
|
|
6797
6790
|
}
|
|
6798
6791
|
for (const p of [...nuxt.options.plugins].reverse()) {
|
|
@@ -6804,8 +6797,8 @@ async function resolveApp(nuxt, app) {
|
|
|
6804
6797
|
middleware = uniqueBy(await resolvePaths(nuxt, [...middleware].reverse(), "path"), "name").reverse();
|
|
6805
6798
|
plugins = uniqueBy(await resolvePaths(nuxt, plugins, "src"), "src");
|
|
6806
6799
|
const configs = [];
|
|
6807
|
-
for (const
|
|
6808
|
-
const appConfigPath = await findPath(
|
|
6800
|
+
for (const dirs of layerDirs) {
|
|
6801
|
+
const appConfigPath = await findPath(join(dirs.app, "app.config"));
|
|
6809
6802
|
if (appConfigPath) {
|
|
6810
6803
|
configs.push(appConfigPath);
|
|
6811
6804
|
}
|
|
@@ -7170,8 +7163,8 @@ async function build(nuxt) {
|
|
|
7170
7163
|
nuxt.hook("builder:watch", async (event, relativePath) => {
|
|
7171
7164
|
if (event === "add" || event === "unlink") {
|
|
7172
7165
|
const path = resolve(nuxt.options.srcDir, relativePath);
|
|
7173
|
-
for (const
|
|
7174
|
-
const relativePath2 = relative(
|
|
7166
|
+
for (const dirs of getLayerDirectories(nuxt)) {
|
|
7167
|
+
const relativePath2 = relative(dirs.app, path);
|
|
7175
7168
|
if (/^app\./i.test(relativePath2)) {
|
|
7176
7169
|
app.mainComponent = void 0;
|
|
7177
7170
|
break;
|
|
@@ -7236,7 +7229,7 @@ async function watch(nuxt) {
|
|
|
7236
7229
|
function createWatcher() {
|
|
7237
7230
|
const nuxt = useNuxt();
|
|
7238
7231
|
const isIgnored2 = createIsIgnored(nuxt);
|
|
7239
|
-
const watcher = watch$1(nuxt.
|
|
7232
|
+
const watcher = watch$1(getLayerDirectories(nuxt).map((dirs) => dirs.app), {
|
|
7240
7233
|
...nuxt.options.watchers.chokidar,
|
|
7241
7234
|
ignoreInitial: true,
|
|
7242
7235
|
ignored: [isIgnored2, /[\\/]node_modules[\\/]/]
|
|
@@ -7368,12 +7361,11 @@ async function loadBuilder(nuxt, builder) {
|
|
|
7368
7361
|
}
|
|
7369
7362
|
function resolvePathsToWatch(nuxt, opts = {}) {
|
|
7370
7363
|
const pathsToWatch = /* @__PURE__ */ new Set();
|
|
7371
|
-
for (const
|
|
7372
|
-
|
|
7373
|
-
if (!dir || isIgnored(dir)) {
|
|
7364
|
+
for (const dirs of getLayerDirectories(nuxt)) {
|
|
7365
|
+
if (!dirs.app || isIgnored(dirs.app)) {
|
|
7374
7366
|
continue;
|
|
7375
7367
|
}
|
|
7376
|
-
pathsToWatch.add(
|
|
7368
|
+
pathsToWatch.add(dirs.app);
|
|
7377
7369
|
}
|
|
7378
7370
|
for (const pattern of nuxt.options.watch) {
|
|
7379
7371
|
if (typeof pattern !== "string") {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-nightly",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.1-29280872.e12125a9",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/nuxt/nuxt.git",
|
|
@@ -67,10 +67,10 @@
|
|
|
67
67
|
"@nuxt/cli": "npm:@nuxt/cli-nightly@latest",
|
|
68
68
|
"@nuxt/devalue": "^2.0.2",
|
|
69
69
|
"@nuxt/devtools": "^2.6.3",
|
|
70
|
-
"@nuxt/kit": "npm:@nuxt/kit-nightly@4.1.
|
|
71
|
-
"@nuxt/schema": "npm:@nuxt/schema-nightly@4.1.
|
|
70
|
+
"@nuxt/kit": "npm:@nuxt/kit-nightly@4.1.1-29280872.e12125a9",
|
|
71
|
+
"@nuxt/schema": "npm:@nuxt/schema-nightly@4.1.1-29280872.e12125a9",
|
|
72
72
|
"@nuxt/telemetry": "^2.6.6",
|
|
73
|
-
"@nuxt/vite-builder": "npm:@nuxt/vite-builder-nightly@4.1.
|
|
73
|
+
"@nuxt/vite-builder": "npm:@nuxt/vite-builder-nightly@4.1.1-29280872.e12125a9",
|
|
74
74
|
"@unhead/vue": "^2.0.14",
|
|
75
75
|
"@vue/shared": "^3.5.20",
|
|
76
76
|
"c12": "^3.2.0",
|