nuxt-strapi-blocks-renderer
Version:
Renderer for the strapi CMS blocks text content element.
53 lines (50 loc) • 1.51 kB
JavaScript
import { defineNuxtModule, createResolver, addImports, addComponent, addComponentsDir } from '@nuxt/kit';
import { defu } from 'defu';
const module = defineNuxtModule({
meta: {
name: "nuxt-strapi-blocks-renderer",
configKey: "strapiBlocksRenderer",
compatibility: {
nuxt: ">=3.0.0"
}
},
defaults: {
prefix: "",
blocksPrefix: "StrapiBlocksText"
},
setup(options, nuxt) {
const { resolve } = createResolver(import.meta.url);
nuxt.options.alias["#strapi-blocks-renderer"] = resolve("./runtime");
const runtimeConfig = nuxt.options.runtimeConfig;
runtimeConfig.public.strapiBlocksRenderer = defu(runtimeConfig.public.strapiBlocksRenderer, options);
addImports([
{
name: "useBlocksText",
as: "useBlocksText",
from: resolve("./runtime/composables/useBlocksText")
}
]);
addComponent({
name: `${options.prefix}StrapiBlocksText`,
filePath: resolve("./runtime/components/StrapiBlocksText.vue"),
global: true
});
addComponentsDir({
path: resolve("./runtime/components/blocks"),
pathPrefix: false,
prefix: options.blocksPrefix,
global: true,
priority: 0
});
nuxt.hook("components:dirs", (componentsDir) => {
componentsDir.push({
path: resolve("./runtime/components/blocks"),
pathPrefix: false,
prefix: options.blocksPrefix,
global: true,
priority: -10
});
});
}
});
export { module as default };