diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 01aecaffc62698..0809f906a1d05f 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,18 +1,22 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:base", "schedule:weekly", "group:allNonMajor"], + "extends": ["config:recommended", "schedule:weekly", "group:allNonMajor"], "labels": ["dependencies"], "ignorePaths": ["**/__tests__/**"], "rangeStrategy": "bump", "packageRules": [ { - "depTypeList": ["peerDependencies"], + "matchDepTypes": ["peerDependencies"], "enabled": false, }, { "matchDepTypes": ["action"], - "excludePackagePrefixes": ["actions/", "github/"], "pinDigests": true, + "matchPackageNames": ["!actions/{/,}**", "!github/{/,}**"], + }, + { + "groupName": "rolldown-related dependencies", + "matchDepNames": ["rolldown", "rolldown-plugin-dts", "tsdown"], }, ], "ignoreDeps": [ @@ -22,6 +26,8 @@ "node", "typescript", "@rollup/plugin-dynamic-import-vars", // prefer version using tinyglobby + "@oxc-project/runtime", // align version with rolldown + "@oxc-project/types", // align version with rolldown // pinned "slash3", @@ -32,20 +38,20 @@ "kill-port", // `kill-port:^2.0.0 has perf issues (#8392) ], "github-actions": { - "fileMatch": [ + "managerFilePatterns": [ // default values - "(^|/)(workflow-templates|\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\.ya?ml$", - "(^|/)action\\.ya?ml$", + "/(^|/)(workflow-templates|\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\.ya?ml$/", + "/(^|/)action\\.ya?ml$/", // custom value - "(^|/)docs/guide/static-deploy-github-pages\\.yaml$", + "/(^|/)docs/guide/static-deploy-github-pages\\.yaml$/", ], }, "customManagers": [ { "customType": "regex", - "fileMatch": ["packages\/create-vite\/src\/index\\.ts$"], + "managerFilePatterns": ["/packages/create-vite/src/index\\.ts$/"], "matchStrings": [ - "\/\/\\s*renovate:\\s+datasource=(?\\S+)\\s+depName=(?\\S+)\\s+(?:var|let|const)\\s+\\S+\\s*=\\s*[\"'](?[^\"']+)[\"']", + "//\\s*renovate:\\s+datasource=(?\\S+)\\s+depName=(?\\S+)\\s+(?:var|let|const)\\s+\\S+\\s*=\\s*[\"'](?[^\"']+)[\"']", ], }, ], diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 669c624778d5d4..7119b954339b38 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,7 +46,7 @@ jobs: - name: Get changed files id: changed-files - uses: tj-actions/changed-files@dcc7a0cba800f454d79fff4b993e8c3555bcc0a8 # v45.0.7 + uses: tj-actions/changed-files@a284dc1814e3fd07f2e34267fc8f81227ed29fb8 # v45.0.9 with: files: | docs/** @@ -63,7 +63,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node_version: [18, 20, 22] + node_version: [20, 22, 24] include: # Active LTS + other OS - os: macos-latest diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8687c3891021af..718922d225f1ba 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -49,7 +49,7 @@ To add a new language to the Vite docs, see [`vite-docs-template`](https://githu Vite aims to be lightweight, and this includes being aware of the number of npm dependencies and their size. -We use Rollup to pre-bundle most dependencies before publishing! Therefore, most dependencies, even those used in runtime source code, should be added under `devDependencies` by default. This also creates the following constraints that we need to be aware of in the codebase. +We use Rolldown to pre-bundle most dependencies before publishing! Therefore, most dependencies, even those used in runtime source code, should be added under `devDependencies` by default. This also creates the following constraints that we need to be aware of in the codebase. ### Usage of `require()` @@ -120,6 +120,12 @@ Some errors are masked and hidden away because of the layers of abstraction and You can set the `--debug` option to turn on debugging logs (e.g. `vite --debug resolve`). To see all debug logs, you can set `vite --debug *`, but be warned that it will be quite noisy. You can run `grep -r "createDebugger('vite:" packages/vite/src/` to see a list of available debug scopes. +### Disabling Source Maps + +Source maps for Vite's source code are enabled by default when Vite is placed outside `node_modules` so that you can easily debug it. When bundling Vite in watch mode, source maps will be generated. + +However, this behavior may not be desirable when you are developing source map related features. In that case, you can disable source maps by setting the `DEBUG_DISABLE_SOURCE_MAP` environment variable to `1` when running Vite (e.g. `DEBUG_DISABLE_SOURCE_MAP=1 vite`). This environment variable can also be used to disable source map generation. + ## Testing Vite against external packages You may wish to test your locally modified copy of Vite against another package that is built with Vite. For pnpm, after building Vite, you can use [`pnpm.overrides`](https://pnpm.io/package_json#pnpmoverrides) to do this. Note that `pnpm.overrides` must be specified in the root `package.json`, and you must list the package as a dependency in the root `package.json`: @@ -226,18 +232,15 @@ For a mock dependency, make sure you add a `@vitejs/test-` prefix to the package - Checkout a topic branch from a base branch (e.g. `main`), and merge back against that branch. - If adding a new feature: - - Add accompanying test case. - Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first, and have it approved before working on it. - If fixing a bug: - - If you are resolving a special issue, add `(fix #xxxx[,#xxxx])` (#xxxx is the issue id) in your PR title for a better release log (e.g. `fix: update entities encoding/decoding (fix #3899)`). - Provide a detailed description of the bug in the PR. Live demo preferred. - Add appropriate test coverage if applicable. - If it's a chore: - - For typos and comment changes, try to combine multiple of them into a single PR. - **Note that we discourage contributors from submitting code refactors that are largely stylistic.** Code refactors are only accepted if it improves performance, or objectively improves code quality (e.g. makes a related bug fix or feature implementation easier, and it is as a separate PR to improve git history). - The reason is that code readability is subjective. The maintainers of this project have chosen to write the code in its current style based on our preferences, and we do not want to spend time explaining our stylistic preferences. Contributors should just respect the established conventions when contributing code. Another aspect of it is that large scale stylistic changes result in massive diffs that touch multiple files, adding noise to the git history and makes tracing behavior changes across commits more cumbersome. diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 24dfc2a0af7772..bcba429ae1c436 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -136,6 +136,7 @@ export default defineConfig({ pt: { label: 'Português', link: 'https://pt.vite.dev' }, ko: { label: '한국어', link: 'https://ko.vite.dev' }, de: { label: 'Deutsch', link: 'https://de.vite.dev' }, + fa: { label: 'فارسی', link: 'https://fa.vite.dev' }, }, themeConfig: { @@ -306,7 +307,7 @@ export default defineConfig({ link: '/guide/rolldown', }, { - text: 'Migration from v5', + text: 'Migration from v6', link: '/guide/migration', }, { @@ -422,15 +423,15 @@ export default defineConfig({ link: '/changes/hotupdate-hook', }, { - text: 'Move to per-environment APIs', + text: 'Move to Per-environment APIs', link: '/changes/per-environment-apis', }, { - text: 'SSR using ModuleRunner API', + text: 'SSR Using ModuleRunner API', link: '/changes/ssr-using-modulerunner', }, { - text: 'Shared plugins during build', + text: 'Shared Plugins During Build', link: '/changes/shared-plugins-during-build', }, ], diff --git a/docs/.vitepress/theme/components/AsideSponsors.vue b/docs/.vitepress/theme/components/AsideSponsors.vue index 36bd1b01849f65..55a52c481fff5e 100644 --- a/docs/.vitepress/theme/components/AsideSponsors.vue +++ b/docs/.vitepress/theme/components/AsideSponsors.vue @@ -8,7 +8,7 @@ const { data } = useSponsor() const sponsors = computed(() => { return [ { size: 'small', items: [voidZero] }, - ...(data?.value.map((sponsor) => { + ...(data.value?.map((sponsor) => { return { size: sponsor.size === 'big' ? 'mini' : 'xmini', items: sponsor.items, diff --git a/docs/.vitepress/theme/components/YouTubeVideo.vue b/docs/.vitepress/theme/components/YouTubeVideo.vue index 4aa6c93d9eb0ac..59f05d56fa2284 100644 --- a/docs/.vitepress/theme/components/YouTubeVideo.vue +++ b/docs/.vitepress/theme/components/YouTubeVideo.vue @@ -1,4 +1,4 @@ - diff --git a/docs/.vitepress/theme/components/landing/2. feature-section/FeatureCI.vue b/docs/.vitepress/theme/components/landing/2. feature-section/FeatureCI.vue index 0b02e148e40c46..cb2c9e6ff5809e 100644 --- a/docs/.vitepress/theme/components/landing/2. feature-section/FeatureCI.vue +++ b/docs/.vitepress/theme/components/landing/2. feature-section/FeatureCI.vue @@ -44,7 +44,7 @@ const { startAnimation, isCardActive } = useCardAnimation( () => { glowVisible.value = true }, - null, + undefined, 0.2, ) // Make the glowing lines hidden shortly after @@ -52,7 +52,7 @@ const { startAnimation, isCardActive } = useCardAnimation( () => { glowVisible.value = false }, - null, + undefined, 1.1, ) @@ -62,7 +62,7 @@ const { startAnimation, isCardActive } = useCardAnimation( () => { checkmark.value = true }, - null, + undefined, 1.3 + index * 0.2, ) }) @@ -228,91 +228,91 @@ const { startAnimation, isCardActive } = useCardAnimation( path="M1.00048 119.402L200.243 68.2732C213.283 65.4129 221.832 58.4923 221.832 50.7968V20.323V1" :position="glowPosition" :visible="glowVisible" - :dot-color="false" + :dot-color="undefined" glow-color="#13B351" /> diff --git a/docs/.vitepress/theme/components/landing/2. feature-section/FeatureFlexiblePlugins.vue b/docs/.vitepress/theme/components/landing/2. feature-section/FeatureFlexiblePlugins.vue index e8a3e32ae16c2c..aee7220daaaa0d 100644 --- a/docs/.vitepress/theme/components/landing/2. feature-section/FeatureFlexiblePlugins.vue +++ b/docs/.vitepress/theme/components/landing/2. feature-section/FeatureFlexiblePlugins.vue @@ -12,7 +12,7 @@ useSlideIn('#flexible-plugin-system') */ const { isCardActive, startAnimation } = useCardAnimation( '#flexible-plugin-system', - null, + undefined, { once: true, }, diff --git a/docs/.vitepress/theme/components/landing/2. feature-section/FeatureInstantServerStart.vue b/docs/.vitepress/theme/components/landing/2. feature-section/FeatureInstantServerStart.vue index 6b12c1c4223431..6146a019bbd6d1 100644 --- a/docs/.vitepress/theme/components/landing/2. feature-section/FeatureInstantServerStart.vue +++ b/docs/.vitepress/theme/components/landing/2. feature-section/FeatureInstantServerStart.vue @@ -1,4 +1,4 @@ - diff --git a/docs/package.json b/docs/package.json index 86d866abe3034b..58383da5d5c06b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,11 +9,12 @@ }, "devDependencies": { "@shikijs/vitepress-twoslash": "^2.5.0", - "@types/express": "^5.0.1", - "feed": "^4.2.2", + "@types/express": "^5.0.3", + "feed": "^5.1.0", + "gsap": "^3.13.0", "vitepress": "^1.6.3", - "vitepress-plugin-group-icons": "^1.5.2", - "vitepress-plugin-llms": "^1.1.0", - "vue": "^3.5.13" + "vitepress-plugin-group-icons": "^1.6.0", + "vitepress-plugin-llms": "^1.5.1", + "vue": "^3.5.17" } } diff --git a/docs/public/bolt.svg b/docs/public/bolt.svg new file mode 100644 index 00000000000000..d7e24ff175f060 --- /dev/null +++ b/docs/public/bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/public/og-image-announcing-vite7.png b/docs/public/og-image-announcing-vite7.png new file mode 100644 index 00000000000000..ffac155b3083b8 Binary files /dev/null and b/docs/public/og-image-announcing-vite7.png differ diff --git a/eslint.config.js b/eslint.config.js index 366a8d936bca7e..ec419d26df99cf 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -52,7 +52,7 @@ export default tseslint.config( }, settings: { node: { - version: '^18.0.0 || ^20.0.0 || >=22.0.0', + version: '^20.19.0 || >=22.12.0', }, }, plugins: { @@ -66,7 +66,7 @@ export default tseslint.config( 'n/no-unsupported-features/node-builtins': [ 'error', { - // TODO: remove this when we don't support Node 18 anymore + // TODO: remove this when we don't support Node 20 anymore ignores: ['Response', 'Request', 'fetch'], }, ], @@ -100,6 +100,7 @@ export default tseslint.config( 'less', 'sass', 'sass-embedded', + 'terser', 'lightningcss', 'vitest', 'unbuild', @@ -161,7 +162,19 @@ export default tseslint.config( { allow: builtinModules.map((mod) => `node:${mod}`) }, ], 'import-x/no-duplicates': 'error', - 'import-x/order': 'error', + 'import-x/order': [ + 'error', + { + groups: [ + 'builtin', + 'external', + 'internal', + 'parent', + 'sibling', + 'index', + ], + }, + ], 'sort-imports': [ 'error', { @@ -198,7 +211,7 @@ export default tseslint.config( name: d, message: `devDependencies can only be imported using ESM syntax so ` + - `that they are included in the rollup bundle. If you are trying to ` + + `that they are included in the rolldown bundle. If you are trying to ` + `lazy load a dependency, use (await import('dependency')).default instead.`, })), ], diff --git a/package.json b/package.json index c3e82b33ef3da6..f32f7616ed3313 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "private": true, "type": "module", "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "homepage": "https://vite.dev/", "repository": { @@ -22,7 +22,7 @@ "postinstall": "simple-git-hooks", "format": "prettier --write --cache .", "lint": "eslint --cache .", - "typecheck": "tsc -p scripts --noEmit && pnpm -r --parallel run typecheck", + "typecheck": "tsc -p scripts && pnpm -r --parallel run typecheck", "test": "pnpm test-unit && pnpm test-serve && pnpm test-build", "test-serve": "vitest run -c vitest.config.e2e.ts", "test-build": "VITE_TEST_BUILD=1 vitest run -c vitest.config.e2e.ts", @@ -40,43 +40,39 @@ "ci-docs": "pnpm build && pnpm docs-build" }, "devDependencies": { - "@eslint/js": "^9.25.0", + "@eslint/js": "^9.29.0", "@type-challenges/utils": "^0.1.1", "@types/babel__core": "^7.20.5", "@types/babel__preset-env": "^7.10.0", "@types/convert-source-map": "^2.0.3", "@types/cross-spawn": "^6.0.6", "@types/debug": "^4.1.12", - "@types/estree": "^1.0.7", - "@types/etag": "^1.8.3", + "@types/estree": "^1.0.8", + "@types/etag": "^1.8.4", "@types/less": "^3.0.8", - "@types/node": "^22.13.6", + "@types/node": "^22.15.32", "@types/picomatch": "^4.0.0", "@types/stylus": "^0.48.43", "@types/ws": "^8.18.1", "@vitejs/release-scripts": "^1.5.0", "conventional-changelog-cli": "^5.0.0", - "eslint": "^9.25.0", - "eslint-plugin-import-x": "^4.10.6", - "eslint-plugin-n": "^17.17.0", - "eslint-plugin-regexp": "^2.7.0", - "execa": "^9.5.2", - "globals": "^16.0.0", - "gsap": "^3.12.7", - "lint-staged": "^15.5.1", + "eslint": "^9.29.0", + "eslint-plugin-import-x": "^4.15.2", + "eslint-plugin-n": "^17.20.0", + "eslint-plugin-regexp": "^2.9.0", + "execa": "^9.6.0", + "globals": "^16.2.0", + "lint-staged": "^16.1.2", "picocolors": "^1.1.1", - "playwright-chromium": "^1.50.1", - "premove": "^4.0.0", - "prettier": "3.5.3", - "rollup": "^4.34.9", - "rollup-plugin-esbuild": "^6.2.1", - "simple-git-hooks": "^2.12.1", - "tslib": "^2.8.1", - "tsx": "^4.19.3", + "playwright-chromium": "^1.53.1", + "prettier": "3.6.0", + "rollup": "^4.40.0", + "simple-git-hooks": "^2.13.0", + "tsx": "^4.20.3", "typescript": "~5.7.2", - "typescript-eslint": "^8.30.1", + "typescript-eslint": "^8.34.1", "vite": "workspace:*", - "vitest": "^3.1.1" + "vitest": "^3.2.4" }, "simple-git-hooks": { "pre-commit": "pnpm exec lint-staged --concurrent false" @@ -95,7 +91,7 @@ "eslint --cache --fix" ] }, - "packageManager": "pnpm@10.8.1", + "packageManager": "pnpm@10.12.2", "pnpm": { "overrides": { "vite": "workspace:*" @@ -134,10 +130,13 @@ ], "onlyBuiltDependencies": [ "@parcel/watcher", + "@tailwindcss/oxide", "bcrypt", "esbuild", "playwright-chromium", + "sharp", "simple-git-hooks", + "unrs-resolver", "workerd" ] }, diff --git a/packages/create-vite/README.md b/packages/create-vite/README.md index 8547136d11c0dc..6937ff24724340 100644 --- a/packages/create-vite/README.md +++ b/packages/create-vite/README.md @@ -3,7 +3,7 @@ ## Scaffolding Your First Vite Project > **Compatibility Note:** -> Vite requires [Node.js](https://nodejs.org/en/) version 18+, 20+. However, some templates require a higher Node.js version to work, please upgrade if your package manager warns about it. +> Vite requires [Node.js](https://nodejs.org/en/) version 20.19+, 22.12+. However, some templates require a higher Node.js version to work, please upgrade if your package manager warns about it. With NPM: diff --git a/packages/create-vite/index.js b/packages/create-vite/index.js index f5e8e064a68d9f..a771b9844382e6 100755 --- a/packages/create-vite/index.js +++ b/packages/create-vite/index.js @@ -1,3 +1,3 @@ #!/usr/bin/env node -import './dist/index.mjs' +import './dist/index.js' diff --git a/packages/create-vite/package.json b/packages/create-vite/package.json index a85b01fcb24fda..811d0ff93f226f 100644 --- a/packages/create-vite/package.json +++ b/packages/create-vite/package.json @@ -14,13 +14,13 @@ "dist" ], "scripts": { - "dev": "unbuild --stub", - "build": "unbuild", - "typecheck": "tsc --noEmit", + "dev": "tsdown --watch", + "build": "tsdown", + "typecheck": "tsc", "prepublishOnly": "npm run build" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "repository": { "type": "git", @@ -33,10 +33,10 @@ "homepage": "https://github.com/vitejs/vite/tree/main/packages/create-vite#readme", "funding": "https://github.com/vitejs/vite?sponsor=1", "devDependencies": { - "@clack/prompts": "^0.10.1", + "@clack/prompts": "^0.11.0", "cross-spawn": "^7.0.6", "mri": "^1.2.0", "picocolors": "^1.1.1", - "unbuild": "^3.5.0" + "tsdown": "^0.12.8" } } diff --git a/packages/create-vite/src/index.ts b/packages/create-vite/src/index.ts index 4f6bb7900e418a..ff81509a655c37 100755 --- a/packages/create-vite/src/index.ts +++ b/packages/create-vite/src/index.ts @@ -148,7 +148,7 @@ const FRAMEWORKS: Framework[] = [ display: 'TanStack Router ↗', color: cyan, customCommand: - 'npm create -- tsrouter-app@latest TARGET_DIR --framework react --interactive', + 'npm create -- tsrouter-app@latest TARGET_DIR --framework React --interactive', }, { name: 'redwoodsdk-standard', @@ -157,6 +157,13 @@ const FRAMEWORKS: Framework[] = [ customCommand: 'npm exec degit redwoodjs/sdk/starters/standard TARGET_DIR', }, + { + name: '@hiogawa/vite-rsc', + display: '@hiogawa/vite-rsc ↗', + color: magenta, + customCommand: + 'npm exec degit hi-ogawa/vite-plugins/packages/rsc/examples/starter TARGET_DIR', + }, ], }, { @@ -242,7 +249,7 @@ const FRAMEWORKS: Framework[] = [ display: 'TanStack Router ↗', color: cyan, customCommand: - 'npm create -- tsrouter-app@latest TARGET_DIR --framework solid --interactive', + 'npm create -- tsrouter-app@latest TARGET_DIR --framework Solid --interactive', }, ], }, @@ -356,9 +363,14 @@ async function init() { message: 'Project name:', defaultValue: defaultTargetDir, placeholder: defaultTargetDir, + validate: (value) => { + return value.length === 0 || formatTargetDir(value).length > 0 + ? undefined + : 'Invalid project name' + }, }) if (prompts.isCancel(projectName)) return cancel() - targetDir = formatTargetDir(projectName as string) + targetDir = formatTargetDir(projectName) } // 2. Handle directory if exist and not empty @@ -613,7 +625,7 @@ function pkgFromUserAgent(userAgent: string | undefined): PkgInfo | undefined { function setupReactSwc(root: string, isTs: boolean) { // renovate: datasource=npm depName=@vitejs/plugin-react-swc - const reactSwcPluginVersion = '3.9.0' + const reactSwcPluginVersion = '3.10.2' editFile(path.resolve(root, 'package.json'), (content) => { return content.replace( diff --git a/packages/create-vite/template-lit-ts/package.json b/packages/create-vite/template-lit-ts/package.json index 3830e147c46a8c..e71c7bd95d91ed 100644 --- a/packages/create-vite/template-lit-ts/package.json +++ b/packages/create-vite/template-lit-ts/package.json @@ -13,6 +13,6 @@ }, "devDependencies": { "typescript": "~5.8.3", - "vite": "^6.3.5" + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-lit-ts/tsconfig.json b/packages/create-vite/template-lit-ts/tsconfig.json index b5e134f0f1ca80..4ab6f238911d9e 100644 --- a/packages/create-vite/template-lit-ts/tsconfig.json +++ b/packages/create-vite/template-lit-ts/tsconfig.json @@ -1,10 +1,10 @@ { "compilerOptions": { - "target": "ES2020", + "target": "ES2022", "experimentalDecorators": true, "useDefineForClassFields": false, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2022", "DOM", "DOM.Iterable"], "skipLibCheck": true, /* Bundler mode */ diff --git a/packages/create-vite/template-lit/package.json b/packages/create-vite/template-lit/package.json index 328deeb52d2e69..f58fdbca957083 100644 --- a/packages/create-vite/template-lit/package.json +++ b/packages/create-vite/template-lit/package.json @@ -12,6 +12,6 @@ "lit": "^3.3.0" }, "devDependencies": { - "vite": "^6.3.5" + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-preact-ts/package.json b/packages/create-vite/template-preact-ts/package.json index 4de793d366a298..03a594479f192e 100644 --- a/packages/create-vite/template-preact-ts/package.json +++ b/packages/create-vite/template-preact-ts/package.json @@ -9,11 +9,11 @@ "preview": "vite preview" }, "dependencies": { - "preact": "^10.26.5" + "preact": "^10.26.9" }, "devDependencies": { "@preact/preset-vite": "^2.10.1", "typescript": "~5.8.3", - "vite": "^6.3.5" + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-preact-ts/tsconfig.app.json b/packages/create-vite/template-preact-ts/tsconfig.app.json index 3e7499b65d423b..1187f87a5a7d96 100644 --- a/packages/create-vite/template-preact-ts/tsconfig.app.json +++ b/packages/create-vite/template-preact-ts/tsconfig.app.json @@ -1,10 +1,10 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2020", + "target": "ES2022", "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2022", "DOM", "DOM.Iterable"], "skipLibCheck": true, "paths": { "react": ["./node_modules/preact/compat/"], diff --git a/packages/create-vite/template-preact-ts/tsconfig.node.json b/packages/create-vite/template-preact-ts/tsconfig.node.json index 9728af2d81af0e..f85a39906e5571 100644 --- a/packages/create-vite/template-preact-ts/tsconfig.node.json +++ b/packages/create-vite/template-preact-ts/tsconfig.node.json @@ -1,7 +1,7 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2022", + "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, diff --git a/packages/create-vite/template-preact/package.json b/packages/create-vite/template-preact/package.json index d8c46d722009ac..2a9283b149c789 100644 --- a/packages/create-vite/template-preact/package.json +++ b/packages/create-vite/template-preact/package.json @@ -9,10 +9,10 @@ "preview": "vite preview" }, "dependencies": { - "preact": "^10.26.5" + "preact": "^10.26.9" }, "devDependencies": { "@preact/preset-vite": "^2.10.1", - "vite": "^6.3.5" + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-qwik-ts/README.md b/packages/create-vite/template-qwik-ts/README.md index 762d624f49c28d..179af0e662c7b4 100644 --- a/packages/create-vite/template-qwik-ts/README.md +++ b/packages/create-vite/template-qwik-ts/README.md @@ -2,7 +2,7 @@ ## Qwik in CSR mode -This starter is using a pure CSR (Client Side Rendering) mode. This means, that the application is fully bootstrapped in the browser. Most of Qwik innovations however take advantage of SSR (Server Side Rendering) mode. +This starter is using a pure CSR (Client Side Rendering) mode. This means, that the application is fully bootstrapped in the browser. Most of Qwik innovations however take advantage of SSR (Server-Side Rendering) mode. ```ts export default defineConfig({ diff --git a/packages/create-vite/template-qwik-ts/package.json b/packages/create-vite/template-qwik-ts/package.json index 25a2a23b8e9c97..2c6cdf7034a243 100644 --- a/packages/create-vite/template-qwik-ts/package.json +++ b/packages/create-vite/template-qwik-ts/package.json @@ -11,9 +11,9 @@ "devDependencies": { "serve": "^14.2.4", "typescript": "~5.8.3", - "vite": "^6.3.5" + "vite": "^7.0.0-beta.2" }, "dependencies": { - "@builder.io/qwik": "^1.13.0" + "@builder.io/qwik": "^1.14.1" } } diff --git a/packages/create-vite/template-qwik-ts/tsconfig.app.json b/packages/create-vite/template-qwik-ts/tsconfig.app.json index c38720706c7a52..9f9324aca711b5 100644 --- a/packages/create-vite/template-qwik-ts/tsconfig.app.json +++ b/packages/create-vite/template-qwik-ts/tsconfig.app.json @@ -1,10 +1,10 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2020", + "target": "ES2022", "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2022", "DOM", "DOM.Iterable"], "skipLibCheck": true, /* Bundler mode */ diff --git a/packages/create-vite/template-qwik-ts/tsconfig.node.json b/packages/create-vite/template-qwik-ts/tsconfig.node.json index 9728af2d81af0e..f85a39906e5571 100644 --- a/packages/create-vite/template-qwik-ts/tsconfig.node.json +++ b/packages/create-vite/template-qwik-ts/tsconfig.node.json @@ -1,7 +1,7 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2022", + "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, diff --git a/packages/create-vite/template-qwik/README.md b/packages/create-vite/template-qwik/README.md index 762d624f49c28d..179af0e662c7b4 100644 --- a/packages/create-vite/template-qwik/README.md +++ b/packages/create-vite/template-qwik/README.md @@ -2,7 +2,7 @@ ## Qwik in CSR mode -This starter is using a pure CSR (Client Side Rendering) mode. This means, that the application is fully bootstrapped in the browser. Most of Qwik innovations however take advantage of SSR (Server Side Rendering) mode. +This starter is using a pure CSR (Client Side Rendering) mode. This means, that the application is fully bootstrapped in the browser. Most of Qwik innovations however take advantage of SSR (Server-Side Rendering) mode. ```ts export default defineConfig({ diff --git a/packages/create-vite/template-qwik/package.json b/packages/create-vite/template-qwik/package.json index 7bed69a8eeeb72..2409e8dce14396 100644 --- a/packages/create-vite/template-qwik/package.json +++ b/packages/create-vite/template-qwik/package.json @@ -10,9 +10,9 @@ }, "devDependencies": { "serve": "^14.2.4", - "vite": "^6.3.5" + "vite": "^7.0.0-beta.2" }, "dependencies": { - "@builder.io/qwik": "^1.13.0" + "@builder.io/qwik": "^1.14.1" } } diff --git a/packages/create-vite/template-react-ts/README.md b/packages/create-vite/template-react-ts/README.md index da9844432b833b..7959ce4269342e 100644 --- a/packages/create-vite/template-react-ts/README.md +++ b/packages/create-vite/template-react-ts/README.md @@ -12,23 +12,31 @@ Currently, two official plugins are available: If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: ```js -export default tseslint.config({ - extends: [ - // Remove ...tseslint.configs.recommended and replace with this - ...tseslint.configs.recommendedTypeChecked, - // Alternatively, use this for stricter rules - ...tseslint.configs.strictTypeChecked, - // Optionally, add this for stylistic rules - ...tseslint.configs.stylisticTypeChecked, - ], - languageOptions: { - // other options... - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, +export default tseslint.config([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + ...tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + ...tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + ...tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... }, }, -}) +]) ``` You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: @@ -38,17 +46,24 @@ You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-re import reactX from 'eslint-plugin-react-x' import reactDom from 'eslint-plugin-react-dom' -export default tseslint.config({ - plugins: { - // Add the react-x and react-dom plugins - 'react-x': reactX, - 'react-dom': reactDom, - }, - rules: { - // other rules... - // Enable its recommended typescript rules - ...reactX.configs['recommended-typescript'].rules, - ...reactDom.configs.recommended.rules, +export default tseslint.config([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, }, -}) +]) ``` diff --git a/packages/create-vite/template-react-ts/eslint.config.js b/packages/create-vite/template-react-ts/eslint.config.js index 092408a9f09eae..d94e7deb72c90f 100644 --- a/packages/create-vite/template-react-ts/eslint.config.js +++ b/packages/create-vite/template-react-ts/eslint.config.js @@ -3,26 +3,21 @@ import globals from 'globals' import reactHooks from 'eslint-plugin-react-hooks' import reactRefresh from 'eslint-plugin-react-refresh' import tseslint from 'typescript-eslint' +import { globalIgnores } from 'eslint/config' -export default tseslint.config( - { ignores: ['dist'] }, +export default tseslint.config([ + globalIgnores(['dist']), { - extends: [js.configs.recommended, ...tseslint.configs.recommended], files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs['recommended-latest'], + reactRefresh.configs.vite, + ], languageOptions: { ecmaVersion: 2020, globals: globals.browser, }, - plugins: { - 'react-hooks': reactHooks, - 'react-refresh': reactRefresh, - }, - rules: { - ...reactHooks.configs.recommended.rules, - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, }, -) +]) diff --git a/packages/create-vite/template-react-ts/package.json b/packages/create-vite/template-react-ts/package.json index 36c60fc3e38533..df1d8724481a91 100644 --- a/packages/create-vite/template-react-ts/package.json +++ b/packages/create-vite/template-react-ts/package.json @@ -14,16 +14,16 @@ "react-dom": "^19.1.0" }, "devDependencies": { - "@eslint/js": "^9.25.0", - "@types/react": "^19.1.2", - "@types/react-dom": "^19.1.2", - "@vitejs/plugin-react": "^4.4.1", - "eslint": "^9.25.0", + "@eslint/js": "^9.29.0", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@vitejs/plugin-react": "^4.5.2", + "eslint": "^9.29.0", "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.19", - "globals": "^16.0.0", + "eslint-plugin-react-refresh": "^0.4.20", + "globals": "^16.2.0", "typescript": "~5.8.3", - "typescript-eslint": "^8.30.1", - "vite": "^6.3.5" + "typescript-eslint": "^8.34.1", + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-react-ts/tsconfig.app.json b/packages/create-vite/template-react-ts/tsconfig.app.json index c9ccbd4c59447b..227a6c6723b613 100644 --- a/packages/create-vite/template-react-ts/tsconfig.app.json +++ b/packages/create-vite/template-react-ts/tsconfig.app.json @@ -1,9 +1,9 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2020", + "target": "ES2022", "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2022", "DOM", "DOM.Iterable"], "module": "ESNext", "skipLibCheck": true, diff --git a/packages/create-vite/template-react-ts/tsconfig.node.json b/packages/create-vite/template-react-ts/tsconfig.node.json index 9728af2d81af0e..f85a39906e5571 100644 --- a/packages/create-vite/template-react-ts/tsconfig.node.json +++ b/packages/create-vite/template-react-ts/tsconfig.node.json @@ -1,7 +1,7 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2022", + "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, diff --git a/packages/create-vite/template-react/eslint.config.js b/packages/create-vite/template-react/eslint.config.js index ec2b712d301e7d..cee1e2c788d908 100644 --- a/packages/create-vite/template-react/eslint.config.js +++ b/packages/create-vite/template-react/eslint.config.js @@ -2,11 +2,17 @@ import js from '@eslint/js' import globals from 'globals' import reactHooks from 'eslint-plugin-react-hooks' import reactRefresh from 'eslint-plugin-react-refresh' +import { defineConfig, globalIgnores } from 'eslint/config' -export default [ - { ignores: ['dist'] }, +export default defineConfig([ + globalIgnores(['dist']), { files: ['**/*.{js,jsx}'], + extends: [ + js.configs.recommended, + reactHooks.configs['recommended-latest'], + reactRefresh.configs.vite, + ], languageOptions: { ecmaVersion: 2020, globals: globals.browser, @@ -16,18 +22,8 @@ export default [ sourceType: 'module', }, }, - plugins: { - 'react-hooks': reactHooks, - 'react-refresh': reactRefresh, - }, rules: { - ...js.configs.recommended.rules, - ...reactHooks.configs.recommended.rules, 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], }, }, -] +]) diff --git a/packages/create-vite/template-react/package.json b/packages/create-vite/template-react/package.json index 3c3601cee7ee07..61017557ab8176 100644 --- a/packages/create-vite/template-react/package.json +++ b/packages/create-vite/template-react/package.json @@ -14,14 +14,14 @@ "react-dom": "^19.1.0" }, "devDependencies": { - "@eslint/js": "^9.25.0", - "@types/react": "^19.1.2", - "@types/react-dom": "^19.1.2", - "@vitejs/plugin-react": "^4.4.1", - "eslint": "^9.25.0", + "@eslint/js": "^9.29.0", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@vitejs/plugin-react": "^4.5.2", + "eslint": "^9.29.0", "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.19", - "globals": "^16.0.0", - "vite": "^6.3.5" + "eslint-plugin-react-refresh": "^0.4.20", + "globals": "^16.2.0", + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-solid-ts/package.json b/packages/create-vite/template-solid-ts/package.json index 181230742dd475..8d4af789362c4e 100644 --- a/packages/create-vite/template-solid-ts/package.json +++ b/packages/create-vite/template-solid-ts/package.json @@ -9,11 +9,11 @@ "preview": "vite preview" }, "dependencies": { - "solid-js": "^1.9.5" + "solid-js": "^1.9.7" }, "devDependencies": { "typescript": "~5.8.3", - "vite": "^6.3.5", + "vite": "^7.0.0-beta.2", "vite-plugin-solid": "^2.11.6" } } diff --git a/packages/create-vite/template-solid-ts/tsconfig.app.json b/packages/create-vite/template-solid-ts/tsconfig.app.json index 9a0b51fd991df4..5f0a5ca5f49a8e 100644 --- a/packages/create-vite/template-solid-ts/tsconfig.app.json +++ b/packages/create-vite/template-solid-ts/tsconfig.app.json @@ -1,10 +1,10 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2020", + "target": "ES2022", "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2022", "DOM", "DOM.Iterable"], "skipLibCheck": true, /* Bundler mode */ diff --git a/packages/create-vite/template-solid-ts/tsconfig.node.json b/packages/create-vite/template-solid-ts/tsconfig.node.json index 9728af2d81af0e..f85a39906e5571 100644 --- a/packages/create-vite/template-solid-ts/tsconfig.node.json +++ b/packages/create-vite/template-solid-ts/tsconfig.node.json @@ -1,7 +1,7 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2022", + "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, diff --git a/packages/create-vite/template-solid/package.json b/packages/create-vite/template-solid/package.json index 9cc4753674f52a..2cc494ebbffcae 100644 --- a/packages/create-vite/template-solid/package.json +++ b/packages/create-vite/template-solid/package.json @@ -9,10 +9,10 @@ "preview": "vite preview" }, "dependencies": { - "solid-js": "^1.9.5" + "solid-js": "^1.9.7" }, "devDependencies": { - "vite": "^6.3.5", + "vite": "^7.0.0-beta.2", "vite-plugin-solid": "^2.11.6" } } diff --git a/packages/create-vite/template-svelte-ts/package.json b/packages/create-vite/template-svelte-ts/package.json index f6cc246b9757d4..93e427217a42be 100644 --- a/packages/create-vite/template-svelte-ts/package.json +++ b/packages/create-vite/template-svelte-ts/package.json @@ -10,11 +10,11 @@ "check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json" }, "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^5.0.3", + "@sveltejs/vite-plugin-svelte": "^5.1.0", "@tsconfig/svelte": "^5.0.4", - "svelte": "^5.28.1", - "svelte-check": "^4.1.6", + "svelte": "^5.34.7", + "svelte-check": "^4.2.2", "typescript": "~5.8.3", - "vite": "^6.3.5" + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-svelte-ts/tsconfig.app.json b/packages/create-vite/template-svelte-ts/tsconfig.app.json index 55a2f9b6548ebf..d9387fd53478c4 100644 --- a/packages/create-vite/template-svelte-ts/tsconfig.app.json +++ b/packages/create-vite/template-svelte-ts/tsconfig.app.json @@ -1,7 +1,7 @@ { "extends": "@tsconfig/svelte/tsconfig.json", "compilerOptions": { - "target": "ESNext", + "target": "ES2022", "useDefineForClassFields": true, "module": "ESNext", "resolveJsonModule": true, diff --git a/packages/create-vite/template-svelte-ts/tsconfig.node.json b/packages/create-vite/template-svelte-ts/tsconfig.node.json index 9728af2d81af0e..f85a39906e5571 100644 --- a/packages/create-vite/template-svelte-ts/tsconfig.node.json +++ b/packages/create-vite/template-svelte-ts/tsconfig.node.json @@ -1,7 +1,7 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2022", + "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, diff --git a/packages/create-vite/template-svelte/package.json b/packages/create-vite/template-svelte/package.json index 37a6a555ee248e..9e62327bf28555 100644 --- a/packages/create-vite/template-svelte/package.json +++ b/packages/create-vite/template-svelte/package.json @@ -9,8 +9,8 @@ "preview": "vite preview" }, "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^5.0.3", - "svelte": "^5.28.1", - "vite": "^6.3.5" + "@sveltejs/vite-plugin-svelte": "^5.1.0", + "svelte": "^5.34.7", + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-vanilla-ts/package.json b/packages/create-vite/template-vanilla-ts/package.json index e0da7b1a461e41..3e485bb07361ef 100644 --- a/packages/create-vite/template-vanilla-ts/package.json +++ b/packages/create-vite/template-vanilla-ts/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "~5.8.3", - "vite": "^6.3.5" + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-vanilla-ts/tsconfig.json b/packages/create-vite/template-vanilla-ts/tsconfig.json index a22caba90a9290..4f5edc248c888b 100644 --- a/packages/create-vite/template-vanilla-ts/tsconfig.json +++ b/packages/create-vite/template-vanilla-ts/tsconfig.json @@ -1,9 +1,9 @@ { "compilerOptions": { - "target": "ES2020", + "target": "ES2022", "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2022", "DOM", "DOM.Iterable"], "skipLibCheck": true, /* Bundler mode */ diff --git a/packages/create-vite/template-vanilla/package.json b/packages/create-vite/template-vanilla/package.json index 91c895f6b26684..247167532ac717 100644 --- a/packages/create-vite/template-vanilla/package.json +++ b/packages/create-vite/template-vanilla/package.json @@ -9,6 +9,6 @@ "preview": "vite preview" }, "devDependencies": { - "vite": "^6.3.5" + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/template-vue-ts/package.json b/packages/create-vite/template-vue-ts/package.json index e8c08b3c0d23fb..6a11ad851e8b5a 100644 --- a/packages/create-vite/template-vue-ts/package.json +++ b/packages/create-vite/template-vue-ts/package.json @@ -9,13 +9,13 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.5.13" + "vue": "^3.5.17" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.2.3", + "@vitejs/plugin-vue": "^6.0.0-beta.2", "@vue/tsconfig": "^0.7.0", "typescript": "~5.8.3", - "vite": "^6.3.5", - "vue-tsc": "^2.2.8" + "vite": "^7.0.0-beta.2", + "vue-tsc": "^2.2.10" } } diff --git a/packages/create-vite/template-vue-ts/tsconfig.node.json b/packages/create-vite/template-vue-ts/tsconfig.node.json index 9728af2d81af0e..f85a39906e5571 100644 --- a/packages/create-vite/template-vue-ts/tsconfig.node.json +++ b/packages/create-vite/template-vue-ts/tsconfig.node.json @@ -1,7 +1,7 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2022", + "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, diff --git a/packages/create-vite/template-vue/package.json b/packages/create-vite/template-vue/package.json index 20dff6d9e1a4de..6ab56a68a41928 100644 --- a/packages/create-vite/template-vue/package.json +++ b/packages/create-vite/template-vue/package.json @@ -9,10 +9,10 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.5.13" + "vue": "^3.5.17" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.2.3", - "vite": "^6.3.5" + "@vitejs/plugin-vue": "^6.0.0-beta.2", + "vite": "^7.0.0-beta.2" } } diff --git a/packages/create-vite/tsconfig.json b/packages/create-vite/tsconfig.json index 9fc23ebe675e0f..86452407b5377f 100644 --- a/packages/create-vite/tsconfig.json +++ b/packages/create-vite/tsconfig.json @@ -1,15 +1,16 @@ { - "include": ["build.config.ts", "src", "__tests__"], + "include": ["tsdown.config.ts", "src", "__tests__"], "compilerOptions": { "outDir": "dist", - "target": "ES2022", - "module": "ES2020", + "target": "ES2023", + "module": "Preserve", "moduleResolution": "bundler", + "types": [], + "allowImportingTsExtensions": true, "strict": true, "skipLibCheck": true, - "declaration": false, - "sourceMap": false, "noUnusedLocals": true, - "esModuleInterop": true + "esModuleInterop": true, + "noEmit": true } } diff --git a/packages/create-vite/build.config.ts b/packages/create-vite/tsdown.config.ts similarity index 88% rename from packages/create-vite/build.config.ts rename to packages/create-vite/tsdown.config.ts index 567320116ae692..b33b40b4203113 100644 --- a/packages/create-vite/build.config.ts +++ b/packages/create-vite/tsdown.config.ts @@ -1,38 +1,27 @@ import path from 'node:path' import url from 'node:url' -import { defineBuildConfig } from 'unbuild' -import licensePlugin from '../vite/rollupLicensePlugin' +import { defineConfig } from 'tsdown' +import licensePlugin from '../vite/rollupLicensePlugin.ts' const __dirname = path.dirname(url.fileURLToPath(import.meta.url)) -export default defineBuildConfig({ - entries: ['src/index'], - clean: true, - rollup: { - inlineDependencies: true, - esbuild: { - target: 'node18', - minify: true, - }, - }, - hooks: { - 'rollup:options'(_ctx, options) { - options.plugins = [ - options.plugins, - licensePlugin( - path.resolve(__dirname, './LICENSE'), - 'create-vite license', - 'create-vite', - '# License of the files in the directories starting with "template-" in create-vite\n' + - 'The files in the directories starting with "template-" in create-vite and files\n' + - 'generated from those files are licensed under the CC0 1.0 Universal license:\n\n' + - cc0LicenseText + - '\n\n', - ), - ] - }, - }, -}) +export default defineConfig(() => ({ + entry: ['src/index.ts'], + target: 'node20', + minify: true, + plugins: [ + licensePlugin( + path.resolve(__dirname, './LICENSE'), + 'create-vite license', + 'create-vite', + '# License of the files in the directories starting with "template-" in create-vite\n' + + 'The files in the directories starting with "template-" in create-vite and files\n' + + 'generated from those files are licensed under the CC0 1.0 Universal license:\n\n' + + cc0LicenseText + + '\n\n', + ), + ], +})) const cc0LicenseText = ` CC0 1.0 Universal diff --git a/packages/plugin-legacy/CHANGELOG.md b/packages/plugin-legacy/CHANGELOG.md index 1606541415deaa..2cd2187f687460 100644 --- a/packages/plugin-legacy/CHANGELOG.md +++ b/packages/plugin-legacy/CHANGELOG.md @@ -1,3 +1,22 @@ +## 7.0.0-beta.1 (2025-06-17) + +* fix(legacy)!: remove `location.protocol!="file:"` condition for modern android webview (#20179) ([a6d5997](https://github.com/vitejs/vite/commit/a6d599718ee109798e8f552e317f175513d157e7)), closes [#20179](https://github.com/vitejs/vite/issues/20179) +* fix(deps): update all non-major dependencies (#20141) ([89ca65b](https://github.com/vitejs/vite/commit/89ca65ba1d849046dccdea52e9eca980f331be26)), closes [#20141](https://github.com/vitejs/vite/issues/20141) +* fix(deps): update all non-major dependencies (#20181) ([d91d4f7](https://github.com/vitejs/vite/commit/d91d4f7ad55edbcb4a51fc23376cbff89f776d30)), closes [#20181](https://github.com/vitejs/vite/issues/20181) +* chore(deps): update rolldown-related dependencies (#20140) ([0387447](https://github.com/vitejs/vite/commit/03874471e3de14e7d2f474ecb354499e7f5eb418)), closes [#20140](https://github.com/vitejs/vite/issues/20140) +* chore(deps): update rolldown-related dependencies (#20182) ([6172f41](https://github.com/vitejs/vite/commit/6172f410b44cbae8d052997bb1819a6197a4d397)), closes [#20182](https://github.com/vitejs/vite/issues/20182) + + + +## 7.0.0-beta.0 (2025-06-02) + +* chore!: remove node 18 support (#19972) ([00b8a98](https://github.com/vitejs/vite/commit/00b8a98f36376804437e1342265453915ae613de)), closes [#19972](https://github.com/vitejs/vite/issues/19972) +* refactor!: bump required node version to 20.19+, 22.12+ and remove cjs build (#20032) ([2b80243](https://github.com/vitejs/vite/commit/2b80243fada75378e80475028fdcc78f4432bd6f)), closes [#20032](https://github.com/vitejs/vite/issues/20032) +* chore: use tsdown (#20065) ([d488efd](https://github.com/vitejs/vite/commit/d488efda95ff40f63684194d51858f84c3d05379)), closes [#20065](https://github.com/vitejs/vite/issues/20065) +* fix(deps): update all non-major dependencies (#19953) ([ac8e1fb](https://github.com/vitejs/vite/commit/ac8e1fb289a06fc0671dab1f4ef68e508e34360e)), closes [#19953](https://github.com/vitejs/vite/issues/19953) + + + ## 6.1.1 (2025-04-28) * fix(legacy): use unbuild 3.4 for now (#19928) ([96f73d1](https://github.com/vitejs/vite/commit/96f73d16c8501013be57aee1c8a2353a56460281)), closes [#19928](https://github.com/vitejs/vite/issues/19928) diff --git a/packages/plugin-legacy/README.md b/packages/plugin-legacy/README.md index ad90980609a285..8026113f8b8bc3 100644 --- a/packages/plugin-legacy/README.md +++ b/packages/plugin-legacy/README.md @@ -129,6 +129,8 @@ npm add -D terser Set to `false` to only output the legacy bundles that support all target browsers. + This is also useful when running the project locally using `file:` protocol, as loading modern chunks with `type="module"` may trigger CORS restrictions. To avoid this issue, simply set `renderModernChunks` to `false` to exclusively use legacy chunks instead. + ## Browsers that supports ESM but does not support widely-available features The legacy plugin offers a way to use widely-available features natively in the modern build, while falling back to the legacy build in browsers with native ESM but without those features supported (e.g. Legacy Edge). This feature works by injecting a runtime check and loading the legacy bundle with SystemJs runtime if needed. There are the following drawbacks: @@ -179,7 +181,7 @@ The current values are: - `sha256-MS6/3FCg4WjP9gwgaBGwLpRCY6fZBgwmhVCdrPrNf3E=` - `sha256-tQjf8gvb2ROOMapIxFvFAYBeUJ0v1HCbOcSmDNXGtDo=` -- `sha256-VA8O2hAdooB288EpSTrGLl7z3QikbWU9wwoebO/QaYk=` +- `sha256-ZxAi3a7m9Mzbc+Z1LGuCCK5Xee6reDkEPRas66H9KSo=` - `sha256-+5XkZFazzJo8n0iOP4ti/cLCMUudTf//Mzkb7xNPXIc=`