欢迎光临殡葬网
详情描述

方法一:使用 Vite 配置(推荐)

vite.config.jsvite.config.ts 中添加 server 配置:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  server: {
    open: true, // 自动打开浏览器
    host: 'localhost', // 可选的,设置主机
    port: 3000, // 可选的,设置端口
    // 可选:配置是否自动打开特定页面
    // open: '/index.html'
  }
})

方法二:使用 package.json 脚本

package.json 中配置启动命令:

{
  "scripts": {
    "dev": "vite --open",
    "build": "vite build",
    "preview": "vite preview"
  }
}

或者使用更具体的命令:

{
  "scripts": {
    "dev": "vite --open --host localhost --port 3000",
    "dev:custom": "vite --open http://localhost:3000",
    "build": "vite build",
    "preview": "vite preview --open"
  }
}

方法三:使用环境变量

.env.env.local 文件中设置:

VITE_OPEN_BROWSER=true

然后在 vite.config.js 中读取:

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig(({ mode }) => {
  const env = loadEnv(mode, process.cwd(), '')

  return {
    plugins: [vue()],
    server: {
      open: env.VITE_OPEN_BROWSER === 'true',
      host: 'localhost',
      port: 3000
    }
  }
})

方法四:自定义浏览器打开(高级配置)

如果需要指定浏览器或打开特定 URL:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  server: {
    open: {
      target: 'http://localhost:3000',
      app: {
        name: 'chrome', // 指定浏览器
        arguments: ['--incognito'] // 浏览器参数
      }
    },
    host: 'localhost',
    port: 3000
  }
})

方法五:使用跨平台解决方案

如果你需要兼容不同操作系统:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  server: {
    open: process.platform === 'darwin' ? 'google chrome' : 'chrome',
    host: 'localhost',
    port: 3000
  }
})

方法六:创建自定义插件

如果需要更复杂的逻辑,可以创建自定义插件:

// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

const autoOpenBrowser = () => {
  return {
    name: 'auto-open-browser',
    configureServer(server) {
      server.httpServer?.once('listening', () => {
        const { port } = server.config.server
        const url = `http://localhost:${port}`

        // 使用子进程打开浏览器
        const { exec } = require('child_process')
        const openCommand = process.platform === 'win32' 
          ? 'start'
          : process.platform === 'darwin'
          ? 'open'
          : 'xdg-open'

        exec(`${openCommand} ${url}`)
      })
    }
  }
}

export default defineConfig({
  plugins: [vue(), autoOpenBrowser()],
  server: {
    host: 'localhost',
    port: 3000
  }
})

完整示例配置

这里是一个完整的 vite.config.js 示例:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  server: {
    // 自动打开浏览器
    open: true,

    // 主机名
    host: 'localhost',

    // 端口号
    port: 3000,

    // 是否允许跨域
    cors: true,

    // 代理配置(如果需要)
    proxy: {
      '/api': {
        target: 'http://jsonplaceholder.typicode.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    },

    // 热更新
    hmr: {
      overlay: true
    }
  },
  // 构建配置
  build: {
    outDir: 'dist',
    sourcemap: false,
    minify: 'terser'
  }
})

常见问题解决

端口被占用

server: {
open: true,
port: 3000,
strictPort: true // 如果端口被占用,会提示错误而不是自动换端口
}

多个项目同时运行

server: {
open: true,
port: 3000,
host: '127.0.0.1' // 使用特定 IP
}

在 Docker 或容器中运行

server: {
open: false, // 容器中通常不需要自动打开
host: '0.0.0.0', // 允许外部访问
port: 3000
}

最简单的方法是使用方法一,在 vite.config.js 中添加 server.open: true 配置即可。

相关帖子
动态二维码每次扫码都要联网访问服务器,那它在离线或信号差的环境里还有什么可用性?
动态二维码每次扫码都要联网访问服务器,那它在离线或信号差的环境里还有什么可用性?
乳头皲裂、堵奶太痛苦,母乳喂养坚持不下去该怎么办?
乳头皲裂、堵奶太痛苦,母乳喂养坚持不下去该怎么办?
2026年学校在规划课后服务时,是如何考虑不同年龄段学生的身心发展需求的?
2026年学校在规划课后服务时,是如何考虑不同年龄段学生的身心发展需求的?
东营市殡葬礼仪服务|白事服务办理,丧葬灵棚布置
东营市殡葬礼仪服务|白事服务办理,丧葬灵棚布置
大数据时代,如何理解个人信息被“匿名化”使用?
大数据时代,如何理解个人信息被“匿名化”使用?
在食用当季蔬果时,有哪些有效的家庭处理方法可以减少农残疑虑?
在食用当季蔬果时,有哪些有效的家庭处理方法可以减少农残疑虑?
因手机信号或系统问题导致无法按时核销,会被误判为爽约吗?
因手机信号或系统问题导致无法按时核销,会被误判为爽约吗?
2026年中考综合素质评价越来越重要,小学阶段该怎么帮孩子攒素材?
2026年中考综合素质评价越来越重要,小学阶段该怎么帮孩子攒素材?
当有意外收入时,将其转为储蓄而非消费的心理技巧有哪些?
当有意外收入时,将其转为储蓄而非消费的心理技巧有哪些?
对于刚参加工作不久的年轻人,租房提取住房公积金有哪些便利条件与渠道?
对于刚参加工作不久的年轻人,租房提取住房公积金有哪些便利条件与渠道?
近年有哪些新兴的行业或赛道获得了更多的创业政策倾斜?
近年有哪些新兴的行业或赛道获得了更多的创业政策倾斜?
过桥垫资费用如何核算?结合计费规则看懂单日收费与总成本计算
过桥垫资费用如何核算?结合计费规则看懂单日收费与总成本计算
房产抵押贷款相关法规解读,学法懂法保障抵押借贷行为合法合规
房产抵押贷款相关法规解读,学法懂法保障抵押借贷行为合法合规
台风来临前窗外突然变得安静,真的是风暴已经过去了吗?
台风来临前窗外突然变得安静,真的是风暴已经过去了吗?
押车贷款办理流程详解,签订借据时借款用途怎么填写?
押车贷款办理流程详解,签订借据时借款用途怎么填写?
大暑三候
大暑三候"腐草为萤、土润溽暑、大雨时行"该怎么理解?
解读相关法律法规对“最终解释权归本店所有”这类单方声明的具体规定
解读相关法律法规对“最终解释权归本店所有”这类单方声明的具体规定
2026年有没有更智能的个人收款码账单管理与分析工具?
2026年有没有更智能的个人收款码账单管理与分析工具?
房产证红本抵押贷款办理流程全解析,从申请到放款只需七步
房产证红本抵押贷款办理流程全解析,从申请到放款只需七步
头伏饺子二伏面三伏烙饼摊鸡蛋,这套吃法背后是哪里的民俗习惯?
头伏饺子二伏面三伏烙饼摊鸡蛋,这套吃法背后是哪里的民俗习惯?