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.

80 lines (77 loc) 3.3 kB
import { defineNuxtModule, createResolver, addComponentsDir, addImportsDir, addPlugin, installModule } from '@nuxt/kit'; const module = defineNuxtModule({ meta: { name: "baked-recipe-admin", configKey: "baked" }, defaults: {}, // 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 resolver = createResolver(import.meta.url); const entryProjectResolver = createResolver(_nuxt.options.rootDir); const appJsonPath = entryProjectResolver.resolve(`./.baked/app.json`); const app = (await import(appJsonPath, { with: { type: 'json' } })).default; _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/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"), {}); await installModule("@nuxtjs/i18n", { vueI18n: entryProjectResolver.resolve("./i18n.config.ts"), langDir: entryProjectResolver.resolve("./"), strategy: "no_prefix", 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, detectBrowserLanguage: { useCookie: true, cookieKey: "i18n_cookie" } }); await installModule("@nuxtjs/tailwindcss", { 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}") ] } } }); } }); export { module as default };