Layout Names
Layout names are normalized using Nuxt-compatible rules. meta.layout, defaultLayout and the generated layouts map all use these normalized names, never raw file paths.
Normalization Rules
- The file extension is dropped.
- Each path segment is converted to kebab-case.
- Nested paths are flattened with
-. - Overlapping segments between the directory and the filename are collapsed.
- An
indexfilename resolves to its directory name.
Examples
| File | Layout name |
|---|---|
src/layouts/default.vue | default |
src/layouts/someLayout.vue | some-layout |
src/layouts/desktop/default.vue | desktop-default |
src/layouts/desktop/index.vue | desktop |
src/layouts/desktop/Desktop.vue | desktop |
src/layouts/desktop/DesktopDefault.vue | desktop-default |
src/layouts/desktop-base/DesktopBase.vue | desktop-base |
For clarity, prefer filenames that match the final layout name, such as DesktopDefault.vue, DesktopBase.vue, and Desktop.vue.
Using a Layout Name
vue
<route lang="yaml">
meta:
layout: desktop-default
</route>Breaking change in v3
Nested layouts used to keep slash-separated names such as sub/layoutsub. In v3 they are sub-layoutsub. See Migration.