277 lines
6.9 KiB
TypeScript
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: '-' },
|
|
},
|
|
};
|
|
});
|