Use Visual Editor with Nuxt 3
Learn how to use Visual Editor with a Nuxt 3-based website.
Configure Visual Editor for a Nuxt 3 project
Section titled “Configure Visual Editor for a Nuxt 3 project”Nuxt 3 is supported through the ssgName: custom
option (learn more.
Follow the example repository for a concrete example. Here’s an excerpt from Visual Editor configuration file:
// stackbit.config.jsexport default { stackbitVersion: "~0.6.0", cmsName: "contentful", nodeVersion: "16", ssgName: "custom", devCommand: "npm run dev -- -p {PORT}", experimental: { ssg: { name: "Nuxt3", logPatterns: { up: ["Local: http"] }, passthrough: ["/vite-hmr/**"] } }};
Like SvelteKit, Nuxt 3 uses Vite 3.x under the hood. Thus, similar experimental
attributes are used to ensure compatibility with Visual Editor. Please see the SvelteKit guide for more.
Access file-based content
Section titled “Access file-based content”The example repository does not use a headless CMS. Rather, it loads page content from local files in the same repository. By default, Nuxt does not include all files in the repository in either its client-side bundle or server-side functions.
Thus, in the example, we configure Nitro to bundle content files as server assets and then use the storage API to access them. See the file utils/content.js
in the example.
Content reload
Section titled “Content reload”Here is how content reload is implemented in the example:
- The client-side Nuxt plugin plugins/stackbit-listener.client.ts adds a listener to the window event
stackbitObjectsChanged
. This event is fired by Visual Editor on any content change, both when working locally and with Visual Editor projects. - The plugin uses an emitter to notify whoever is listening on that emitter.
- The catch-all page route
pages/[...slug].vue
(GitHub captures this event and runs therefresh
callback returned from its initial call touseAsyncData()
(see Nuxt 3 guide to refresh data).
Learn more about listening to content change events.
Example
Section titled “Example”Did you find this doc useful?
Your feedback helps us improve our docs.