Nuxt Well-Known
Nuxt (v3.x) module to handle .well-known
URIs with middlewares
See https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml
⚠️ Only tested with SSR mode (not SSG and CSR)
Nuxt Well-Known module is integrated with the Nuxt Devtools.
Well-Known URIs Supported
security.txt
change-password
- Dynamic routes with content:
content-uris
Quick Setup
- Add
@zadigetvoltaire/nuxt-well-known
dependency to your project
pnpm add -D @zadigetvoltaire/nuxt-well-known
yarn add --dev @zadigetvoltaire/nuxt-well-known
npm install --save-dev @zadigetvoltaire/nuxt-well-known
- Add
@zadigetvoltaire/nuxt-well-known
to the modules
section of nuxt.config.ts
export default defineNuxtConfig({
modules: [
'@zadigetvoltaire/nuxt-well-known'
],
})
- Add configuration in
nuxtConfig.wellKnown
or in nuxtConfig.runtimeConfig.public.wellKnown
This module supports 2 ways of configuration:
- Directly in key
wellKnown
of the Nuxt config - In public runtimeConfig: useful to override the config with environment variables and handle multiple environments
export default defineNuxtConfig({
...
wellKnown: {
devtools: true,
securityTxt: {
disabled: false,
contacts: ['me@example.com'],
expires: new Date('2025-02-03')
},
changePassword: {
disabled: false,
redirectTo: 'https://example.com/password-recovery'
}
}
...
runtimeConfig: {
public: {
wellKnown: {
devtools: true,
securityTxt: {
disabled: false,
contacts: ['me@example.com'],
expires: new Date('2025-02-03').toISOString()
},
changePassword: {
disabled: false,
redirectTo: 'https://example.com/password-recovery'
}
}
}
}
})
Module Options
interface ModuleOptions {
devtools?: boolean
securityTxt?: SecurityTxtOptions,
changePassword?: ChangePasswordOptions,
contentUris?: ContentUriOptions[],
}
Middlewares
security.txt
This middleware will generate a security.txt
file available under /.well-known/security.txt
URI.
Model options:
type SecurityTxtOptions = {
disabled?: boolean;
contacts: string[];
expires: string | Date;
encryption?: string[];
acknowledgments?: string[];
preferredLanguages?: string[];
canonical?: string[];
policy?: string[];
hiring?: string[];
}
change-password
This middleware will redirect requests of /.well-known/change-password
to the configured target URL.
type ChangePasswordOptions = {
disabled?: boolean;
redirectTo: string;
}
content-uris
With this middleware, you can generate uris with content
type ContentUriOptions = {
disabled?: boolean;
path: string;
content: string;
}
Example:
export default defineNuxtConfig({
modules: [
'@zadigetvoltaire/nuxt-well-known',
],
wellKnown: {
contentUris: [
{ path: 'apple-developer-merchantid-domain-association', content: 'merchantid' },
{ path: 'content-uri.txt', content: 'content-uri' }
]
}
})
Will render:
https://example.com/.well-known/apple-developer-merchantid-domain-association
--> merchantid
https://example.com/.well-known/content-uri.txt
--> content-uri
That's it! You can now use Nuxt Well-Known in your Nuxt app ✨
Contributing
make start
pnpm dev
pnpm play:prod
pnpm lint
pnpm test
pnpm test:watch
Release new version
- Execute release command
⚠ This command should be executed only on the main branch
This command will:
- Generate the CHANGELOG.md and push it with a release commit
- Bump the package version
- Create and push the new tag
- Create a GitHub release to trigger the library publish pipeline
pnpm release
© Zadig&Voltaire is a registered trademark of ZV FRANCE