Файл quasar.config.js является центральным элементом
конфигурации проекта на Quasar Framework. Он управляет всеми аспектами
сборки, интеграцией плагинов, настройкой роутера, темизации и
оптимизацией приложения. Этот файл создается автоматически при
инициализации проекта через CLI Quasar и имеет формат JavaScript-модуля
с экспортом объекта конфигурации.
module.exports = configure(function (ctx) {
return {
// Конфигурация здесь
}
});
Функция configure принимает контекст ctx,
который содержит информацию о текущей среде сборки (dev,
prod, SSR и т.д.), что позволяет задавать условные
настройки для разных режимов.
Quasar поддерживает разные сборщики (Webpack, Vite). В
quasar.config.js указывается, какой инструмент
используется, и задаются его параметры:
build: {
vueRouterMode: 'history', // Возможные значения: 'hash' или 'history'
publicPath: '/',
env: {
API_URL: ctx.dev ? 'http://localhost:3000' : 'https://api.example.com'
},
vueOptions: {
devtools: ctx.dev
},
chainWebpack (chain) {
chain.plugin('define').tap(args => {
args[0]['process.env'].CUSTOM_VARIABLE = JSON.stringify('value')
return args
})
}
}
Ключевые моменты:
vueRouterMode определяет способ работы
маршрутизатора.publicPath управляет базовым URL для всех ресурсов
приложения.env позволяет создавать переменные окружения для
dev/prod.chainWebpack — расширение конфигурации Webpack для
добавления плагинов или изменения правил сборки.Quasar использует систему тем и иконок, которую можно детально
настраивать через quasar.config.js:
framework: {
config: {
brand: {
primary: '#1976D2',
secondary: '#26A69A',
accent: '#9C27B0',
dark: '#1d1d1d'
},
notify: { position: 'top-right', timeout: 3000 }
},
iconSet: 'material-icons',
lang: 'ru'
}
Особенности:
brand задает глобальные цвета приложения.notify конфигурирует уведомления (позиция, таймаут,
цвет).iconSet определяет набор иконок, который будет
использоваться компонентами.lang выбирает язык интерфейса Quasar-компонентов.Плагины подключаются централизованно, что позволяет включать только необходимые модули и оптимизировать размер сборки:
plugins: [
'Dialog',
'Notify',
'Loading'
]
Каждый плагин имеет свои настройки через объект
framework.config. Например, плагин Dialog
можно глобально настраивать:
framework: {
config: {
dialog: { ok: 'Да', cancel: 'Отмена', persistent: true }
}
}
quasar.config.js поддерживает расширенные режимы
сборки:
pwa: {
workboxPluginMode: 'GenerateSW',
manifest: {
name: 'MyApp',
short_name: 'App',
start_url: '/',
display: 'standalone',
background_color: '#ffffff',
theme_color: '#1976D2',
icons: [
{ src: 'icons/icon-128x128.png', sizes: '128x128', type: 'image/png' },
{ src: 'icons/icon-512x512.png', sizes: '512x512', type: 'image/png' }
]
}
}
ssr: {
pwa: false,
prodPort: 3000,
maxAge: 1000 * 60 * 60 * 24
}
capacitor: {
hideSplashscreen: true
}
Эти разделы позволяют задавать специфические настройки для каждой платформы без изменения исходного кода компонентов.
css: [
'app.scss'
],
preFetch: true
css подключает глобальные стили.preFetch включает возможность предварительной загрузки
данных в компонентах для SSR.devServer: {
https: false,
port: 8080,
open: true,
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, '')
}
}
}
proxy перенаправляет запросы на backend-сервер.open автоматически запускает браузер при старте
сервера.ctxctx позволяет гибко управлять конфигурацией для разных
сред:
build: {
minify: ctx.prod,
sourcemap: ctx.dev
}
ctx.dev — режим разработки.ctx.prod — продакшн-сборка.ctx.mode.ssr — активен SSR.ctx.mode.pwa — активен PWA.Использование контекста позволяет избегать дублирования настроек и держать проект консистентным.
Файл quasar.config.js является ядром управления
проектом, где объединяются все настройки сборки, темы, плагинов и
специфичных режимов. Правильное и подробное понимание каждой секции
позволяет создавать быстрые, оптимизированные и масштабируемые
приложения на Quasar Framework.