Files
myprojplanet_vite/quasar.config.ts
Surya Paolo d1a66ef4ea - altro aggiornamento restying
- Invio RIS aggiornato
- Eventi
- Home Page restyling
2025-12-18 16:58:06 +01:00

277 lines
6.9 KiB
TypeScript

import { defineConfig } from '#q-app/wrappers';
import { fileURLToPath } from 'node:url';
import path from 'path';
export default defineConfig((ctx) => {
return {
boot: [
'i18n',
'axios',
'pinia',
'vee-validate',
'myconfig',
'local-storage',
'globalroutines',
'calendar',
'social-sharing',
'timeago',
'guard',
'trackPageViews',
],
css: ['app.scss'],
extras: [
'ionicons-v4',
'fontawesome-v5',
'roboto-font',
'material-icons',
'material-icons-outlined',
],
build: {
target: {
browser: ['es2021', 'chrome100', 'firefox100', 'safari14'],
node: 'node20',
},
sassVariables: 'src/css/variables.scss',
vueRouterMode: 'history',
analyze: false,
transpile: true,
transpileDependencies: [/quasar-ui-qcalendar[\\/]src/],
typescript: {
strict: false,
vueShim: true,
},
// ✅ AGGIUNTO: Config SCSS globale per Vite
extendViteConf(viteConf, { isServer, isClient }) {
// Alias puliti
viteConf.resolve = {
...(viteConf.resolve || {}),
alias: {
...viteConf.resolve.alias,
'#q-app': path.resolve(__dirname, 'node_modules/quasar/app'),
// Alias essenziali (rimuovi duplicati)
'@': path.resolve(__dirname, 'src'),
'@components': path.resolve(__dirname, 'src/components'),
'@views': path.resolve(__dirname, 'src/views'),
'@boot': path.resolve(__dirname, 'src/boot'),
'@store': path.resolve(__dirname, 'src/store'),
'@storemod': path.resolve(__dirname, 'src/store/Modules'),
'@tools': path.resolve(__dirname, 'src/store/Modules/tools.ts'), // ✅ AGGIUNTO
'@costanti': path.resolve(__dirname, 'src/store/Modules/costanti.ts'), // ✅ AGGIUNTO
'@api': path.resolve(__dirname, 'src/store/Api'),
'@utils': path.resolve(__dirname, 'src/utils'),
'@model': path.resolve(__dirname, 'src/model'),
'@classes': path.resolve(__dirname, 'src/classes'),
'@router': path.resolve(__dirname, 'src/router'),
'@css': path.resolve(__dirname, 'src/css'),
'@paths': path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'),
'@images': path.resolve(__dirname, 'src/assets/images'),
'@icons': path.resolve(__dirname, 'src/public/myicons'),
},
};
// ✅ AGGIUNTO: SCSS preprocessor con variables.scss globale
viteConf.css = {
...(viteConf.css || {}),
preprocessorOptions: {
scss: {
additionalData: `@use "sass:color"; @use "@/css/variables.scss" as *;`,
},
},
};
},
viteConf: {
server: {
hmr: {
protocol: 'wss',
host: 'localhost',
port: 8094,
},
},
},
beforeDev(api) {
if (process.env.SKIP_TSC === 'true') {
console.log('⚠️ TypeScript type checking is disabled');
if (api && api.chainWebpack) {
api.chainWebpack((chain) => {
chain.plugin('fork-ts-checker').tap((args) => {
args[0].typescript = false;
return args;
});
});
}
}
},
envFilter(originalEnv) {
return originalEnv; // Ritorna tutto per semplicità
},
vitePlugins: [
[
'@intlify/unplugin-vue-i18n/vite',
{
ssr: ctx.modeName === 'ssr',
include: [fileURLToPath(new URL('./src/i18n', import.meta.url))],
},
],
[
'vite-plugin-checker',
{
vueTsc: false,
OFF_eslint: {
lintCommand:
'eslint -c ./eslint.config.js "./src*/**/*.{ts,js,mjs,cjs,vue}"',
useFlatConfig: true,
},
},
{ server: false },
],
],
},
devServer: {
https: {
key: path.resolve(__dirname, 'localhost-key.pem'),
cert: path.resolve(__dirname, 'localhost.pem'),
},
port: parseInt(process.env.PORT, 10),
vueDevtools: false,
open: false,
hot: true,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
},
},
framework: {
config: {},
components: [
'QLayout',
'QDrawer',
'QItemSection',
'QHeader',
'QFooter',
'QPageContainer',
'QPage',
'QPopupProxy',
'QToolbar',
'QToolbarTitle',
'QBtn',
'QBtnDropdown',
'QColor',
'QIcon',
'QList',
'QKnob',
'QItemLabel',
'QItem',
'QCard',
'QMarkupTable',
'QSpace',
'QDialog',
'QBadge',
'QForm',
'QCardSection',
'QCardActions',
'QField',
'QInput',
'QSelect',
'QMenu',
'QToggle',
'QFab',
'QInfiniteScroll',
'QAjaxBar',
'QChip',
'QExpansionItem',
'QCheckbox',
'QBanner',
'QInnerLoading',
'QSpinnerGears',
'QSpinnerDots',
'QDate',
'QTime',
'QSlideTransition',
'QTable',
'QTh',
'QTr',
'QTd',
'QLinearProgress',
'QSlider',
'QPopupEdit',
'QCarousel',
'QCarouselControl',
'QCarouselSlide',
'QPageScroller',
'QAvatar',
'QImg',
'QSplitter',
'QRating',
'QParallax',
'QTab',
'QTabs',
'QTabPanels',
'QTabPanel',
'QTree',
'QSeparator',
'QPageSticky',
],
directives: ['Ripple', 'ClosePopup'],
plugins: [
'Meta',
'Dialog',
'Notify',
'Cookies',
'Loading',
'AppVisibility',
'LocalStorage',
'SessionStorage',
],
iconSet: 'material-icons',
lang: 'it',
},
animations: 'all',
ssr: {
pwa: false,
prodPort: 3000,
maxAge: 1000 * 60 * 60 * 24 * 30,
middlewares: [ctx.prod ? 'compression' : '', 'render'],
},
pwa: {
workboxMode: 'InjectManifest',
swFilename: 'sw-' + process.env.APP_VERSION + '.js',
workboxOptions: {
swSrc: 'src-pwa/custom-service-worker.js',
include: [/\.html$/, /\.js$/, /\.css$/, /\.png$/, /\.svg$/, /\.json$/],
},
suppressWarnings: true,
},
sourceFiles: {
pwaRegisterServiceWorker: 'src-pwa/register-service-worker',
pwaServiceWorker: 'src-pwa/custom-service-worker',
pwaManifestFile: 'src-pwa/manifest.json',
},
cordova: {},
capacitor: { hideSplashscreen: true },
electron: {
bundler: 'packager',
packager: {},
builder: { appId: '-' },
},
};
});