diff --git a/packages/vite/package.json b/packages/vite/package.json index 58bf8223bd0a26..9606c7ffab68c1 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -96,7 +96,7 @@ "@rollup/pluginutils": "^5.3.0", "@types/escape-html": "^1.0.4", "@types/pnpapi": "^0.0.5", - "@vitejs/devtools": "^0.0.0-alpha.29", + "@vitejs/devtools": "^0.0.0-alpha.31", "artichokie": "^0.4.2", "baseline-browser-mapping": "^2.9.19", "cac": "^6.7.14", @@ -143,7 +143,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.0.0-alpha.24", + "@vitejs/devtools": "^0.0.0-alpha.31", "esbuild": "^0.27.0", "jiti": ">=1.21.0", "less": "^4.0.0", diff --git a/packages/vite/rolldown.config.ts b/packages/vite/rolldown.config.ts index d457be061b3197..a99b66e54a829f 100644 --- a/packages/vite/rolldown.config.ts +++ b/packages/vite/rolldown.config.ts @@ -81,12 +81,12 @@ const nodeConfig = defineConfig({ 'fsevents', /^rolldown\//, /^tsx\//, + /^@vitejs\/devtools\//, /^#/, 'sugarss', // postcss-import -> sugarss 'supports-color', 'utf-8-validate', // ws 'bufferutil', // ws - '@vitejs/devtools/cli-commands', ...Object.keys(pkg.dependencies), ...Object.keys(pkg.peerDependencies), ], diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index a1a71d93618656..d45c6372f7d77b 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -15,7 +15,10 @@ import { type RolldownOptions, rolldown, } from 'rolldown' -import type { StartOptions } from '@vitejs/devtools/cli-commands' +import type { + DevToolsConfig, + ResolvedDevToolsConfig, +} from '@vitejs/devtools/config' import type { Alias, AliasOptions } from '#dep-types/alias' import type { AnymatchFn } from '../types/anymatch' import { withTrailingSlash } from '../shared/utils' @@ -620,15 +623,6 @@ export interface ResolvedWorkerOptions { rolldownOptions: RolldownOptions } -export interface DevToolsConfig extends Partial { - enabled: boolean -} - -export interface ResolvedDevToolsConfig { - config: Omit & { host: string } - enabled: boolean -} - export interface InlineConfig extends UserConfig { configFile?: string | false /** @experimental */ @@ -748,18 +742,32 @@ export interface ResolvedConfig extends Readonly< export async function resolveDevToolsConfig( config: DevToolsConfig | boolean | undefined, host: string | boolean | undefined, + logger: Logger, ): Promise { + const isEnabled = config === true || !!(config && config.enabled) const resolvedHostname = await resolveHostname(host) const fallbackHostname = resolvedHostname.host ?? 'localhost' - - return { - enabled: config === true || !!(config && config.enabled), + const fallbackConfig = { config: { - ...(isObject(config) ? config : {}), - host: isObject(config) - ? (config?.host ?? fallbackHostname) - : fallbackHostname, + host: fallbackHostname, }, + enabled: false, + } + if (!isEnabled) { + return fallbackConfig + } + + try { + const { normalizeDevToolsConfig } = await import('@vitejs/devtools/config') + return normalizeDevToolsConfig(config, fallbackHostname) + } catch (e) { + logger.error( + colors.red( + `Failed to load Vite DevTools config: ${e.message || e.stack}`, + ), + { error: e }, + ) + return fallbackConfig } } @@ -1863,6 +1871,7 @@ export async function resolveConfig( const resolvedDevToolsConfig = await resolveDevToolsConfig( config.devtools, server.host, + logger, ) resolved = { diff --git a/playground/devtools/package.json b/playground/devtools/package.json index d01833a6248262..891ea7cf931b4b 100644 --- a/playground/devtools/package.json +++ b/playground/devtools/package.json @@ -14,6 +14,6 @@ }, "devDependencies": { "vite": "workspace:*", - "@vitejs/devtools": "^0.0.0-alpha.29" + "@vitejs/devtools": "^0.0.0-alpha.31" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d523eca80d2c52..5c8437d699579e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -293,8 +293,8 @@ importers: specifier: ^0.0.5 version: 0.0.5 '@vitejs/devtools': - specifier: ^0.0.0-alpha.29 - version: 0.0.0-alpha.29(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3)) + specifier: ^0.0.0-alpha.31 + version: 0.0.0-alpha.31(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3)) artichokie: specifier: ^0.4.2 version: 0.4.2 @@ -750,8 +750,8 @@ importers: version: 3.5.28(typescript@5.9.3) devDependencies: '@vitejs/devtools': - specifier: ^0.0.0-alpha.29 - version: 0.0.0-alpha.29(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3)) + specifier: ^0.0.0-alpha.31 + version: 0.0.0-alpha.31(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3)) vite: specifier: workspace:* version: link:../../packages/vite @@ -3993,24 +3993,24 @@ packages: resolution: {integrity: sha512-Zfq6FbIcYl9gaAmVu6ROsqUiCNwpEj3Ljz/tMX5fl12Z95OFOxzf7vlO03WE5JBU/ri1tBDFHnW41dihMINOPQ==} engines: {node: '>=14'} - '@vitejs/devtools-kit@0.0.0-alpha.29': - resolution: {integrity: sha512-Juu5pzB2bkcMdFzzegE7A1L60WnPddUth9dGqS/E4S/cnFOdfhssi06jY0gpc6JJFuDKUZ80GhwIy3RgyL/a/A==} + '@vitejs/devtools-kit@0.0.0-alpha.31': + resolution: {integrity: sha512-p+dxqSa7PrEuPNrP+hjfMqCshW0CJw6YIrEsR6NsYZH30IlhLMuusOV3Pq6QO2XKYEB6QyXXxteaB6PMqAsemw==} peerDependencies: vite: workspace:* - '@vitejs/devtools-rolldown@0.0.0-alpha.29': - resolution: {integrity: sha512-PDLu3mWGJMopNMKpnnY+C6DcyvoFq/KL37d6H2pyFKtEBPpYJqWIP3Jrssr3hlPQ+DtBQet1Esb7fOnhxp5nYg==} + '@vitejs/devtools-rolldown@0.0.0-alpha.31': + resolution: {integrity: sha512-RS6hgfZByyc3hxbqKIlbHLxMYlfkJ2VZ2mFAtWlvPZ+r4wMZc9/JJoXiU789UghPRSdbsBWFfE9Mu76qX/E74w==} - '@vitejs/devtools-rpc@0.0.0-alpha.29': - resolution: {integrity: sha512-/Ic/+7YDR0yb2G0nnzUdsO22gCv4s2axwHE2cE5Ei8J2k46f1KvNJSbP5gEuK1ucbmOG68YHhfUGwyBp3tvtPw==} + '@vitejs/devtools-rpc@0.0.0-alpha.31': + resolution: {integrity: sha512-Ij86X8O88RZGshubL51wnKdTtbKhKEr2M8AUgQtFev21UQSMDc9O8VQTRWZkzmmC0mWA2hBZtKAPN5FeC1sI1w==} peerDependencies: ws: '*' peerDependenciesMeta: ws: optional: true - '@vitejs/devtools@0.0.0-alpha.29': - resolution: {integrity: sha512-pSCMFPtciHkwX+hyncvT4igbm8g2+CrgjKkzV/7GFX1EpQiw5DTeicXV0qhob0qsyAloOsG2k8nvf4WuyrXzxQ==} + '@vitejs/devtools@0.0.0-alpha.31': + resolution: {integrity: sha512-Z3N2duHItwmbv6x4rSbGqdsYy12Tk2xnHha9Hj4U7J6PC/jIgTUhq8846vQPnMjRGTJ4hFNCZDU0k8D3ztim0A==} hasBin: true peerDependencies: vite: workspace:* @@ -9948,9 +9948,9 @@ snapshots: '@vercel/detect-agent@1.1.0': {} - '@vitejs/devtools-kit@0.0.0-alpha.29(typescript@5.9.3)(vite@packages+vite)(ws@8.19.0)': + '@vitejs/devtools-kit@0.0.0-alpha.31(typescript@5.9.3)(vite@packages+vite)(ws@8.19.0)': dependencies: - '@vitejs/devtools-rpc': 0.0.0-alpha.29(typescript@5.9.3)(ws@8.19.0) + '@vitejs/devtools-rpc': 0.0.0-alpha.31(typescript@5.9.3)(ws@8.19.0) birpc: 4.0.0 immer: 11.1.3 vite: link:packages/vite @@ -9958,13 +9958,13 @@ snapshots: - typescript - ws - '@vitejs/devtools-rolldown@0.0.0-alpha.29(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3))': + '@vitejs/devtools-rolldown@0.0.0-alpha.31(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3))': dependencies: '@floating-ui/dom': 1.7.5 '@pnpm/read-project-manifest': 1001.2.4 '@rolldown/debug': 1.0.0-rc.3 - '@vitejs/devtools-kit': 0.0.0-alpha.29(typescript@5.9.3)(vite@packages+vite)(ws@8.19.0) - '@vitejs/devtools-rpc': 0.0.0-alpha.29(typescript@5.9.3)(ws@8.19.0) + '@vitejs/devtools-kit': 0.0.0-alpha.31(typescript@5.9.3)(vite@packages+vite)(ws@8.19.0) + '@vitejs/devtools-rpc': 0.0.0-alpha.31(typescript@5.9.3)(ws@8.19.0) ansis: 4.2.0 birpc: 4.0.0 cac: 6.7.14 @@ -10013,7 +10013,7 @@ snapshots: - vite - vue - '@vitejs/devtools-rpc@0.0.0-alpha.29(typescript@5.9.3)(ws@8.19.0)': + '@vitejs/devtools-rpc@0.0.0-alpha.31(typescript@5.9.3)(ws@8.19.0)': dependencies: birpc: 4.0.0 ohash: 2.0.11 @@ -10025,11 +10025,11 @@ snapshots: transitivePeerDependencies: - typescript - '@vitejs/devtools@0.0.0-alpha.29(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3))': + '@vitejs/devtools@0.0.0-alpha.31(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3))': dependencies: - '@vitejs/devtools-kit': 0.0.0-alpha.29(typescript@5.9.3)(vite@packages+vite)(ws@8.19.0) - '@vitejs/devtools-rolldown': 0.0.0-alpha.29(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3)) - '@vitejs/devtools-rpc': 0.0.0-alpha.29(typescript@5.9.3)(ws@8.19.0) + '@vitejs/devtools-kit': 0.0.0-alpha.31(typescript@5.9.3)(vite@packages+vite)(ws@8.19.0) + '@vitejs/devtools-rolldown': 0.0.0-alpha.31(typescript@5.9.3)(vite@packages+vite)(vue@3.5.28(typescript@5.9.3)) + '@vitejs/devtools-rpc': 0.0.0-alpha.31(typescript@5.9.3)(ws@8.19.0) birpc: 4.0.0 cac: 6.7.14 h3: 1.15.5