Files
inkreach-official-website/apps/website/.agents/skills/nuxt-seo/references/site-config.md
T

102 lines
2.1 KiB
Markdown

# Site Config
Foundation module providing shared configuration for all SEO modules.
## Configuration
```ts
// nuxt.config.ts
export default defineNuxtConfig({
site: {
url: 'https://example.com', // Required for absolute URLs
name: 'My Site', // Site name (used in titles, schema)
description: 'Site description', // Default meta description
defaultLocale: 'en', // Default language
indexable: true, // Allow search engine indexing
trailingSlash: false, // URL trailing slash preference
}
})
```
## Environment-Based Indexing
Control indexing per environment using `NUXT_SITE_*` env vars:
```bash
# .env.production
NUXT_SITE_URL=https://example.com
NUXT_SITE_ENV=production
# .env.staging
NUXT_SITE_URL=https://staging.example.com
NUXT_SITE_ENV=staging
```
The module auto-detects `env` and sets `indexable: false` for non-production environments.
For explicit control:
```ts
export default defineNuxtConfig({
site: {
url: process.env.NUXT_SITE_URL,
// Explicit: only index when explicitly set to 'true'
indexable: process.env.NUXT_SITE_INDEXABLE === 'true'
}
})
```
**Note:** `!== 'false'` defaults to `true` when env var is undefined - use `=== 'true'` for fail-safe behavior.
## Runtime Access
```ts
const site = useSiteConfig()
console.log(site.url, site.name, site.description)
```
Works in components, composables, and server routes.
## i18n Integration
Automatically integrates with `@nuxtjs/i18n`:
```ts
export default defineNuxtConfig({
site: {
url: 'https://example.com',
defaultLocale: 'en',
},
i18n: {
locales: [
{ code: 'en', language: 'en-US' },
{ code: 'fr', language: 'fr-FR' },
]
}
})
```
Locale-specific overrides in `site` object:
```ts
site: {
name: 'My Site',
locales: {
fr: { name: 'Mon Site' }
}
}
```
## Override Per-Page
Use route rules for page-specific config:
```ts
export default defineNuxtConfig({
routeRules: {
'/admin/**': { site: { indexable: false } },
'/fr/**': { site: { name: 'Mon Site', defaultLocale: 'fr' } }
}
})
```