• 工具链 之 Vite 开发服务器所有选项解析(三)


    server 配置

    // vite.config.js  
    import { defineConfig } from 'vite'  
      
    // https://vitejs.dev/config/  
    export default defineConfig({  
      server: {  
        origin: 'http://127.0.0.1:8080', //用于定义开发调试阶段生成资源的 origin
        host: '0.0.0.0', // 监听所有可用的网络接口  
        port: 3000, // 设置端口号,可以根据需要修改  
        strictPort: true, //设为 true 时若端口已被占用则会直接退出,而不是尝试下一个可用端口
        https: {  
          key: fs.readFileSync('./path/to/your/server.key'), // 使用 Node.js 的 fs 模块读取私钥文件  (服务器私钥的路径或内容)
          cert: fs.readFileSync('./path/to/your/server.cert'), // 使用 Node.js 的 fs 模块读取证书文件  (服务器证书的路径或内容)
          ca: fs.readFileSync('./XX/xx.cert'), //附加的 CA 证书的路径或内容数组,用于创建完整的证书链。
          pfx: fs.readFileSync('./XX/xx.cert'),//或 pfxPath:包含私钥、证书和 CA 证书的 PFX 或 PKCS#12 编码的文件路径或内容。
          passphrase:'XXXX'//用于证书的密码短语
        }, 
        open: 'google chrome', // 在开发服务器启动后自动打开 Google Chrome 浏览器
        ----open: true, // 在开发服务器启动后自动打开浏览器
        ----open: false, //默认值:false
        proxy: {  //开发服务器配置自定义代理规则
          // 字符串简写写法:http://localhost:5173/foo -> http://localhost:4567/foo
          '/foo': 'http://localhost:4567',
          // 带选项写法:http://localhost:5173/api/bar --http://jsonplaceholder.typicode.com/bar
          '/api': {
            target: 'http://jsonplaceholder.typicode.com',
            changeOrigin: true,
            rewrite: (path) => path.replace(/^\/api/, ''),
          },
          // 正则表达式写法:http://localhost:5173/fallback/ -> http://jsonplaceholder.typicode.com/
          '^/fallback/.*': {
            target: 'http://jsonplaceholder.typicode.com',
            changeOrigin: true,
            rewrite: (path) => path.replace(/^\/fallback/, ''),
          },
          // 使用 proxy 实例
          '/api': {
            target: 'http://jsonplaceholder.typicode.com',
            changeOrigin: true,
            configure: (proxy, options) => {
              // proxy 是 'http-proxy' 的实例
            }
          },
          // 代理 websockets 或 socket.io 写法:ws://localhost:5173/socket.io -> ws://localhost:5174/socket.io
          '/socket.io': {
            target: 'ws://localhost:5174',
            ws: true,
          },
        },
        cors: {   // 选项用于配置跨域资源共享(CORS)策略
          origin: ['http://localhost:3000', 'https://example.com'], // 允许来自这些源的请求  
          methods: ['GET', 'POST', 'OPTIONS'], // 允许的方法  
          allowedHeaders: ['Content-Type', 'X-Custom-Header'], // 允许的头  
          exposedHeaders: ['Custom-Exposed-Header'], // 暴露给客户端的响应头  
          credentials: true, // 允许携带凭据  
          maxAge: 86400, // 预检请求的有效期为 24 小时  
        }, 
        headers: {   //选项允许你为开发服务器添加自定义的 HTTP 响应头。这对于需要设置特定 HTTP 头的场景非常有用,比如设置安全相关的头(如 Content-Security-Policy)、缓存控制头(如 Cache-Control)或其他自定义头。
          'Content-Security-Policy': "default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.example.com",  
          'Cache-Control': 'no-cache, no-store, must-revalidate',  
          'X-Custom-Header': 'custom value',  
          'X-Another-Header': (url, ctx) => {  
            // 根据请求 URL 或上下文动态设置头值  
            if (url.pathname === '/dynamic-header') {  
              return 'dynamic value';  
            }  
            return 'default value';  
          }  
        }, 
        hmr: {   //配置热模块替换(Hot Module Replacement,简称 HMR)的行为
          // 使用 'wss' 协议(WebSocket Secure)  
          protocol: 'wss',  
          // 指定 HMR 服务器的主机名  
          hostname: 'localhost',  
          // 指定 HMR 服务器的端口号  
          port: 443,  
          // WebSocket 连接的路径  
          path: '/hmr',  
          // 设置超时时间为 5000 毫秒  
          timeout: 5000,  
          // 在出现错误时显示一个覆盖层  
          overlay: true,  
          // 当 HMR 更新失败时强制刷新页面  
          reload: true,  
          // 自定义 HMR 客户端的行为  
          client: {  
            // ...自定义配置  
          }  
        },  
        // warmup选项主要用于配置开发服务器的预热(warmup)行为。预热是 Vite 的一种特性,它会在开发服务器启动后,预先构建一些页面或资源,以便在后续请求时能够更快地响应。这有助于提高开发时的页面加载速度和响应性能。
        warmup: 3,  // 启用预热功能,并指定预热时需要访问的页面数量 
        ----warmup: true,  //Vite 会在开发服务器启动后自动进行预热
        middlewareMode: true, // 启用中间件模式, 默认值:false
      },  
      fs: {
      	  strict: true, //限制为工作区 root 路径以外的文件的访问(自 Vite 2.7 起默认启用)
          // 允许为项目根目录的上一级提供服务
          allow: ['..']
          ----allow: [
            // 搜索工作区的根目录
            searchForWorkspaceRoot(process.cwd()),
            // 自定义规则
            '/path/to/custom/allow_directory',
            '/path/to/custom/allow_file.demo',
          ],
      },
      // 这是默认值,它将把所有路径中含有 node_modules 的文件
      // 添加到忽略列表中。
      sourcemapIgnoreList(sourcePath, sourcemapPath) {
        return sourcePath.includes('node_modules')
      },
    })
    

    server.watch

    Vite 中,server.watch 选项通常不是直接暴露给用户进行配置的,因为它涉及到 Vite 内部对文件系统的监视机制。然而,Vite 确实提供了一些与文件监视相关的配置选项,这些选项通常包含在 resolve、build 或其他配置部分中,而不是直接放在 server 配置下。
    其中包含了一些与文件系统相关的配置

    // vite.config.js  
    import { defineConfig } from 'vite'  
      
    export default defineConfig({  
      // ...其他配置...  
      
      resolve: {  
        alias: {  
          // 配置别名,影响哪些文件被 Vite 监视和构建  
          '/@/': '/src/',  
        },  
      },  
      
      // build 配置通常用于生产构建,但也会影响开发时的监视行为  
      build: {  
        rollupOptions: {  
          input: {  
            // 指定 Rollup 的输入文件,间接影响 Vite 监视的文件  
            main: 'src/main.js',  
            // ...其他入口点...  
          },  
        },  
        // 禁用依赖项预构建以提高启动速度(注意:这可能会降低后续构建的速度)  
        optimizeDeps: {  
          disabled: true,  
        },  
        // 指定构建缓存的目录  
        cacheDir: 'node_modules/.vite',  
      },  
      
      // ...其他配置...  
    })
    
  • 相关阅读:
    分享98个节日庆典PPT,总有一款适合您
    无人机光电识别跟踪算法!
    android 33 升级踩坑 2
    机器人制作开源方案 | 晾衣收纳一体机器人
    Java语言怎样接入代码demo
    ChatGLM 大模型炼丹手册-理论篇
    【LeetCode】No.44. Wildcard Matching -- Java Version
    态、势、感、知矩阵
    WiFi Association&Omnipeek抓包分析
    【游戏引擎Easy2D】 学C++还不会文字旋转?如此炫酷的技巧来这学
  • 原文地址:https://blog.csdn.net/qq_35876316/article/details/139732193