nuxt-site-config
Version:
Shared site configuration for Nuxt 3 modules.
35 lines (34 loc) • 1.28 kB
JavaScript
import { useRuntimeConfig } from "nitropack/runtime";
import { fixSlashes, resolveSitePath } from "site-config-stack/urls";
import { useNitroOrigin } from "./useNitroOrigin.js";
import { useSiteConfig } from "./useSiteConfig.js";
export function createSitePathResolver(e, options = {}) {
const siteConfig = useSiteConfig(e);
const nitroOrigin = useNitroOrigin(e);
const nuxtBase = useRuntimeConfig(e).app.baseURL || "/";
return (path) => {
return resolveSitePath(path, {
...options,
siteUrl: options.canonical !== false || import.meta.prerender ? siteConfig.url : nitroOrigin,
trailingSlash: siteConfig.trailingSlash,
base: nuxtBase
});
};
}
export function withSiteTrailingSlash(e, path) {
const siteConfig = e.context.siteConfig?.get();
return fixSlashes(siteConfig.trailingSlash, path);
}
export function withSiteUrl(e, path, options = {}) {
const siteConfig = e.context.siteConfig?.get();
let siteUrl = e.context.siteConfigNitroOrigin;
if ((options.canonical !== false || import.meta.prerender) && siteConfig.url)
siteUrl = siteConfig.url;
return resolveSitePath(path, {
absolute: true,
siteUrl,
trailingSlash: siteConfig.trailingSlash,
base: e.context.nitro.baseURL,
withBase: options.withBase
});
}