vue-yandex-maps
Version:
Yandex Maps 3.0 components library for VueJS.
48 lines (47 loc) • 1.8 kB
JavaScript
import { defineNuxtModule, addPlugin, createResolver } from "@nuxt/kit";
import { relative, join } from "path";
const _default = defineNuxtModule({
meta: {
name: "vue-yandex-maps",
configKey: "yandexMaps",
compatibility: {
bridge: true
}
},
setup(options, nuxt) {
if (!nuxt.options.runtimeConfig) {
nuxt.options.runtimeConfig = {
// @ts-expect-error Types error
app: {},
// @ts-expect-error Types error
public: {}
};
}
if (!nuxt.options.runtimeConfig.public) nuxt.options.runtimeConfig.public = {};
nuxt.options.runtimeConfig.public.yandexMaps = options;
if (!nuxt.options.build.transpile) nuxt.options.build.transpile = [];
nuxt.options.build.transpile.push("vue-yandex-maps");
if (!nuxt.options.vite) nuxt.options.vite = {};
if (!nuxt.options.vite.optimizeDeps) nuxt.options.vite.optimizeDeps = {};
if (!nuxt.options.vite.optimizeDeps.exclude) nuxt.options.vite.optimizeDeps.exclude = [];
nuxt.options.vite.optimizeDeps.exclude.push("vue-yandex-maps");
nuxt.hook("prepare:types", ({ tsConfig }) => {
let typeRoots = tsConfig.compilerOptions.typeRoots;
if (!typeRoots) {
tsConfig.compilerOptions.typeRoots = [];
typeRoots = tsConfig.compilerOptions.typeRoots;
}
const path = relative(nuxt.options.buildDir, nuxt.options.rootDir);
typeRoots.push(join(path, "node_modules/@types"));
typeRoots.push(join(path, "node_modules/@yandex/ymaps3-types"));
if (!tsConfig.compilerOptions.types) tsConfig.compilerOptions.types = [];
tsConfig.compilerOptions.types.push("vue-yandex-maps");
});
addPlugin({
src: createResolver(import.meta.url).resolve("./nuxt3-plugin")
});
}
});
export {
_default as default
};