UNPKG

@vueless/nuxt

Version:

Nuxt Styleless UI Component Library, powered by Tailwind CSS.

59 lines (56 loc) 2.01 kB
import { defineNuxtModule, createResolver, hasNuxtModule, addPlugin, addComponent, addImportsDir } from '@nuxt/kit'; import { dirname, relative } from 'pathe'; import { TailwindCSS, Vueless } from 'vueless/plugin-vite'; import { autoImportUserConfigs, cacheMergedConfigs } from 'vueless/utils/node/helper.js'; import { VUELESS_LIBRARY, NUXT_MODULE_ENV, COMPONENTS } from 'vueless/constants.js'; const module = defineNuxtModule({ meta: { name: "@vueless/nuxt", configKey: "vueless", compatibility: { nuxt: ">=3.13.0" } }, defaults: { include: [], basePath: "", debug: false, postcss: false }, async setup(_options, _nuxt) { if (_nuxt.options._prepare) return; const { resolve, resolvePath } = createResolver(import.meta.url); const { include, debug, postcss, basePath } = _options; const vuelessPath = await resolvePath(VUELESS_LIBRARY); const vuelessDir = dirname(vuelessPath); _nuxt.hook("vite:extendConfig", async (config) => { config.plugins = config.plugins || []; config.plugins.push( TailwindCSS({ postcss }), Vueless({ env: NUXT_MODULE_ENV, basePath, debug, include }) ); }); await autoImportUserConfigs(basePath); await cacheMergedConfigs({ vuelessSrcDir: relative(process.cwd(), vuelessDir), basePath }); if (hasNuxtModule("@nuxtjs/i18n")) { _nuxt.hook("i18n:registerModule", (register) => { register({ langDir: resolve(`${vuelessDir}/locales`), locales: [ { code: "en", name: "English", file: "en.json" } ] }); }); } addPlugin(resolve("./runtime/plugin")); for (const [componentName, componentDir] of Object.entries(COMPONENTS)) { addComponent({ name: componentName, filePath: `${vuelessDir}/${componentDir}/${componentName}.vue` }); } addImportsDir(`${vuelessDir}/composables`); addImportsDir(`${vuelessDir}/utils`); } }); export { module as default };