UNPKG

baked-recipe-admin

Version:

Baked is an opinionated framework for .NET in backend and Nuxt in frontend. This is a recipe package that brings together all the components one needs for an Admin UI.

115 lines (112 loc) 4.14 kB
import { createResolver, defineNuxtModule, addComponentsDir, addImportsDir, addPlugin } from '@nuxt/kit'; import { pathToFileURL } from 'url'; const resolver = createResolver(import.meta.url); const module = defineNuxtModule({ meta: { name: "baked-recipe-admin", configKey: "baked" }, defaults: {}, moduleDependencies: { "@nuxtjs/i18n": { version: "10.1.0", defaults: { strategy: "no_prefix", detectBrowserLanguage: { useCookie: true, cookieKey: "i18n_cookie" } } }, "@nuxtjs/tailwindcss": { version: "6.14.0", defaults: { exposeConfig: true, cssPath: resolver.resolve("./runtime/assets/tailwind.css"), config: { content: { files: [ resolver.resolve("./runtime/components/**/*.{vue,mjs,ts}"), resolver.resolve("./runtime/*.{mjs,js,ts}") ] } } } } }, onInstall() { }, onUpgrade() { }, // this setup runs after `defineNuxtConfig` so it should set default values // carefully. async setup(_options, _nuxt) { if (process.env.npm_lifecycle_script?.includes("nuxt-module-build")) { return; } const entryProjectResolver = createResolver(_nuxt.options.rootDir); const appJsonPath = pathToFileURL(entryProjectResolver.resolve(`./.baked/app.json`)); const app = (await import(appJsonPath.href, { with: { type: 'json' } })).default; _options.composables.useBreakpoints ||= {}; _options.composables.useBreakpoints.screens ||= { "2xs": "340px", "xs": "480px", "sm": "640px", "md": "768px", "lg": "1024px", "xl": "1280px", "2xl": "1536px", "3xl": "1920px" }; _nuxt.options.runtimeConfig.public.error = app?.error; _nuxt.options.runtimeConfig.public.primevue = _options.primevue; _nuxt.options.runtimeConfig.public.components = _options.components; _nuxt.options.runtimeConfig.public.composables = _options.composables; _nuxt.options.css.push("primeicons/primeicons.css"); _nuxt.options.css.push(resolver.resolve("./runtime/assets/theme/datatable.css")); _nuxt.options.css.push(resolver.resolve("./runtime/assets/theme/menu.css")); _nuxt.options.css.push(resolver.resolve("./runtime/assets/theme/paginator.css")); _nuxt.options.css.push(resolver.resolve("./runtime/assets/theme/popover.css")); _nuxt.options.css.push(resolver.resolve("./runtime/assets/overrides.css")); _nuxt.options.devtools = { enabled: false }; _nuxt.options.experimental.payloadExtraction = false; _nuxt.options.features.inlineStyles = false; _nuxt.options.ssr = false; addComponentsDir({ path: resolver.resolve("./runtime/components") }); addImportsDir(resolver.resolve("./runtime/composables")); for (const plugin of app?.plugins ?? []) { _nuxt.options.runtimeConfig.public[plugin.name] = plugin; addPlugin(resolver.resolve(`./runtime/plugins/${plugin.name}`)); } addPlugin(resolver.resolve("./runtime/plugins/mutex")); addPlugin(resolver.resolve("./runtime/plugins/toast")); addPlugin(resolver.resolve("./runtime/plugins/trailingSlash")); addPlugin(resolver.resolve("./runtime/plugins/baked")); addPlugin(resolver.resolve("./runtime/plugins/primeVue")); addPlugin(resolver.resolve("./runtime/plugins/fetch"), {}); _nuxt.options.i18n = { vueI18n: entryProjectResolver.resolve("./i18n.config.ts"), langDir: entryProjectResolver.resolve("./"), locales: app?.i18n?.supportedLanguages?.map((i) => { const files = [ entryProjectResolver.resolve(`./.baked/locale.${i.code}.json`), entryProjectResolver.resolve(`./locales/locale.${i.code}.json`) ]; return { code: i.code, name: i.name, files }; }), defaultLocale: app?.i18n?.defaultLanguage?.code }; _nuxt.options.tailwindcss = { config: { theme: { screens: _options.composables.useBreakpoints.screens } } }; } }); export { module as default };