2025-03-01 14:15:40 +01:00
import { defineConfig } from '#q-app/wrappers'
import { fileURLToPath } from 'node:url' ;
import path from 'path'
export default defineConfig ( ( ctx ) = > {
return {
// https://v2.quasar.dev/quasar-cli/supporting-ts
// https://v2.quasar.dev/quasar-cli/prefetch-feature
// preFetch: true,
// app boot file (/src/boot)
// --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli/boot-files
// boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'],
boot : [ 'i18n' , 'axios' , 'pinia' , 'vee-validate' ,
'myconfig' ,
'local-storage' , 'error-handler' , 'globalroutines' ,
'calendar' , 'social-sharing' , 'timeago' , 'guard' ] ,
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
css : [
'app.scss' ,
// '~quasar-ui-qcalendar/src/css/calendar-day.sass'
] ,
// https://github.com/quasarframework/quasar/tree/dev/extras
extras : [
// 'ionicons-v4',
// 'mdi-v5',
// 'eva-icons',
// 'themify',
// 'line-awesome',
'ionicons-v4' ,
// 'mdi-v3',
'fontawesome-v5' ,
'roboto-font' , // optional, you are not bound to it
'material-icons' , // optional, you are not bound to it
'material-icons-outlined' ,
] ,
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
build : {
target : {
browser : [ 'es2022' , 'firefox115' , 'chrome115' , 'safari14' ] ,
node : 'node20'
} ,
// env: envparser(),
// versionCode: package.version,
vueRouterMode : 'history' ,
analyze : false , // true
transpile : true ,
transpileDependencies : [
/quasar-ui-qcalendar[\\/]src/
] ,
beforeDev ( api ) {
// Se la variabile d'ambiente SKIP_TSC è impostata, disabilita il type checking
if ( process . env . SKIP_TSC === 'true' ) {
console . log ( '⚠️ TypeScript type checking is disabled' ) ;
// Disattiva TypeScript checking per Vite
if ( api && api . chainWebpack ) {
api . chainWebpack ( ( chain ) = > {
chain . plugin ( 'fork-ts-checker' ) . tap ( ( args ) = > {
args [ 0 ] . typescript = false ;
return args ;
} ) ;
} ) ;
}
}
} ,
// @quasar/app-vite v2.0.3+
envFilter ( originalEnv ) {
const newEnv = { }
for ( const key in originalEnv ) {
/* ...decide if it goes in or not... */
if ( true ) {
newEnv [ key ] = originalEnv [ key ]
}
}
// remember to return your processed env
return newEnv
} ,
typescript : {
strict : false ,
vueShim : true ,
extendTsConfig ( tsConfig ) {
// You can use this hook to extend tsConfig dynamically
// For basic use cases, you can still update the usual tsconfig.json file to override some settings
} ,
/ * *
* Folder where Quasar CLI should look for . env * files .
* Can be an absolute path or a relative path to project root directory .
*
* @default project root directory
* /
// envFolder?: string
/ * *
* Additional . env * files to be loaded .
* Each entry can be an absolute path or a relative path to quasar . config > build > envFolder .
*
* @example [ '.env.somefile' , '../.env.someotherfile' ]
* /
// envFiles?: string[];
} ,
extendViteConf ( viteConf , { isServer , isClient } ) {
viteConf . resolve = {
. . . ( viteConf . resolve || { } ) ,
alias : {
. . . viteConf . resolve . alias ,
'#q-app' : path . resolve ( __dirname , 'node_modules/quasar/app' ) , // Alias per #q-app
'app' : path . resolve ( __dirname ) ,
'boot' : path . resolve ( __dirname , 'src/boot' ) ,
'src' : path . resolve ( __dirname , 'src' ) ,
'statics' : path . resolve ( __dirname , 'src/statics' ) ,
'components' : path . resolve ( __dirname , 'src/components' ) ,
'views' : path . resolve ( __dirname , 'src/views/index.ts' ) ,
'icons' : path . resolve ( __dirname , 'public/icons' ) ,
'images' : path . resolve ( __dirname , 'src/assets/images' ) ,
'maps' : path . resolve ( __dirname , 'public/maps' ) ,
'classes' : path . resolve ( __dirname , 'src/classes/index.ts' ) ,
'fonts' : path . resolve ( __dirname , 'src/assets/fonts' ) ,
'utils' : path . resolve ( __dirname , 'src/utils/index.ts' ) ,
'css' : path . resolve ( __dirname , 'public/css/variables.scss' ) ,
'router' : path . resolve ( __dirname , 'src/router/index.ts' ) ,
'validators' : path . resolve ( __dirname , 'src/utils/validators.ts' ) ,
'methods' : path . resolve ( __dirname , 'src/utils/methods.ts' ) ,
'filters' : path . resolve ( __dirname , 'src/utils/filters.ts' ) ,
'api' : path . resolve ( __dirname , 'src/store/Api/index.ts' ) ,
'paths' : path . resolve ( __dirname , 'src/store/Api/ApiRoutes.ts' ) ,
'modules' : path . resolve ( __dirname , 'src/store/Modules/index.ts' ) ,
'model' : path . resolve ( __dirname , 'src/model/index.ts' ) ,
'@components' : path . resolve ( __dirname , 'src/components' ) ,
'@boot' : path . resolve ( __dirname , 'src/boot' ) ,
'@costanti' : path . resolve ( __dirname , 'src/store/Modules/costanti.ts' ) ,
'@views' : path . resolve ( __dirname , 'src/views/index.ts' ) ,
'@src' : path . resolve ( __dirname , 'src' ) ,
'@css' : path . resolve ( __dirname , 'src/public/css/variables.scss' ) ,
'@icons' : path . resolve ( __dirname , 'src/public/public/icons' ) ,
'@images' : path . resolve ( __dirname , 'src/public/images/*' ) ,
'@maps' : path . resolve ( __dirname , 'src/public/maps/*' ) ,
'@classes' : path . resolve ( __dirname , 'src/classes/index.ts' ) ,
'@utils' : path . resolve ( __dirname , 'src/utils/index.ts' ) ,
'@router' : path . resolve ( __dirname , 'src/router/index.ts' ) ,
'@validators' : path . resolve ( __dirname , 'src/utils/validators.ts' ) ,
'@methods' : path . resolve ( __dirname , 'src/utils/methods.ts' ) ,
'@api' : path . resolve ( __dirname , 'src/store/Api/index.ts' ) ,
'@paths' : path . resolve ( __dirname , 'src/store/Api/ApiRoutes.ts' ) ,
'@storemod' : path . resolve ( __dirname , 'src/store/Modules' ) ,
'@store' : path . resolve ( __dirname , 'src/store' ) ,
'@tools' : path . resolve ( __dirname , 'src/store/Modules/tools.ts' ) ,
'@modules' : path . resolve ( __dirname , 'src/store/Modules/index.ts' ) ,
'@model' : path . resolve ( __dirname , 'src/model/index.ts' ) ,
} ,
} ;
} ,
vitePlugins : [
[ '@intlify/unplugin-vue-i18n/vite' , {
// if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false`
// compositionOnly: false,
// if you want to use named tokens in your Vue I18n messages, such as 'Hello {name}',
// you need to set `runtimeOnly: false`
// runtimeOnly: false,
ssr : ctx.modeName === 'ssr' ,
// you need to set i18n resource including paths !
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 } ]
]
// polyfillModulePreload: true,
// viteVuePluginOptions: {},
// extractCSS: false,
// transpile: false,
// Add dependencies for transpiling with Babel (Array of string/regex)
// (from node_modules, which are by default not transpiled).
// Applies only if "transpile" is set to true.
// transpileDependencies: [],
// rtl: true, // https://v2.quasar.dev/options/rtl-support
// preloadChunks: true,
// showProgress: false,
// gzip: true,
// analyze: true,
// Options below are automatically set depending on the env, set them if you want to override
// extractCSS: false,
// https://v2.quasar.dev/quasar-cli/handling-webpack
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
} ,
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer
devServer : {
https : false ,
2025-03-04 20:20:17 +01:00
port : ctx.mode.spa ? 8088 : 8098 ,
2025-03-01 14:15:40 +01:00
vueDevtools : false , // automatically opening remote Vue Devtools
open : false , // opens browser window automatically
hot : true , // Disable hot module replacement
headers : {
'Access-Control-Allow-Origin' : '*' ,
'Access-Control-Allow-Headers' : '*' ,
} ,
} ,
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
framework : {
config : { } ,
// iconSet: 'material-icons', // Quasar icon set
// lang: 'en-US', // Quasar language pack
// For special cases outside of where the auto-import strategy can have an impact
// (like functional components as one of the examples),
// you can manually specify Quasar components/directives to be available everywhere:
//
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' ,
] ,
directives : [
'Ripple' ,
'ClosePopup' ,
] ,
_plugins : [
'Meta' ,
'Dialog' ,
'Notify' ,
'Cookies' ,
'Loading' ,
'AppVisibility' ,
'LocalStorage' ,
'SessionStorage' ,
] ,
get plugins_1() {
return this . _plugins ;
} ,
set plugins_1 ( value ) {
this . _plugins = value ;
} ,
get plugins() {
return this . _plugins ;
} ,
set plugins ( value ) {
this . _plugins = value ;
} ,
iconSet : 'fontawesome-v5' ,
lang : 'it' , // Quasar language
} ,
animations : 'all' , // --- includes all animations
// https://v2.quasar.dev/options/animations
// animations: [],
// https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr
ssr : {
pwa : false ,
// manualStoreHydration: true,
// manualPostHydrationTrigger: true,
prodPort : 3000 , // The default port that the production server should use
// (gets superseded if import.meta.env.PORT is specified at runtime)
maxAge : 1000 * 60 * 60 * 24 * 30 ,
// Tell browser when a file from the server should expire from cache (in ms)
middlewares : [
ctx . prod ? 'compression' : '' ,
'render' , // keep this as last one
] ,
} ,
sourceFiles : {
pwaRegisterServiceWorker : 'src-pwa/register-service-worker' ,
pwaServiceWorker : 'src-pwa/custom-service-worker' ,
// pwaManifestFile: 'src-pwa/manifest.json',
// ...
} ,
// https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa
pwa : {
workboxPluginMode : 'InjectManifest' , // 'GenerateSW' or 'InjectManifest'
workboxOptions : {
swSrc : 'src-pwa/custom-service-worker.js' , // Assicurati che il file esista
} ,
extendGenerateSWOptions ( cfg ) {
cfg . skipWaiting = false
cfg . clientsClaim = false
} ,
// for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts])
// if using workbox in InjectManifest mode
manifest : {
name : 'Riso' ,
short_name : 'Riso' ,
description : 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.' ,
display : 'standalone' ,
orientation : 'portrait' ,
background_color : '#fff' ,
theme_color : '#027be3' ,
scope : "/" ,
id : "/?homescreen=1" ,
start_url : "/?homescreen=1" ,
icons : [
{
src : 'images/riso-android-icon-512x512.png' ,
sizes : '512x512' ,
type : 'image/png' ,
} ,
{
src : 'images/riso-android-icon-384x384.png' ,
sizes : '384x384' ,
type : 'image/png' ,
} ,
{
src : 'images/riso-android-icon-192x192.png' ,
sizes : '192x192' ,
type : 'image/png' ,
} ,
{
src : 'images/riso-android-icon-144x144.png' ,
sizes : '144x144' ,
type : 'image/png' ,
} ,
{
src : 'images/riso-android-icon-96x96.png' ,
sizes : '96x96' ,
type : 'image/png' ,
} ,
{
src : 'images/riso-apple-icon-120x120.png' ,
sizes : '120x120' ,
type : 'image/png' ,
} ,
{
src : 'images/riso-apple-icon-144x144.png' ,
sizes : '144x144' ,
type : 'image/png' ,
} ,
{
src : 'images/riso-apple-icon-152x152.png' ,
sizes : '152x152' ,
type : 'image/png' ,
} ,
{
src : 'images/riso-apple-icon-180x180.png' ,
sizes : '180x180' ,
type : 'image/png' ,
} ,
] ,
related_applications : [ {
"platform" : "webapp" ,
"url" : "https://www.riso.app/manifest.json"
} ]
} ,
} ,
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova
cordova : {
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
} ,
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor
capacitor : {
hideSplashscreen : true ,
} ,
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
electron : {
bundler : 'packager' , // 'packager' or 'builder'
packager : {
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
// OS X / Mac App Store
// appBundleId: '',
// appCategoryType: '',
// osxSign: '',
// protocol: 'myapp://path',
// Windows only
// win32metadata: { ... }
} ,
builder : {
// https://www.electron.build/configuration/configuration
appId : 'Riso' ,
} ,
} ,
}
} )