/* eslint-env node */ /* * This file runs in a Node context (it's NOT transpiled by Babel), so use only * the ES6 features that are supported by your Node version. https://node.green/ */ // Configuration for your app // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js const webpack = require('webpack') const ESLintPlugin = require('eslint-webpack-plugin') const { configure } = require('quasar/wrappers') module.exports = configure(function (ctx) { return { // https://v2.quasar.dev/quasar-cli-webpack/supporting-ts supportTS: false, // https://v2.quasar.dev/quasar-cli-webpack/prefetch-feature // preFetch: true, // app boot file (/src/boot) // --> boot files are part of 'main.js' // https://v2.quasar.dev/quasar-cli-webpack/boot-files boot: [ 'global-components', 'i18n' ], // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-css css: ['app.scss'], // https://github.com/quasarframework/quasar/tree/dev/extras extras: [ // 'ionicons-v4', // 'mdi-v5', // 'fontawesome-v6', // 'eva-icons', // 'themify', // 'line-awesome', // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! 'roboto-font', // optional, you are not bound to it 'material-icons', // optional, you are not bound to it ], // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-build build: { vueRouterMode: 'history', // available values: 'hash', 'history' // transpile: false, publicPath: '/', // 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://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-webpack/handling-webpack // 'chain' is a webpack-chain object https://github.com/neutrinojs/webpack-chain chainWebpack(chain) { chain .plugin('eslint-webpack-plugin') .use(ESLintPlugin, [{ extensions: ['js', 'vue'] }]) }, // blergh extendWebpack(cfg) { cfg.plugins.push( new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }) ) cfg.resolve.alias = cfg.resolve.alias || {} cfg.resolve.alias.stream = 'readable-stream' cfg.resolve.fallback = cfg.resolve.fallback || {} cfg.resolve.fallback.buffer = require.resolve('buffer/') cfg.resolve.fallback.stream = require.resolve('readable-stream') cfg.resolve.fallback.crypto = false cfg.resolve.fallback.path = false cfg.resolve.fallback.fs = false cfg.experiments = cfg.experiments || {} cfg.experiments.asyncWebAssembly = true cfg.module = cfg.module || { rules: [] } cfg.module.rules.push({ test: /\.wasm$/, type: 'asset/inline' }) }, }, // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-devServer devServer: { server: { type: 'http', }, port: 8080, open: false, // opens browser window automatically headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' }, // proxy: { // '/api': { // target: 'https://astral.ninja', // secure: false, // } // } }, // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-framework framework: { config: { dark: true }, // 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: [], // directives: [], // Quasar plugins plugins: ['Notify', 'Dialog', 'Meta'], }, // animations: 'all', // --- includes all animations // https://quasar.dev/options/animations animations: [], // https://v2.quasar.dev/quasar-cli-webpack/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 process.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) chainWebpackWebserver(chain) { chain .plugin('eslint-webpack-plugin') .use(ESLintPlugin, [{ extensions: ['js'] }]) }, middlewares: [ ctx.prod ? 'compression' : '', 'render', // keep this as last one ], }, // https://v2.quasar.dev/quasar-cli-webpack/developing-pwa/configuring-pwa pwa: { workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest' workboxOptions: { skipWaiting: true }, // only for GenerateSW // for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts]) // if using workbox in InjectManifest mode chainWebpackCustomSW(chain) { chain .plugin('eslint-webpack-plugin') .use(ESLintPlugin, [{ extensions: ['js'] }]) }, manifest: { name: `hamstr`, short_name: `hamstr`, description: `Hamstr: a Nostr web client`, display: 'standalone', orientation: 'portrait', background_color: '#ffffff', theme_color: '#027be3', icons: [ { src: 'icons/favicon-32x32.png', sizes: '32x32', type: 'image/png', }, { src: 'icons/favicon-64x64.png', sizes: '64x64', type: 'image/png', }, { src: 'icons/favicon-128x128.png', sizes: '128x128', type: 'image/png', }, { src: 'icons/favicon-256x256.png', sizes: '256x256', type: 'image/png', }, ], }, }, // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/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-webpack/developing-capacitor-apps/configuring-capacitor capacitor: { hideSplashscreen: true, }, // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/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: 'quasar-project', }, // 'chain' is a webpack-chain object https://github.com/neutrinojs/webpack-chain chainWebpackMain(chain) { chain .plugin('eslint-webpack-plugin') .use(ESLintPlugin, [{ extensions: ['js'] }]) }, chainWebpackPreload(chain) { chain .plugin('eslint-webpack-plugin') .use(ESLintPlugin, [{ extensions: ['js'] }]) }, }, } })