nuxt-mapbox
Version:
Elegant Mapbox GL JS integration with Nuxt
38 lines (35 loc) • 1.17 kB
JavaScript
import { defineNuxtModule, createResolver, addImportsDir, addComponentsDir } from '@nuxt/kit';
import { defu } from 'defu';
const module = defineNuxtModule({
meta: {
name: "nuxt-mapbox",
configKey: "mapbox"
},
// Default configuration options of the Nuxt module
defaults: {
accessToken: "",
persistent: true
},
setup(options, nuxt) {
const resolver = createResolver(import.meta.url);
if (options.persistent)
nuxt.options.app.keepalive = true;
nuxt.options.alias["mapbox-gl"] = "mapbox-gl";
const appConfig = nuxt.options.appConfig;
appConfig._MAPBOX_CONFIG = {
accessToken: options.accessToken,
baseApiUrl: options.baseApiUrl,
workerUrl: options.workerUrl,
workerCount: options.workerCount,
prewarm: options.prewarm,
RTLTextPlugin: options.RTLTextPlugin
};
nuxt.options.runtimeConfig.public.mapbox = defu(nuxt.options.runtimeConfig.public.mapbox, options);
addImportsDir(resolver.resolve("./runtime/composables"));
addComponentsDir({
path: resolver.resolve("./runtime/components"),
prefix: "mapbox"
});
}
});
export { module as default };