Files
tools/docs/nuxt.config.ts
T
robonen 6de7c72fb3 fix(docs): shorten TMPDIR on macOS so the dev server's vite-node socket fits
Nuxt's dev vite-node IPC uses a unix socket under $TMPDIR. macOS's default /var/folders/… tmp dir pushes the path to ~110 chars, past the ~104-char sun_path limit, so every request 500s with 'connect EINVAL'. Point $TMPDIR at /tmp on darwin (guarded; other platforms untouched) before the builder generates the socket path.
2026-06-08 21:11:53 +07:00

83 lines
2.5 KiB
TypeScript

import { tmpdir } from 'node:os';
import tailwindcss from '@tailwindcss/vite';
// macOS dev fix: Nuxt's vite-node IPC uses a unix socket under $TMPDIR, and the
// default macOS temp dir (/var/folders/…) pushes the socket path past the
// ~104-char sun_path limit → `connect EINVAL` on every request. Point $TMPDIR
// at a short directory so `nuxt dev` works. Other platforms are unaffected.
if (process.platform === 'darwin' && tmpdir().length > 30)
process.env.TMPDIR = '/tmp';
export default defineNuxtConfig({
future: {
compatibilityVersion: 4,
},
modules: [
'@nuxt/fonts',
'./modules/extractor',
],
vite: {
plugins: [
tailwindcss() as any,
],
},
css: ['~/assets/css/main.css'],
ssr: true,
// Dev-only: the file-based payload cache collides on parent+child routes that
// share a segment (e.g. `/vue` is written as a file while `/vue/*` needs `vue`
// to be a directory → ENOTDIR). Production prerender writes each route to its
// own dir, so payload extraction is left enabled there.
$development: {
experimental: { payloadExtraction: false },
},
routeRules: {
'/**': { prerender: true },
// The MCP endpoint is a dynamic POST handler — never prerender it.
'/mcp': { prerender: false },
},
nitro: {
prerender: {
crawlLinks: true,
},
},
fonts: {
families: [
{ name: 'Inter', provider: 'google', weights: [400, 500, 600, 700] },
{ name: 'JetBrains Mono', provider: 'google', weights: [400, 500] },
],
},
app: {
pageTransition: { name: 'page', mode: 'out-in' },
head: {
title: '@robonen/tools — Documentation',
meta: [
{ name: 'description', content: 'Auto-generated documentation for the @robonen/tools monorepo' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ name: 'theme-color', content: '#ffffff', media: '(prefers-color-scheme: light)' },
{ name: 'theme-color', content: '#0a0a0a', media: '(prefers-color-scheme: dark)' },
],
htmlAttrs: {
lang: 'en',
},
script: [
{
// Set the theme class before first paint to avoid a flash.
innerHTML: `(function(){try{var t=localStorage.getItem('docs-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme: dark)').matches);document.documentElement.classList.toggle('dark',d);}catch(e){}})();`,
tagPosition: 'head',
},
],
},
},
compatibilityDate: '2026-02-15',
});