vite环境变量相关

环境变量:根据环境的不同,灵活的自动读取相应的变量。避免了手动修改。

import path from 'path'
import postCssPxToRem from 'postcss-pxtorem'
import { defineConfig, loadEnv } from 'vite'
import createVitePlugins from './vite/plugins'
import copy from 'rollup-plugin-copy'
import { visualizer } from 'rollup-plugin-visualizer'
import { compression } from 'vite-plugin-compression2'

// import viteCompression from 'vite-plugin-compression';
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
    const env = loadEnv(mode, process.cwd())
    const { VITE_APP_ENV } = env

    const devProxy = {
        // 监控视频接口请求地址
        '/dev-api/api/play': {
            target: 'https://61',
            changeOrigin: true,
            rewrite: (p) => p.replace(/^\/dev-api/, '/prod-api'),
        },
        '/dev-api/file': {
            target: 'https://61407',
            changeOrigin: true,
            rewrite: (p) => p.replace(/^\/dev-api/, '/prod-api'),
        },
        "/dev-api": {
            target: "https://667x7",
            changeOrigin: true,
            rewrite: (p) => p.replace(/^\/dev-api/, "/prod-api"),
            // rewrite: (p) => p.replace(/^\/dev-api/, ""),
        },
    }
    const prodProxy = {
        // 监控视频接口请求地址
        '/prod-api/api/play': {
            target: 'https://61407f05p8.oicp.vip',
            changeOrigin: true,
        },
        '/prod-api': {
            target: 'https://61407f05p8.oicp.vip',
            changeOrigin: true,
        },
    }
    // https://cn.vitejs.dev/config/#server-proxy
    const proxy = VITE_APP_ENV === 'production' ? prodProxy : devProxy

    return {
        base: VITE_APP_ENV === 'production' ? '/' : '/',
        plugins: [
            createVitePlugins(env, command === 'build'),
            copy({
                targets: [
                    {
                        src: 'node_modules/@liveqing/liveplayer-v3/dist/component/liveplayer-lib.min.js',
                        dest: 'public/js',
                    },
                ],
            }),
            visualizer(),
            compression(),
        ],
        resolve: {
            alias: {
                // 设置路径
                '~': path.resolve(__dirname, './'),
                // 设置别名
                '@': path.resolve(__dirname, './src'),
            },
            // https://cn.vitejs.dev/config/#resolve-extensions
            extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
        },
        // vite 相关配置
        server: {
            port: 8080,
            host: true,
            open: true,
            proxy,
        },
        css: {
            postcss: {
                plugins: [
                    postCssPxToRem({
                        rootValue: 192, // 1rem的大小
                        propList: ['*'], // 需要转换的属性,这里选择全部都进行转换
                    }),
                ],
            },
        },
        build: {
            rollupOptions: {
                output: {
                    manualChunks: {
                        echarts: ['echarts'],
                        'element-plus': ['element-plus']
                    }
                }
            }
        },
    }
})

import { fileURLToPath, URL } from 'node:url'

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

// https://vitejs.dev/config/
export default defineConfig(({mode}) =>{
  //1传入mode和processcwd之后,loadEnv函数会找.env以及对应模式的.env.XXX文件
  // 2将设置的环境变量整合到一起再返回出去
  //在客户端vite提供了另一种方式进行获取环境变量
  const env =  loadEnv(mode,process.cwd())
   const { VITE_APP_ENV } = env
  //  console.log("process",VITE_APP_ENV,process.env);
   console.log("env",env);
   //打印结果如下
    // env {
  //   VITE_APP_ENV: 'development', 
  //   VITE_BASE_URL: 'devlop',     
  //   VITE_BASE_XJ: 'xiejun',      
  //   VITE_APP_TITLE: 'AI管理系统',
  //   VITE_APP_BASE_API: '/dev-api'
  // }
  return {
    
      plugins: [vue()],
      resolve: {
        alias: {
          '@': fileURLToPath(new URL('./src', import.meta.url))
        }
      },
    
    
      server: {
       
        host: true, // host设置为true才可以使用network的形式,以ip访问项目
        port: 8083, // 端口号
        open: false, // 自动打开浏览器
        cors: true, // 跨域设置允许
        strictPort: true, // 如果端口已占用直接退出
        proxy: {
          '/api': {
            target: 'http://192.168.2.94:8088/',
             ws: true,
              changeOrigin: true,// 允许跨域
            rewrite: (path) => path.replace(/^\/api/, "")
          }
        }
      },
    
  }
})

上图是在配置中获取环境变量,那么在客户端如何获取环境变量呢?vite也给出了一种方法:
import.meta.env:它会根据开发者敲的命令的不同(npm run dev/build/test)灵活的获取相对应的环境变量
例如:
const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  baseURL: import.meta.env.VITE_APP_BASE_API,
  // 超时
  timeout: 20000
})

vite环境变量相关_第1张图片

你可能感兴趣的:(vite,前端)