New major versions of q/app-vite and q/app-webpack (stable!) #16877
Replies: 40 comments 148 replies
-
I have been waiting for this. I just created new project and trying it out. |
Beta Was this translation helpful? Give feedback.
-
@rstoenescu Just to feed back - just upgraded our app to Vite 5 & q/app-vite 2 following the upgrade instructions - no issues so far, it seems to work like a charm! Great work by all involved. |
Beta Was this translation helpful? Give feedback.
-
Upgraded a SPA and it worked well. I have 2 questions:
|
Beta Was this translation helpful? Give feedback.
-
@rstoenescu Yet any plans when |
Beta Was this translation helpful? Give feedback.
-
I updated two smaller projects to the beta and except for an incompatible app-extension everything worked fine. Still needs some testing but looks really promising so far. |
Beta Was this translation helpful? Give feedback.
-
On testing the beta "@quasar/app-vite": "2.0.0-beta.6", it seems that "unplugin-auto-import": "^0.17.5" vite plugin is causing an issue that looks as if it is interfering with quasar adding environment variables. This worked in latest production @quasar/app-vite & I'm not sure if it is a quasar or unplugin-auto-import issue, though leaning toward it being a quasar issue since it works in version 1.8.1... quasar.config.ts/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-env node */
// Configuration for your app
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js
import { configure } from 'quasar/wrappers';
import { fileURLToPath } from 'node:url';
import { apps } from 'open';
import {
QuasarResolver,
VueUseComponentsResolver,
VueUseDirectiveResolver,
} from 'unplugin-vue-components/resolvers';
import TurboConsole from 'unplugin-turbo-console/vite';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
// import 'dotenv/config';
import { config } from 'dotenv';
config({ override: true });
export default configure((ctx) => {
return {
// https://v2.quasar.dev/quasar-cli-vite/prefetch-feature
// preFetch: true,
// app boot file (/src/boot)
// --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli-vite/boot-files
boot: [
'i18n',
'axios',
'vueLogger',
// 'globalComponents',
'formkit',
'lodash',
'vueDOMPurifyHTML',
// 'piniaRoutes',
// 'firebase',
'appReg',
],
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css
css: ['app.scss', 'tw-app.css'],
// https://github.com/quasarframework/quasar/tree/dev/extras
extras: [
// 'ionicons-v4',
// 'mdi-v7',
// '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-vite/quasar-config-js#build
build: {
target: {
browser: ['es2022', 'firefox115', 'chrome115', 'safari14'],
node: 'node20',
},
vueRouterMode: 'history', // available values: 'hash', 'history'
// vueRouterBase,
// vueDevtools,
// vueOptionsAPI: false,
// rebuildCache: true, // rebuilds Vite/linter/etc cache on startup
// publicPath: '/',
// analyze: true,
// env: {},
env: {
DIRECTUS_URL: process.env.DIRECTUS_URL,
DIRECTUS_SERVER_TOKEN: process.env.DIRECTUS_SERVER_TOKEN,
STRIPE_SECRET_KEY: process.env.STRIPE_SECRET_KEY,
STRIPE_PUBLISHABLE_KEY: process.env.STRIPE_PUBLISHABLE_KEY,
STRIPE_WEBHOOK_SECRET: process.env.STRIPE_WEBHOOK_SECRET,
},
// rawDefine: {}
// ignorePublicFolder: true,
// minify: false,
// polyfillModulePreload: true,
// distDir
// extendViteConf (viteConf) {},
// viteVuePluginOptions: {},
vitePlugins: [
TurboConsole({}) as any,
AutoImport({
// targets to transform
include: [
/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
/\.vue$/,
/\.vue\?vue/, // .vue
/\.md$/, // .md
],
// global imports to register
imports: [
// presets
'vue',
'vue-router',
'pinia',
'quasar',
'vue-i18n',
'@vueuse/core',
// custom
{
/* quasar: [
// https://quasar.dev/vue-composables
'useQuasar',
'useDialogPluginComponent',
'useFormChild',
'useMeta',
'QBtn',
], */
/* '@vueuse/core': [
// named imports
'useFetch',
// 'vOnClickOutside', // import { useMouse } from '@vueuse/core',
// alias
// ['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
], */
'vue-i18n': [
// named imports
'createI18n', // import { useMouse } from '@vueuse/core',
// 'preFetch',
// alias
//['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
],
'quasar/wrappers': [
// named imports
'boot', // import { useMouse } from '@vueuse/core',
'preFetch',
// alias
//['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
],
lodash: [
// named imports
['default', '_'], // import { useMouse } from '@vueuse/core',
// alias
//['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
],
'lorem-ipsum': [
// named imports
'LoremIpsum',
],
'vue-logger-plugin': [
// named imports
'createLogger', // import { useMouse } from '@vueuse/core',
'StringifyAndParseObjectsHook',
// alias
//['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
],
'@formkit/inputs': [
// named imports
'outer',
'inner',
'wrapper',
'label',
'help',
'messages',
'message',
'icon',
'prefix',
'suffix',
'textInput',
'textareaInput',
'initialValue',
'$attrs',
// alias
//['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
],
'@formkit/vue': [
// named imports
'plugin',
'defaultConfig',
// alias
//['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
],
'@formkit/addons': [
// named imports
'createAutoAnimatePlugin',
// alias
//['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
],
axios: [['default', 'axios']],
'vue-dompurify-html': [
// default imports
['default', 'VueDOMPurifyHTML'], // import { default as axios } from 'axios',
],
quasar: [
// default imports
'Loading',
// ['default', 'VueDOMPurifyHTML'], // import { default as axios } from 'axios',
],
'@directus/sdk': [
'createDirectus',
'rest',
'realtime',
'graphql',
// Comment
'createComment',
'updateComment',
'deleteComment',
'createField',
'deleteField',
'readActivities',
'readActivity',
'readCollection',
'readCollections',
'createCollection',
'updateCollection',
'deleteCollection',
'readField',
'readFieldsByCollection',
'readFields',
'updateField',
'aggregate',
// Users
'createUser',
'createUsers',
'readUser',
'readUsers',
'updateUser',
'updateUsers',
'deleteUser',
'deleteUsers',
// Auth
'withToken',
'authentication',
// We're not autoimporting these because we're using the authentication composable
// 'login',
// 'logout',
'passwordReset',
'resetPassword',
'readProviders',
// Current User
'readMe',
'updateMe',
// Items
'createItem',
'createItems',
'readItem',
'readItems',
'updateItem',
'updateItems',
'deleteItem',
'deleteItems',
'readSingleton',
'updateSingleton',
// Files
'importFile',
'uploadFiles',
'readFile',
'readFiles',
'updateFile',
'updateFiles',
'deleteFile',
'deleteFiles',
// Folders
'readFolder',
'readFolders',
'updateFolder',
'updateFolders',
// Utils
],
/* 'firebase/app': [['initializeApp', 'fireBaseInitializeApp']],
'firebase/auth': [['getAuth', 'firebaseGetAuth']],
'firebase/analytics': [['getAnalytics', 'fireBaseGetAnalytics']],
'firebase/database': [
['getDatabase', 'fireBaseGetDatabase'],
['ref', 'fireBaseRef'],
['onValue', 'fireBaseOnValue'],
['push', 'fireBasePush'],
['remove', 'fireBaseRemove'],
['set', 'fireBaseSet'],
['get', 'fireBaseGet'],
['child', 'fireBaseChild'],
], */
// 'memfs/lib/fsa-to-node': ['FsaNodeFs', 'FsaNodeSyncAdapterWorker'],
/* 'memfs/lib/fsa-to-node/worker/FsaNodeSyncWorker': [
'FsaNodeSyncWorker',
], */
buffer: ['Buffer'],
process: [['*', 'process']],
'mount-vue-component': [['mount', 'createComponentInstance']],
// '[package-name]': [
// '[import-names]',
// // alias
// ['[from]', '[alias]'],
// ],
},
{
quasar: [
// https://quasar.dev
'QBtn',
],
},
// example type import
{
from: 'mount-vue-component',
imports: [
['vNode', 'componentVNode'],
['el', 'componentEL'],
['destroy', 'componentDestroy'],
],
type: true,
},
/* {
from: 'memfs/fsa/types',
imports: [['*', 'fsa']],
type: true,
}, */
{
from: 'axios',
imports: ['AxiosInstance'],
type: true,
},
{
from: '@formkit/core',
imports: ['FormKitTypeDefinition'],
type: true,
},
{
from: 'vue-router',
imports: ['RouteRecordRaw'],
type: true,
},
{
from: 'vue',
imports: ['App'],
type: true,
},
{
from: 'pinia',
imports: ['StoreDefinition'],
type: true,
},
{
from: '@directus/sdk',
imports: [
'DirectusClient',
'AuthenticationClient',
'RestClient',
'AuthenticationStorage',
'AuthenticationData',
],
type: true,
},
],
// Enable auto import by filename for default module exports under directories
defaultExportByFilename: false,
// Auto import for module exports under directories
// by default it only scan one level of modules under the directory
dirs: [
'./src/stores/**',
'./src/boot/**',
// './src/components/formkitInputs/**',
// './hooks',
// './composables' // only root modules
// './composables/**', // all nested modules
// ...
],
// Filepath to generate corresponding .d.ts file.
// Defaults to './auto-imports.d.ts' when `typescript` is installed locally.
// Set `false` to disable.
// dts: './auto-imports.d.ts',
dts: './auto-imports.d.ts',
// Auto import inside Vue template
// see https://github.com/unjs/unimport/pull/15 and https://github.com/unjs/unimport/pull/72
vueTemplate: false,
// Custom resolvers, compatible with `unplugin-vue-components`
// see https://github.com/antfu/unplugin-auto-import/pull/23/
resolvers: [
/* ... */
],
// Inject the imports at the end of other imports
injectAtEnd: true,
// Generate corresponding .eslintrc-auto-import.json file.
// eslint globals Docs - https://eslint.org/docs/user-guide/configuring/language-options#specifying-globals
eslintrc: {
enabled: false, // Default `false`
filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
globalsPropValue: true, // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
},
}),
Components({
// relative paths to the directory to search for components.
// dirs: ['src/components'],
// valid file extensions for components.
// extensions: ['vue'],
// Glob patterns to match file names to be detected as components.
// When specified, the `dirs` and `extensions` options will be ignored.
globs: ['src/components/**/*.vue', 'src/~Global/**/*.vue'],
// search for subdirectories
deep: true,
// resolvers for custom components
resolvers: [
QuasarResolver(),
VueUseComponentsResolver(),
VueUseDirectiveResolver(),
],
// generate `components.d.ts` global declarations,
// also accepts a path for custom filename
// default: `true` if package typescript is installed
dts: './components.d.ts',
// dts: true,
// Allow subdirectories as namespace prefix for components.
directoryAsNamespace: false,
// Collapse same prefixes (camel-sensitive) of folders and components
// to prevent duplication inside namespaced component name.
// works when `directoryAsNamespace: true`
collapseSamePrefixes: false,
// Subdirectory paths for ignoring namespace prefixes.
// works when `directoryAsNamespace: true`
globalNamespaces: [],
// auto import for directives
// default: `true` for Vue 3, `false` for Vue 2
// Babel is needed to do the transformation for Vue 2, it's disabled by default for performance concerns.
// To install Babel, run: `npm install -D @babel/parser`
directives: true,
// Transform path before resolving
importPathTransform: (v) => v,
// Allow for components to override other components with the same name
allowOverrides: false,
// filters for transforming targets
include: [/\.vue$/, /\.vue\?vue/],
exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],
// Vue version of project. It will detect automatically if not specified.
// Acceptable value: 2 | 2.7 | 3
version: 3,
// Only provide types of components in library (registered globally)
types: [
// {
// from: '@formkit/core',
// names: ['FormKitTypeDefinition'],
// },
],
}),
[
'@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: {
tsconfigPath: 'tsconfig.vue-tsc.json',
},
eslint: {
lintCommand: 'eslint "./**/*.{js,ts,mjs,cjs,vue}"',
},
},
{ server: false },
],
],
},
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer
devServer: {
// https: true
// open: true, // opens browser window automatically
open: {
app: {
name: apps.chrome,
arguments: ['--auto-open-devtools-for-tabs', '--incognito'],
},
}, // opens browser window automatically
},
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework
framework: {
config: {
dark: 'auto',
},
// 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',
'AppFullscreen',
'Cookies',
'LocalStorage',
'SessionStorage',
'Loading',
'LoadingBar',
'Dialog',
'Meta',
],
},
// animations: 'all', // --- includes all animations
// https://v2.quasar.dev/options/animations
animations: 'all',
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#sourcefiles
// sourceFiles: {
// rootComponent: 'src/App.vue',
// router: 'src/router/index',
// store: 'src/store/index',
// pwaRegisterServiceWorker: 'src-pwa/register-service-worker',
// pwaServiceWorker: 'src-pwa/custom-service-worker',
// pwaManifestFile: 'src-pwa/manifest.json',
// electronMain: 'src-electron/electron-main',
// electronPreload: 'src-electron/electron-preload'
// bexManifestFile: 'src-bex/manifest.json
// },
// https://v2.quasar.dev/quasar-cli-vite/developing-ssr/configuring-ssr
ssr: {
prodPort: 3000, // The default port that the production server should use
// (gets superseded if process.env.PORT is specified at runtime)
middlewares: [
'render', // keep this as last one
],
// extendPackageJson (json) {},
// extendSSRWebserverConf (esbuildConf) {},
// manualStoreSerialization: true,
// manualStoreSsrContextInjection: true,
// manualStoreHydration: true,
// manualPostHydrationTrigger: true,
pwa: false,
// pwaOfflineHtmlFilename: 'offline.html', // do NOT use index.html as name!
// will mess up SSR
// pwaExtendGenerateSWOptions (cfg) {},
// pwaExtendInjectManifestOptions (cfg) {}
},
// https://v2.quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa
pwa: {
workboxMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest'
// swFilename: 'sw.js',
// manifestFilename: 'manifest.json'
// extendManifestJson (json) {},
// useCredentialsForManifestTag: true,
// injectPwaMetaTags: false,
// extendPWACustomSWConf (esbuildConf) {},
// extendGenerateSWOptions (cfg) {},
// extendInjectManifestOptions (cfg) {}
},
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/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-vite/developing-capacitor-apps/configuring-capacitor
capacitor: {
hideSplashscreen: true,
},
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/configuring-electron
electron: {
// extendElectronMainConf (esbuildConf) {},
// extendElectronPreloadConf (esbuildConf) {},
// extendPackageJson (json) {},
// Electron preload scripts (if any) from /src-electron, WITHOUT file extension
preloadScripts: ['electron-preload'],
// specify the debugging port to use for the Electron app when running in development mode
inspectPort: 5858,
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: 'agencyosquasar',
},
},
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex
bex: {
// extendBexScriptsConf (esbuildConf) {},
// extendBexManifestJson (json) {},
contentScripts: ['my-content-script'],
},
};
}); |
Beta Was this translation helpful? Give feedback.
-
Is there support for BEX using manifest v3 in any of them? |
Beta Was this translation helpful? Give feedback.
-
Trying to follow the instructions on the https://quasar.dev/quasar-cli-webpack/upgrade-guide/ page.
When I run |
Beta Was this translation helpful? Give feedback.
-
I have tried to upgrade app-vite v2 and devServer.proxy with configure suddently not work. This code below is works on previous version of app-vite, i dont know why is not work in app-vite v2 beta.
|
Beta Was this translation helpful? Give feedback.
-
tl;dr:
|
Beta Was this translation helpful? Give feedback.
-
I just did the upgrade and it seems to work great. Smaller issues I am getting:
in the quasar.config.ts when switching to typescript I get this error from eslint:
App compilation still works. The reason I am getting this, is that it doesn't like that I am disabling the vendor chunk option. Because my app is quiet large and I do my own chunking with webpack. The option still works, but eslint complains about it that it isn't defined.
|
Beta Was this translation helpful? Give feedback.
-
Hi people, the last beta version (2.0.0-beta.14) was released 2 months ago, is this still being actively developed? If so, is there a rough ETA when 2.0.0 will have its first stable release? |
Beta Was this translation helpful? Give feedback.
-
Don't know if this has been reported or not, but using the beta with boot files seems to fail. Maybe some documentation missing, but the app can't locate boot files. Assuming from the server.ts change for local development. |
Beta Was this translation helpful? Give feedback.
-
The progress of beta is too slow |
Beta Was this translation helpful? Give feedback.
-
It would be nice if this version would allow the use of Quasar in a One guy found a solution here wich were never proposed as a PR: #7581 (comment) It seems to be a little patch but so much critical that I guess only @rstoenescu should handle it Anyway, thank you for filling the gap in terms of Vite version! PS: There is a discussion about it here #11059 |
Beta Was this translation helpful? Give feedback.
-
@rstoenescu I did a test migration with rc2 using the Vite guide: One thing that I needed to remove: tsconfig.json "compilerOptions": {
- "baseUrl": "."
} I think the docs imply that this should be the entire contents of the file: {
"extends": "./.quasar/tsconfig.json"
} In my case, I had some additional keys so assumed that the only thing to replace was the "extends" key. I just created a brand new Quasar project v1.4.3 using typescript and this was the default tsconfig.json: {
"extends": "@quasar/app-vite/tsconfig-preset",
"compilerOptions": {
"baseUrl": "."
}
} |
Beta Was this translation helpful? Give feedback.
-
Hi ! Thanks for the release :) Typscript isn't detecting properly the I add to add the following lines into my "include": ["**/*", ".quasar/**/*"] Do you have any idea why that is ? |
Beta Was this translation helpful? Give feedback.
-
Important update: 2024/11/27We have finalized the final q/app-vite v2.0.0 & q/app-webpack v4.0.0 (both have a few fixes on top of rc.4) and we are now writing the docs (q/app-vite is done, q/app-webpack needs a bit more work). Expect the release in a few more days. The docs for the legacy apps (q/app-vite v1 & q/app-webpack v3) will be moved to a dedicated website (legacy-app.quasar.dev) and the main docs (quasar.dev) will have only information related to the newer CLIs. |
Beta Was this translation helpful? Give feedback.
-
I am sorry I can`t start your project: What are the codes for the Terminal? |
Beta Was this translation helpful? Give feedback.
-
Running an npm update to test the webpack version to see if it fixes all the issues I identified previously (scroll up).
|
Beta Was this translation helpful? Give feedback.
-
I've just tried updating from I'm getting this TS error now:
Looking at app-vite |
Beta Was this translation helpful? Give feedback.
-
Hello ! I'm struggling a bit with the new tsconfig. Isn't this line missing: "moduleResolution": "bundler", |
Beta Was this translation helpful? Give feedback.
-
Has anyone using TS had any luck getting
error:
|
Beta Was this translation helpful? Give feedback.
-
Important update: 2024/12/04quasar/app-vite v2.0.0 (stable) & quasar/app-webpack v4.0.0 (stable) have been released!
Thank you to all who have helped test the new CLIs throughout the beta & rc stages! |
Beta Was this translation helpful? Give feedback.
-
Just updated my project to app-webpack 4.0.0 and currently dealing with this problem:
Had followed through the upgrade guide |
Beta Was this translation helpful? Give feedback.
-
I had set up a new project using app-vite 2.0 today and also added vitest support according to the docs. However the
Has anyone else encountered these problems? Besides this, everything worked fine, so great work! :) |
Beta Was this translation helpful? Give feedback.
-
Hi, Created a standard Quasar webpack example app with npm init quasar@latest as per https://quasar.dev/start/quick-start Run quasar dev and it fails with the following error. Expectation was it would work out of the box? |
Beta Was this translation helpful? Give feedback.
-
I have a "dumb" question on env files. I have Quasar Webpack V4 now working ok. Previously I had a .env file with dev keys, and in the quasar.config I had the following for production, which were connected at build time on Vercel through their environment variables: How do I do that now, considering env files are not uploaded to github? https://quasar.dev/quasar-cli-webpack/upgrade-guide#the-env-dotfiles-support implies they should be removed totally from quasar.config, so I'm a confused here about staging/production deployments. |
Beta Was this translation helpful? Give feedback.
-
Let me phrase this another way, in case you don't understand. Previously (pre webpack V4) we had two ways to deploy to vercel (as an example, any host is similar):
It appears you can no longer do method number 2, which is a problem because a CI process is really preferable over Vercel CLI or similar methods for other hosts. CI is the standard. So my issue is if the quasar.config env keys method no longer works what is the replacement method for doing a CI deployment process? I know you can have all sorts of .env files as explained here https://quasar.dev/quasar-cli-webpack/upgrade-guide#the-env-dotfiles-support but the standard is you don't upload ANY env file to gitbub even if the repo is private. That's basic security. So the ability to specify your env keys in Quasar.config using process.env (which was the advised method from the docs btw) seemed to be an elegant solution for CI use cases but does not appear to work post V4. This is a big deal because it's a key (as in critical but also key key!) deployment and security issue. @rstoenescu Any thoughts? I don't think I'm off base here, happy to be corrected if I am. Thanks! |
Beta Was this translation helpful? Give feedback.
-
I've ran into another issue when updating my tsconfig.json to use This is my
This is our
We're getting errors such as the below, when using
Essentially, TS doesn't know that Prior to the app-vite upgrade, we had a
However, the migration guide deleted this file and now the file is apparently generated in My question is, how should I address this? I can re-add the file to 'fix' these types by making modelValue not required. Would it be better for me to PR this in the type files themselves? is there a better approach? |
Beta Was this translation helpful? Give feedback.
-
Hello beautiful people,
We have made two big releases today:
There are a TON of improvements and new features and we'd like your help to test them thoroughly. The more people get engaged, the faster we can get them out the "beta". We've been working on these new CLIs for a very LONG time!
Release notes: q/app-vite and q/app-webpack
The documentation website has been updated and it now has two new pages (both called "Upgrade guide") under the "Quasar with Vite/Webpack" menu sections. If you don't see them right away, allow time for the docs PWA to update.
Any constructive feedback is appreciated.
Enjoy!
Important update: 2024/12/04
quasar/app-vite v2.0.0 (stable) & quasar/app-webpack v4.0.0 (stable) have been released!
Enjoy and make sure that you read and apply the upgrade guide thoroughly!
Thank you to all who have helped test the new CLIs throughout the beta & rc stages!
Important update: 2024/11/27
We have finalized the final q/app-vite v2.0.0 & q/app-webpack v4.0.0 (both have a few fixes on top of rc.4) and we are now writing the docs (q/app-vite is done, q/app-webpack needs a bit more work). Expect the release in a few more days. The docs for the legacy apps (q/app-vite v1 & q/app-webpack v3) will be moved to a dedicated website (legacy-app.quasar.dev) and the main docs (quasar.dev) will have only information related to the newer CLIs.
Important update: 2024/11/16
Release Candidate versions for both q/app-vite & q/app-webpack are here! No further breaking changes are planned.
Important update: 2024/11/08
The next q/app-vite v2 (beta.25) will come with Vite 6 (today or tomorrow). There will be one more beta next week and then we are shipping the stable version (or skip the next beta altogether... we're almost there!). Again, sorry for the delay, but just remember that this is not only a Vite upgrade from 2 to 6. It comes with a lot of new and very important features.
Important update: 2024/11/06
We would have released the new q/app-s (I think that you are referring to them) last week if I didn't get a breakthrough very recently for the BEX mode (HMR for Chrome! is one of them).
On the fact that "it takes too much time": this is always the case when we are taking a big leap forward (UI or CLI) and lots of research is needed. The development appears to slow down. However, in reality it's quite the opposite. Every. Time. The new CLIs are such a major improvement and the work we are putting into them was and is so insane that you, the community, would not believe it. Like with the previous major releases, we want to ship the best product ever, and it takes time. We also don't want to get "aaah, but this fix will make a breaking change" type of moments (and then release another major version). CLI development is hard. We're doing things no one else has. The ESM changes have huge implications and that's why testing & feedback from the community is really important. What worsened the situation for the new CLIs is that we started with a plan that kept on changing due to the ecosystem (the rapid release of Vite 3, 4 & 5 is one of the reasons).
In any case, this week we will release the final beta (take it as an RC too) for both the CLIs and then things will get back to what you were used to before.
PS: For those working at companies using Quasar, we would really appreciate if you could ask your employers to sponsor/donate to Quasar. It would mean quite a lot for us and it would speed up the development. https://donate.quasar.dev
Important update: 2024/08/15
After upgrading to quasar/app-vite v2 beta.19+ & quasar/app-webpack v4 beta.20+, please take the action below:
Action to take
The feature flag files must be deleted from your project folder. They need to be generated again (will happen automatically).
Using
rimraf
throughnpx
(orpnpx
,yarn dlx
,bunx
)Unix-like (Linux, macOS):
Windows (CMD):
Windows (PowerShell):
Explanation
#17301 changes
moduleResolution
fromnode
tobundler
. That broke the feature flags system. Here is an example common error:It's because even though TS normally doesn't enforce the file extension inside the app code and imports from node_modules when using
bundler
, it does enforce it for wildcardpackage.json > exports
entries. So,quasar/dist/types/feature-flag
no longer works and must be changed toquasar/dist/types/feature-flag.d.ts
instead.This change will only apply to feature flags generated after the release of this. So, existing projects will only benefit from it when they add Pinia or build modes, OR delete the feature flag files and run
quasar dev
/quasar build
to re-generate them. New projects will work fine.Beta Was this translation helpful? Give feedback.
All reactions