152 lines
3.9 KiB
TypeScript
152 lines
3.9 KiB
TypeScript
// https://nuxt.com/docs/api/configuration/nuxt-config
|
|
export default defineNuxtConfig({
|
|
app: {
|
|
head: {
|
|
title: "RSSA",
|
|
titleTemplate: "%s - Admin Dashboard",
|
|
meta: [
|
|
{ charset: "utf-8" },
|
|
{ name: "viewport", content: "width=device-width, initial-scale=1" },
|
|
{ name: "format-detection", content: "telephone=no" }
|
|
],
|
|
link: [
|
|
{ rel: "icon", type: "image/x-icon", href: "/favicon.ico" },
|
|
{
|
|
rel: "stylesheet",
|
|
href: "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
// css: [
|
|
// "vuetify/lib/styles/main.sass", // Core Vuetify styles
|
|
// "@mdi/font/css/materialdesignicons.min.css", // Material Design Icons
|
|
// "~/scss/style.scss", // Custom application styles
|
|
// ],
|
|
/**
|
|
* Modules dan plugins
|
|
* Integrasi dengan ecosystem Nuxt.js
|
|
*/
|
|
modules: [
|
|
"@pinia/nuxt", // State management dengan Pinia
|
|
"@sidebase/nuxt-auth",
|
|
// [
|
|
// "@sidebase/nuxt-auth",
|
|
// {
|
|
// // Add auth module options here as per Sidebase auth guide
|
|
// auth: {
|
|
// isEnabled: true,
|
|
// baseURL:
|
|
// process.env.AUTH_ORIGIN || "http://meninjar.dev.rssa.id:3000",
|
|
// provider: {
|
|
// type: "authjs"
|
|
// // Additional provider options can be added here
|
|
// },
|
|
// globalAppMiddleware: {
|
|
// isEnabled: true
|
|
// }
|
|
// }
|
|
// }
|
|
// ]
|
|
],
|
|
|
|
plugins: [
|
|
"~/plugins/vuetify.ts" // Setup Vuetify dengan konfigurasi custom
|
|
],
|
|
ssr: false,
|
|
|
|
typescript: {
|
|
shim: false
|
|
},
|
|
|
|
build: {
|
|
transpile: ["vuetify"]
|
|
},
|
|
|
|
vite: {
|
|
define: {
|
|
"process.env.DEBUG": false
|
|
},
|
|
server: {
|
|
allowedHosts: ["firman.dev.rssa.id", "localhost:3000","localhost:3001"]
|
|
//allowedHosts: ["meninjar.dev.rssa.id"]
|
|
}
|
|
// css: {
|
|
// preprocessorOptions: {
|
|
// scss: {
|
|
// // Global SCSS variables yang dapat diakses di semua komponen
|
|
// additionalData: `@import "~/scss/variables.scss";`,
|
|
// },
|
|
// },
|
|
// },
|
|
},
|
|
|
|
nitro: {
|
|
serveStatic: true,
|
|
compressPublicAssets: true, // Kompresi asset untuk faster loading,
|
|
|
|
/**
|
|
* Prerender routes untuk static generation
|
|
* Halaman yang akan di-generate saat build time
|
|
*/
|
|
prerender: {
|
|
// routes: [
|
|
// '/', // Landing page
|
|
// '/auth/login', // Halaman login
|
|
// '/auth/register' // Halaman register
|
|
// ]
|
|
}
|
|
|
|
/**
|
|
* Route protection untuk production
|
|
* Middleware untuk security dan rate limiting
|
|
*/
|
|
// routeRules: {
|
|
// '/admin/**': {
|
|
// headers: { 'X-Robots-Tag': 'noindex' }
|
|
// // index: false // ❌ Property ini tidak valid - sudah dihapus
|
|
// }
|
|
// }
|
|
},
|
|
runtimeConfig: {
|
|
authSecret: process.env.AUTH_SECRET,
|
|
keycloakClientSecret: process.env.KEYCLOAK_CLIENT_SECRET,
|
|
keycloakClientId: process.env.KEYCLOAK_CLIENT_ID,
|
|
// Move keycloakIssuer to public to expose on client side
|
|
public: {
|
|
// authUrl: process.env.AUTH_ORIGIN || "http://meninjar.dev.rssa.id:3000",
|
|
// keycloakIssuer:
|
|
// process.env.KEYCLOAK_ISSUER || "https://auth.rssa.top/realms/sandbox"
|
|
keycloakUrl: process.env.KEYCLOAK_URL,
|
|
keycloakClient: process.env.KEYCLOAK_ID,
|
|
keycloakRealm: process.env.KEYCLOAK_REALM,
|
|
|
|
}
|
|
},
|
|
auth: {
|
|
isEnabled: true,
|
|
baseURL: process.env.AUTH_ORIGIN,
|
|
provider: {
|
|
type: "authjs",
|
|
},
|
|
globalAppMiddleware: {
|
|
isEnabled: true,
|
|
},
|
|
},
|
|
devServerHandlers: [],
|
|
|
|
hooks: {},
|
|
/**
|
|
* Development tools configuration
|
|
* Tools untuk meningkatkan developer experience
|
|
*/
|
|
devtools: {
|
|
enabled: true, // Enable Nuxt DevTools untuk debugging
|
|
timeline: {
|
|
enabled: true // Enable timeline untuk performance monitoring
|
|
}
|
|
},
|
|
|
|
compatibilityDate: "2024-10-23"
|
|
});
|