vite环境变量相关

news2024/11/15 17:17:27

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

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
})

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1212034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识VBA代码及应用VBA代码第四节:如何录制宏

《VBA之Excel应用》(10178983)是非常经典的,是我推出的第七套教程,定位于初级,目前是第一版修订。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非…

早安心语早读:熬出来的人生,有你预见不了的美好

1、熬出来的岁月,有你想象不到的精彩;熬出来的人生,有你预见不了的美好!来这个世界一次,谁没有办法活第二次,一次的生命,一定要无悔才行!那就让我们,拼一个岁月静好&…

C++ Qt 学习(八):Qt 绘图技术与图形视图

1. 常见 18 种 Qt 绘图技术 1.1 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <memory> #include <QTreeView> #include "CPaintWidget.h"using namespace std;class Widget : public QWidget {Q_OBJECTpublic:Widget…

Oneid方案

一、前文 用户画像的前提是标识出用户&#xff0c;存在以下场景&#xff1a;不同业务系统对同一个人的标识&#xff0c;匿名用户行为的行为归因&#xff1b;本文提供多种解决方案&#xff0c;提供大家思考。 二、方案矩阵 三、其他 相关连接&#xff1a; 如何通过图算法能力获…

【经验记录】Ubuntu系统安装xxxxx.tar.gz报错ImportError: No module named setuptools

最近在Anaconda环境下需要离线状态&#xff08;不能联网的情况&#xff09;下安装一个xxxxx.tar.gz格式的包&#xff0c;将对应格式的包解压后&#xff0c;按照如下命令进行安装 sudo python setup.py build # 编译 sudo python setup.py install # 安装总是报错如下信息&am…

金蝶云星空单据体启用块粘贴

文章目录 金蝶云星空单据体启用块粘贴 金蝶云星空单据体启用块粘贴

浅谈JavaScript闭包,小白的JS学习之路!

前言 在JavaScript中&#xff0c;闭包是一种强大而灵活的特性&#xff0c;它不仅允许变量私有化&#xff0c;而且提供了一种在函数执行完毕后仍然保持对外部作用域变量引用的机制。本文将深入讨论JavaScript闭包的概念、优点、缺点以及如何避免潜在的内存泄漏问题。 调用栈与…

【Ubuntu·系统·的Linux环境变量配置方法最全】

文章目录 概要读取环境变量的方法小技巧 概要 在Linux环境中&#xff0c;配置环境变量是一种常见的操作&#xff0c;用于指定系统或用户环境中可执行程序的搜索路径。 读取环境变量的方法 在Linux中&#xff0c;可以使用以下两个命令来读取环境变量&#xff1a; export 命令…

Kubernetes(k8s)资源管理

文章目录 Kubernetes资源管理1.资源管理介绍2.YAML语言介绍3.资源管理方式命令式对象管理命令式对象配置声明式对象配置 扩展&#xff1a;配置kubectl命令可以在node节点上运行 Kubernetes资源管理 1.资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xf…

MongoDB(一):CentOS7离线安装MongoDB单机版与简单使用

CentOS7离线安装MongoDB单机版与简单使用 1、概述2、安装社区版2.1、前置条件2.2、下载.tgz文件2.3、解压文件2.4、安装MongoDB Shell 3、运行MongoDB服务端3.1、关于ulimit3.2、目录设置3.3、创建mongod.conf3.4、运行MongoDB3.5、检查MongoDB是否已运行 4、使用MongoDB4.1、操…

Clear recent project list 清理Idea的最近项目列表

Clear recent project list 清理Idea的最近项目列表 Idea打开过好多项目清理方式mac文件地址Windows文件地址linux 文件地址 Idea打开过好多项目 很多项目都已经从磁盘删除了&#xff0c;但是还在最近的项目中能看到&#xff0c;偶尔点击到&#xff0c;会提示已经不存在。很头…

webstorm基础配置

设置左侧菜单栏文字大小 开启鼠标滚轮控制文字大小 配置自定义注释 设置左侧菜单栏文字大小&#xff1a;file》settings》Appearance&Behavior》Appearance 开启鼠标滚轮控制主界面文字大小&#xff1a;file》settings》Editor》General 配置自定义注释&#xff1a;fi…

【文件包含】phpmyadmin 文件包含(CVE-2014-8959)

1.1漏洞描述 漏洞编号CVE-2014-8959漏洞类型文件包含漏洞等级高危漏洞环境Windows漏洞名称phpmyadmin 文件包含&#xff08;CVE-2014-8959&#xff09; 描述: phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑&#xff0c;通过二次编…

一键将CSDN博客文章如何转为Markdown

文章目录 1.在CSDN博文页面点击右键&#xff0c;选择“检查”&#xff08;Google浏览器为例&#xff09;。2.在查看器中搜索article_content&#xff0c;找到对应内容&#xff0c;点击…复制为outerHTML。3.打开网址https://tool.lu/markdown/&#xff0c;点击HTML2MD&#xff…

【数据结构】希尔排序(最小增量排序)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;数据结构 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有帮助…

【C++面向对象】11. 数据抽象*

文章目录 【 1. 访问标签强制抽象 】【 2. 设计策略 】 数据抽象 是指只向外界提供关键信息&#xff0c;并隐藏其后台的实现细节&#xff0c;即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程&#xff08;设计&#xff09;技术。数据抽象的好处&…

【面试经典150 | 位运算】数字范围按位与

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;公共前缀方法二&#xff1a;n & (n-1) 写在最后 Tag 【位运算】 题目来源 201. 数字范围按位与 题目解读 计算给定区间内所有整数的按位与的结果。 解题思路 本题朴素的方法是直接将区间内的所有整数按位与&…

FindMy技术定位身份证

身份证是我们日常生活中不可缺少的重要证件。无论是购买房产、车辆&#xff0c;还是乘坐飞机、火车、汽车等交通工具&#xff0c;甚至是办理银行业务等&#xff0c;都需要提供身份证原件。因此&#xff0c;身份证对于我们来说&#xff0c;其重要性不言而喻&#xff0c;一旦丢失…

Python如何使用Pyecharts+TextRank生成词云图?

Python如何使用PyechartsTextRank生成词云图&#xff1f; 1 应用场景2 关于Pyecharts2.1 Pyecharts简介2.2 Pyecharts安装2.3 Pyecharts支持的图形2.4 Pyecharts的一个示例 3 关于TextRank3.1 TextRank简介3.2 TextRank安装 4 词云图的生成过程4.1 导入需要的包4.2 目标文件4.3…

2023.11.16 hivesql之条件函数,case when then

目录 一.Conditional Functions条件函数 二.空值相关函数 三&#xff1a;使用注意事项 3.1 then后面不能接子查询 3.2 then后面只能是结果值 3.3 then后面能不能接两列 四.用于建表新增字段使用场景 一.Conditional Functions条件函数 -- 演示条件函数 -- if(条件判断,t…