Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(cli): after setting server.open, the default open is inconsistent… #11974

Merged
merged 3 commits into from
Feb 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 23 additions & 18 deletions packages/vite/src/node/server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ import {
handleHMRUpdate,
updateModules,
} from './hmr'
import { openBrowser } from './openBrowser'
import { openBrowser as _openBrowser } from './openBrowser'
import type { TransformOptions, TransformResult } from './transformRequest'
import { transformRequest } from './transformRequest'
import { searchForWorkspaceRoot } from './searchRoot'
Expand Down Expand Up @@ -267,6 +267,11 @@ export interface ViteDevServer {
* @param forceOptimize - force the optimizer to re-bundle, same as --force cli flag
*/
restart(forceOptimize?: boolean): Promise<void>

/**
* Open browser
*/
openBrowser(): void
/**
* @internal
*/
Expand Down Expand Up @@ -396,16 +401,31 @@ export async function createServer(
}
},
async listen(port?: number, isRestart?: boolean) {
await startServer(server, port, isRestart)
await startServer(server, port)
if (httpServer) {
server.resolvedUrls = await resolveServerUrls(
httpServer,
config.server,
config,
)
if (!isRestart && config.server.open) server.openBrowser()
}
return server
},
openBrowser() {
const options = server.config.server
const url = server.resolvedUrls?.local[0]
if (url) {
const path =
typeof options.open === 'string'
? new URL(options.open, url).href
: url

_openBrowser(path, true, server.config.logger)
} else {
server.config.logger.warn('No URL available to open in browser')
}
},
async close() {
if (!middlewareMode) {
process.off('SIGTERM', exitProcess)
Expand Down Expand Up @@ -653,7 +673,6 @@ export async function createServer(
async function startServer(
server: ViteDevServer,
inlinePort?: number,
isRestart: boolean = false,
): Promise<void> {
const httpServer = server.httpServer
if (!httpServer) {
Expand All @@ -664,26 +683,12 @@ async function startServer(
const port = inlinePort ?? options.port ?? DEFAULT_DEV_PORT
const hostname = await resolveHostname(options.host)

const protocol = options.https ? 'https' : 'http'

const serverPort = await httpServerStart(httpServer, {
await httpServerStart(httpServer, {
port,
strictPort: options.strictPort,
host: hostname.host,
logger: server.config.logger,
})

if (options.open && !isRestart) {
const path =
typeof options.open === 'string' ? options.open : server.config.base
openBrowser(
path.startsWith('http')
? path
: new URL(path, `${protocol}://${hostname.name}:${serverPort}`).href,
true,
server.config.logger,
)
}
}

function createServerCloseFn(server: http.Server | null) {
Expand Down
10 changes: 1 addition & 9 deletions packages/vite/src/node/shortcuts.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import colors from 'picocolors'
import type { ViteDevServer } from './server'
import { openBrowser } from './server/openBrowser'
import { isDefined } from './utils'

export type BindShortcutsOptions = {
Expand Down Expand Up @@ -102,14 +101,7 @@ const BASE_SHORTCUTS: CLIShortcut[] = [
key: 'o',
description: 'open in browser',
action(server) {
const url = server.resolvedUrls?.local[0]

if (!url) {
server.config.logger.warn('No URL available to open in browser')
return
}

openBrowser(url, true, server.config.logger)
server.openBrowser()
},
},
{
Expand Down