From 313040a3bdcdbd569fdbae759eb0c4366b3c6e8f Mon Sep 17 00:00:00 2001 From: Christopher Quadflieg Date: Wed, 5 May 2021 09:04:45 +0200 Subject: [PATCH 1/3] refactor: simplify code --- packages/vite/src/node/preview.ts | 29 +++++++++++--------------- packages/vite/src/node/server/index.ts | 29 +++++++++++--------------- 2 files changed, 24 insertions(+), 34 deletions(-) diff --git a/packages/vite/src/node/preview.ts b/packages/vite/src/node/preview.ts index 2574ca8211eace..b409c4e41c5bfa 100644 --- a/packages/vite/src/node/preview.ts +++ b/packages/vite/src/node/preview.ts @@ -65,23 +65,18 @@ export async function preview( logger.info(` > Local: ${chalk.cyan(url)}`) logger.info(` > Network: ${chalk.dim('use `--host` to expose')}`) } else { - const interfaces = os.networkInterfaces() - Object.keys(interfaces).forEach((key) => - (interfaces[key] || []) - .filter((details) => details.family === 'IPv4') - .map((detail) => { - return { - type: detail.address.includes('127.0.0.1') - ? 'Local: ' - : 'Network: ', - host: detail.address - } - }) - .forEach(({ type, host }) => { - const url = `${protocol}://${host}:${chalk.bold(port)}${base}` - logger.info(` > ${type} ${chalk.cyan(url)}`) - }) - ) + Object.values(os.networkInterfaces()) + .flatMap((nInterface) => nInterface ?? []) + .filter((detail) => detail.family === 'IPv4') + .map((detail) => { + const type = detail.address.includes('127.0.0.1') + ? 'Local: ' + : 'Network: ' + const host = detail.address + const url = `${protocol}://${host}:${chalk.bold(port)}${base}` + return ` > ${type} ${chalk.cyan(url)}` + }) + .forEach((msg) => logger.info(msg)) } if (options.open) { diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index f74f93f9357d8e..1e50d5c1535beb 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -581,23 +581,18 @@ async function startServer( info(` > Local: ${chalk.cyan(url)}`) info(` > Network: ${chalk.dim('use `--host` to expose')}`) } else { - const interfaces = os.networkInterfaces() - Object.keys(interfaces).forEach((key) => - (interfaces[key] || []) - .filter((details) => details.family === 'IPv4') - .map((detail) => { - return { - type: detail.address.includes('127.0.0.1') - ? 'Local: ' - : 'Network: ', - host: detail.address - } - }) - .forEach(({ type, host }) => { - const url = `${protocol}://${host}:${chalk.bold(port)}${base}` - info(` > ${type} ${chalk.cyan(url)}`) - }) - ) + Object.values(os.networkInterfaces()) + .flatMap((nInterface) => nInterface ?? []) + .filter((detail) => detail.family === 'IPv4') + .map((detail) => { + const type = detail.address.includes('127.0.0.1') + ? 'Local: ' + : 'Network: ' + const host = detail.address + const url = `${protocol}://${host}:${chalk.bold(port)}${base}` + return ` > ${type} ${chalk.cyan(url)}` + }) + .forEach((msg) => info(msg)) } // @ts-ignore From c70d368b40be1a10c550f8ebd61e2a145b62b548 Mon Sep 17 00:00:00 2001 From: Shinigami92 Date: Wed, 5 May 2021 17:25:19 +0200 Subject: [PATCH 2/3] refactor: extract to function --- packages/vite/src/node/preview.ts | 22 +++----------------- packages/vite/src/node/server/index.ts | 22 ++------------------ packages/vite/src/node/utils.ts | 28 ++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 39 deletions(-) diff --git a/packages/vite/src/node/preview.ts b/packages/vite/src/node/preview.ts index b409c4e41c5bfa..3af7f552ffb09b 100644 --- a/packages/vite/src/node/preview.ts +++ b/packages/vite/src/node/preview.ts @@ -1,4 +1,3 @@ -import os from 'os' import path from 'path' import sirv from 'sirv' import chalk from 'chalk' @@ -10,6 +9,7 @@ import { resolveHttpServer } from './server/http' import { openBrowser } from './server/openBrowser' import corsMiddleware from 'cors' import { proxyMiddleware } from './server/middlewares/proxy' +import { logHostInfo } from './utils' export async function preview( config: ResolvedConfig, @@ -60,24 +60,8 @@ export async function preview( chalk.cyan(`\n vite v${require('vite/package.json').version}`) + chalk.green(` build preview server running at:\n`) ) - if (hostname === '127.0.0.1') { - const url = `${protocol}://localhost:${chalk.bold(port)}${base}` - logger.info(` > Local: ${chalk.cyan(url)}`) - logger.info(` > Network: ${chalk.dim('use `--host` to expose')}`) - } else { - Object.values(os.networkInterfaces()) - .flatMap((nInterface) => nInterface ?? []) - .filter((detail) => detail.family === 'IPv4') - .map((detail) => { - const type = detail.address.includes('127.0.0.1') - ? 'Local: ' - : 'Network: ' - const host = detail.address - const url = `${protocol}://${host}:${chalk.bold(port)}${base}` - return ` > ${type} ${chalk.cyan(url)}` - }) - .forEach((msg) => logger.info(msg)) - } + + logHostInfo(hostname, protocol, port, base, logger.info) if (options.open) { const path = typeof options.open === 'string' ? options.open : base diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 1e50d5c1535beb..a3561d052464d7 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -1,4 +1,3 @@ -import os from 'os' import fs from 'fs' import path from 'path' import * as net from 'net' @@ -34,7 +33,7 @@ import { import { timeMiddleware } from './middlewares/time' import { ModuleGraph, ModuleNode } from './moduleGraph' import { Connect } from 'types/connect' -import { createDebugger, normalizePath } from '../utils' +import { createDebugger, logHostInfo, normalizePath } from '../utils' import { errorMiddleware, prepareError } from './middlewares/error' import { handleHMRUpdate, HmrOptions, handleFileAddUnlink } from './hmr' import { openBrowser } from './openBrowser' @@ -576,24 +575,7 @@ async function startServer( } ) - if (hostname === '127.0.0.1') { - const url = `${protocol}://localhost:${chalk.bold(port)}${base}` - info(` > Local: ${chalk.cyan(url)}`) - info(` > Network: ${chalk.dim('use `--host` to expose')}`) - } else { - Object.values(os.networkInterfaces()) - .flatMap((nInterface) => nInterface ?? []) - .filter((detail) => detail.family === 'IPv4') - .map((detail) => { - const type = detail.address.includes('127.0.0.1') - ? 'Local: ' - : 'Network: ' - const host = detail.address - const url = `${protocol}://${host}:${chalk.bold(port)}${base}` - return ` > ${type} ${chalk.cyan(url)}` - }) - .forEach((msg) => info(msg)) - } + logHostInfo(hostname, protocol, port, base, info) // @ts-ignore if (global.__vite_start_time) { diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index eb765a9e42cbb6..b557ccf46d984f 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -13,6 +13,7 @@ import { DecodedSourceMap, RawSourceMap } from '@ampproject/remapping/dist/types/types' +import { Logger } from './logger' export function slash(p: string): string { return p.replace(/\\/g, '/') @@ -464,3 +465,30 @@ export function combineSourcemaps( export function unique(arr: T[]): T[] { return Array.from(new Set(arr)) } + +export function logHostInfo( + hostname: string | undefined, + protocol: string, + port: number, + base: string, + info: Logger['info'] +): void { + if (hostname === '127.0.0.1') { + const url = `${protocol}://localhost:${chalk.bold(port)}${base}` + info(` > Local: ${chalk.cyan(url)}`) + info(` > Network: ${chalk.dim('use `--host` to expose')}`) + } else { + Object.values(os.networkInterfaces()) + .flatMap((nInterface) => nInterface ?? []) + .filter((detail) => detail.family === 'IPv4') + .map((detail) => { + const type = detail.address.includes('127.0.0.1') + ? 'Local: ' + : 'Network: ' + const host = detail.address + const url = `${protocol}://${host}:${chalk.bold(port)}${base}` + return ` > ${type} ${chalk.cyan(url)}` + }) + .forEach((msg) => info(msg)) + } +} From df2359c54ec0d226fb14732bf3f9badaa9386a77 Mon Sep 17 00:00:00 2001 From: Shinigami92 Date: Wed, 5 May 2021 19:34:35 +0200 Subject: [PATCH 3/3] refactor: apply suggestions Co-authored-by: antfu --- packages/vite/src/node/logger.ts | 28 ++++++++++++++++++++++++++ packages/vite/src/node/preview.ts | 4 ++-- packages/vite/src/node/server/index.ts | 5 +++-- packages/vite/src/node/utils.ts | 28 -------------------------- 4 files changed, 33 insertions(+), 32 deletions(-) diff --git a/packages/vite/src/node/logger.ts b/packages/vite/src/node/logger.ts index 0b9c5841199efb..8724195aab7eb9 100644 --- a/packages/vite/src/node/logger.ts +++ b/packages/vite/src/node/logger.ts @@ -2,6 +2,7 @@ import chalk from 'chalk' import readline from 'readline' +import os from 'os' export type LogType = 'error' | 'warn' | 'info' export type LogLevel = LogType | 'silent' @@ -108,3 +109,30 @@ export function createLogger( return logger } + +export function printServerUrls( + hostname: string | undefined, + protocol: string, + port: number, + base: string, + info: Logger['info'] +): void { + if (hostname === '127.0.0.1') { + const url = `${protocol}://localhost:${chalk.bold(port)}${base}` + info(` > Local: ${chalk.cyan(url)}`) + info(` > Network: ${chalk.dim('use `--host` to expose')}`) + } else { + Object.values(os.networkInterfaces()) + .flatMap((nInterface) => nInterface ?? []) + .filter((detail) => detail.family === 'IPv4') + .map((detail) => { + const type = detail.address.includes('127.0.0.1') + ? 'Local: ' + : 'Network: ' + const host = detail.address + const url = `${protocol}://${host}:${chalk.bold(port)}${base}` + return ` > ${type} ${chalk.cyan(url)}` + }) + .forEach((msg) => info(msg)) + } +} diff --git a/packages/vite/src/node/preview.ts b/packages/vite/src/node/preview.ts index 3af7f552ffb09b..9663084fd78bb4 100644 --- a/packages/vite/src/node/preview.ts +++ b/packages/vite/src/node/preview.ts @@ -9,7 +9,7 @@ import { resolveHttpServer } from './server/http' import { openBrowser } from './server/openBrowser' import corsMiddleware from 'cors' import { proxyMiddleware } from './server/middlewares/proxy' -import { logHostInfo } from './utils' +import { printServerUrls } from './logger' export async function preview( config: ResolvedConfig, @@ -61,7 +61,7 @@ export async function preview( chalk.green(` build preview server running at:\n`) ) - logHostInfo(hostname, protocol, port, base, logger.info) + printServerUrls(hostname, protocol, port, base, logger.info) if (options.open) { const path = typeof options.open === 'string' ? options.open : base diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index a3561d052464d7..76abfd41b94eb1 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -33,7 +33,7 @@ import { import { timeMiddleware } from './middlewares/time' import { ModuleGraph, ModuleNode } from './moduleGraph' import { Connect } from 'types/connect' -import { createDebugger, logHostInfo, normalizePath } from '../utils' +import { createDebugger, normalizePath } from '../utils' import { errorMiddleware, prepareError } from './middlewares/error' import { handleHMRUpdate, HmrOptions, handleFileAddUnlink } from './hmr' import { openBrowser } from './openBrowser' @@ -50,6 +50,7 @@ import { ssrLoadModule } from '../ssr/ssrModuleLoader' import { resolveSSRExternal } from '../ssr/ssrExternal' import { ssrRewriteStacktrace } from '../ssr/ssrStacktrace' import { createMissingImporterRegisterFn } from '../optimizer/registerMissing' +import { printServerUrls } from '../logger' export interface ServerOptions { host?: string | boolean @@ -575,7 +576,7 @@ async function startServer( } ) - logHostInfo(hostname, protocol, port, base, info) + printServerUrls(hostname, protocol, port, base, info) // @ts-ignore if (global.__vite_start_time) { diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index b557ccf46d984f..eb765a9e42cbb6 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -13,7 +13,6 @@ import { DecodedSourceMap, RawSourceMap } from '@ampproject/remapping/dist/types/types' -import { Logger } from './logger' export function slash(p: string): string { return p.replace(/\\/g, '/') @@ -465,30 +464,3 @@ export function combineSourcemaps( export function unique(arr: T[]): T[] { return Array.from(new Set(arr)) } - -export function logHostInfo( - hostname: string | undefined, - protocol: string, - port: number, - base: string, - info: Logger['info'] -): void { - if (hostname === '127.0.0.1') { - const url = `${protocol}://localhost:${chalk.bold(port)}${base}` - info(` > Local: ${chalk.cyan(url)}`) - info(` > Network: ${chalk.dim('use `--host` to expose')}`) - } else { - Object.values(os.networkInterfaces()) - .flatMap((nInterface) => nInterface ?? []) - .filter((detail) => detail.family === 'IPv4') - .map((detail) => { - const type = detail.address.includes('127.0.0.1') - ? 'Local: ' - : 'Network: ' - const host = detail.address - const url = `${protocol}://${host}:${chalk.bold(port)}${base}` - return ` > ${type} ${chalk.cyan(url)}` - }) - .forEach((msg) => info(msg)) - } -}