nuxt-site-config
Version:
Shared site configuration for Nuxt 3 modules.
38 lines (37 loc) • 1.46 kB
JavaScript
import { useRuntimeConfig } from "nuxt/app";
import { fixSlashes, resolveSitePath } from "site-config-stack/urls";
import { computed, unref } from "vue";
import { useNitroOrigin } from "./useNitroOrigin.js";
import { useSiteConfig } from "./useSiteConfig.js";
export function createSitePathResolver(options = {}) {
const siteConfig = useSiteConfig();
const nitroOrigin = useNitroOrigin();
const nuxtBase = useRuntimeConfig().app.baseURL || "/";
return (path) => {
return computed(() => resolveSitePath(unref(path), {
absolute: unref(options.absolute),
withBase: unref(options.withBase),
siteUrl: unref(options.canonical) !== false || import.meta.prerender ? siteConfig.url : nitroOrigin,
trailingSlash: siteConfig.trailingSlash,
base: nuxtBase
}));
};
}
export function withSiteTrailingSlash(path) {
const siteConfig = useSiteConfig();
return computed(() => fixSlashes(siteConfig.trailingSlash, unref(path)));
}
export function withSiteUrl(path, options = {}) {
const siteConfig = useSiteConfig();
const nitroOrigin = useNitroOrigin();
const base = useRuntimeConfig().app.baseURL || "/";
return computed(() => {
return resolveSitePath(unref(path), {
absolute: true,
siteUrl: unref(options.canonical) !== false || import.meta.prerender ? siteConfig.url : nitroOrigin,
trailingSlash: siteConfig.trailingSlash,
base,
withBase: unref(options.withBase)
});
});
}