Skip to content

Commit

Permalink
fix(vite): allow overriding client hmr options (nuxt#6082)
Browse files Browse the repository at this point in the history
Co-authored-by: Pooya Parsa <pooya@pi0.io>
danielroe and pi0 authored Jul 25, 2022
1 parent 210cf30 commit 8298cf2
Showing 2 changed files with 17 additions and 13 deletions.
27 changes: 15 additions & 12 deletions packages/vite/src/client.ts
Original file line number Diff line number Diff line change
@@ -2,11 +2,12 @@ import { join, resolve } from 'pathe'
import * as vite from 'vite'
import vuePlugin from '@vitejs/plugin-vue'
import viteJsxPlugin from '@vitejs/plugin-vue-jsx'
import type { Connect } from 'vite'
import type { Connect, HmrOptions } from 'vite'
import { logger } from '@nuxt/kit'
import { getPort } from 'get-port-please'
import { joinURL, withLeadingSlash, withoutLeadingSlash, withTrailingSlash } from 'ufo'
import escapeRE from 'escape-string-regexp'
import defu from 'defu'
import { cacheDirPlugin } from './plugins/cache-dir'
import { analyzePlugin } from './plugins/analyze'
import { wpfs } from './utils/wpfs'
@@ -16,11 +17,6 @@ import { devStyleSSRPlugin } from './plugins/dev-ssr-css'
import { viteNodePlugin } from './vite-node'

export async function buildClient (ctx: ViteBuildContext) {
const hmrPortDefault = 24678 // Vite's default HMR port
const hmrPort = await getPort({
port: hmrPortDefault,
ports: Array.from({ length: 20 }, (_, i) => hmrPortDefault + 1 + i)
})
const clientConfig: vite.InlineConfig = vite.mergeConfig(ctx.config, {
experimental: {
renderBuiltUrl: (filename, { type, hostType }) => {
@@ -66,12 +62,6 @@ export async function buildClient (ctx: ViteBuildContext) {
],
appType: 'custom',
server: {
hmr: {
// https://github.com/nuxt/framework/issues/4191
protocol: 'ws',
clientPort: hmrPort,
port: hmrPort
},
middlewareMode: true
}
} as ViteOptions)
@@ -82,6 +72,19 @@ export async function buildClient (ctx: ViteBuildContext) {
clientConfig.server.hmr = false
}

if (clientConfig.server.hmr !== false) {
const hmrPortDefault = 24678 // Vite's default HMR port
const hmrPort = await getPort({
port: hmrPortDefault,
ports: Array.from({ length: 20 }, (_, i) => hmrPortDefault + 1 + i)
})
clientConfig.server.hmr = defu(clientConfig.server.hmr as HmrOptions, {
// https://github.com/nuxt/framework/issues/4191
protocol: 'ws',
port: hmrPort
})
}

// Add analyze plugin if needed
if (ctx.nuxt.options.build.analyze) {
clientConfig.plugins.push(...analyzePlugin(ctx))
3 changes: 2 additions & 1 deletion packages/vite/src/server.ts
Original file line number Diff line number Diff line change
@@ -96,7 +96,8 @@ export async function buildServer (ctx: ViteBuildContext) {
},
server: {
// https://github.com/vitest-dev/vitest/issues/229#issuecomment-1002685027
preTransformRequests: false
preTransformRequests: false,
hmr: false
},
plugins: [
cacheDirPlugin(ctx.nuxt.options.rootDir, 'server'),

0 comments on commit 8298cf2

Please sign in to comment.