首页 > 其他分享 >vite开发环境、生产环境配置

vite开发环境、生产环境配置

时间:2024-05-29 18:24:10浏览次数:26  
标签:VITE run 配置 环境 mode env vite

一,前言

一个项目可能会有开发版本、上线版本、测试版本等等多个版本,不同的环境会有不同请求api接口,就需更改一些基本配置,这时候就显得很麻烦,所以这里就使用了环境变量。我们只需做简单的配置,把环境状态切换的工作交给代码。

二,开发环境

也就是编码时运行的环境,即我们使用npm run dev或者npm run serve运行项目到本地时,项目处于的环境。

三、生产环境

项目部署到服务器上后处于的环境,我们使用npm run build将项目打包以后,再运行项目,项目就运行在生产环境中了。对于不同的环境,我们可以配置不同的环境变量,来实现开发和生产的兼容。

四,在多环境下要求前端工程架构流程

 五,配置环境文件

  1. 在项目根目录下(与package.json同级)新建配置文件 .env

    .env:

    全局环境,没有设置其他环境变量时,会加载这个文件里的内容,

    比如所有版本都使用的是同一个接口地址时,就可以写在这一个文件里面就行。

    NODE_ENV = env
    VITE_NAME='全局环境'
    VITE_BASE_URL=''
    VITE_TARGET ='https://baidu.com/' 
  2. 在项目根目录下(与package.json同级)新建配置文件 .env.development

    .env.development:

    开发环境下的配置文件,执行npm run dev命令,会自动加载.env.development文件

    会覆盖.env这个文件里定义的环境变量

    NODE_ENV = development
    VITE_NAME='开发环境'
    VITE_BASE_URL='/api'
    VITE_TARGET ='https://baidu.com/'

     

  3. 在项目根目录下(与package.json同级)新建配置文件 .env.production

    .env.production:

    生产环境下的配置文件,执行npm run build命令,会自动加载.env.production文件

    会覆盖 .env这个文件里定义的环境变量。

    NODE_ENV = production
    VITE_NAME='生产环境'
    VITE_BASE_URL = 'http://xxxxxx/api'
    VITE_TARGET ='https://www.bilibili.com/'

     

 六,在package.json 文件中的配置

dev 默认在本地开启测试环境的服务(mode='development')

start 在本地开启正式环境服务 (mode='production')

build 默认打包到正式环境(基础配置取.env.production 文件中内容)

build:env 默认打包到测试环境(基础配置取.env.development 文件中内容)

"scripts": {
    "dev": "vite --mode development",
    "build": "vite build --mode production", 
    "start": "vite --mode production",
    "build:env": "vite build --mode development"
}

七,具体使用

  • ".env.[name]"是可以自定义的,在package.json里面做对应的名称修改。
  • 根据Vite的约定规则,只有以“VITE_”开头的变量才会在客户端被捕获
  • 捕获方式为:import.meta.env.{参数名},然后重新启动服务
  • 执行 npm run dev 时候,vite自动去读取.env.development文件里面的配置
  • 执行 npm run build 进行打包,vite自动将.env.production 的内容打包进去。
  1. 开发环境
    打印环境变量console.log(import.meta.env),执行npm run dev
    浏览器查看打印结果:打印的是.env.development文件中的内容,import.meta.env这个环境变量是当前环境变量的内容。

  2. 生产环境
    npm run build
    打包后再dist目录选中index.html 右键运行 open with Live Server,同时注意在vite.config.js中配置根路径 base:'/',不然浏览器中会报错

     浏览器中显示的结果为:

     

    但是存在一个问题是:打包后dist目录中index.html直接 live server,运行不ok 。请求数据不成功。因为请求的接口是live server重新起的服务。

    所以我们不能直接使用live server直接运行生产环境。

    想要预览生产环境解决办法:

    在package.json的scripts中,添加"preview":"vite preview --mode production"
    然后再执行npm run build、npm run preview

八,在vite.config.js中根据环境的不同动态切换路径

defineConfig传入一个函数,方法可以接收一个对象,对象中两个参数:command, mode
command :
  server(npm run dev)
  build(npm run build)
mode :development 或 production
defineConfig传入的方法内可以接收一个对象,
这个对象可以获取command和mode这两个属性,
所以一般.env的文件命名是.env.development 和.env.production
因为这样直接将mode传入 loadEnv(mode, process.cwd() ) 就可以了。

loadEnv 接收三个参数:
  mode:模式
  envDir:环境变量配置文件所在目录
  prefix:接受的环境变量前缀,默认为 VITE_
在vite中默认是VITE_,为 '',则加载所有环境变量

所以根据环境变量动态配置信息我们可以写成如下 

export default defineConfig(({command,mode}) => {  
  const config = loadEnv(mode,'./')
  return {
    base: "./",
    server: {
      open: false, //项目启东时是否打开页面
      host: "127.0.0.1",
      port: 3456,
      proxy: {
        "^/api/": {
          target: config.VITE_TARGET, // 从环境变量中获取
          changeOrigin: true /* 允许跨域 */,
          rewrite: (path) => path.replace(/^\/api/, ""),
        },
      },
    },
  };
});

 

 

 借鉴:四,vite开发环境、生产环境配置_vite 环境配置

标签:VITE,run,配置,环境,mode,env,vite
From: https://www.cnblogs.com/angia/p/18220779

相关文章

  • 通过admin配置定时任务
    通过admin配置定时任务安装包pipinstalldjango-celery-beat#使用这个的前提是你已经安装了其他包了pipinstallDjangopipinstallcelerypipinstallredispipinstalleventlet去app中注册INSTALLED_APPS=[ #其他包"django_celery_beat",]屏蔽掉原来......
  • Nginx配置https
            HTTPS相对于HTTP提供了更高级别的数据保护和安全性,尤其适合处理敏感信息如个人数据、支付信息等,而HTTP则更适合对安全性要求不高的普通网页浏览。随着网络安全意识的提升和搜索引擎的推动,HTTPS正逐渐成为网络通信的标准。配置自签证书opensslreq-x509-nod......
  • nginx负载均衡配置详解
    Nginx的负载均衡功能是通过upstream模块来实现的,允许将客户端的请求分发到多个后端服务器,以达到分散负载、提高系统稳定性和响应速度的目的。下面是一些关于Nginx负载均衡配置的详细说明:1.定义UpstreamBlock首先,在Nginx配置文件(通常是/etc/nginx/nginx.conf或者......
  • QGIS开发笔记(三):Windows安装版二次开发环境搭建(下):将QGis融入QtDemo,添加QGis并加载tif遥
    前言  使用QGis的目的是进行二次开发,或者说是融入我们的应用(无人车、无人船、无人机),本片描述搭建QGis二次基础开发环境,由于实在是太长了,进行了分篇:上半部分:主要是安装好后,使用QtCreator可以使用QGIs的apps下的Qt使用对应的编译器编译不带qgis的空工程。下半部分:在上半......
  • vite配置自动引入全局scss变量文件
    全局自动引入scss变量文件当定义了全局的scss变量文件并且而其他很多页面都需要使用的时候,都需要显式的使用@import或者@use引用一遍全局scss文件,很是麻烦。使用以下配置这样能有效避免造成大量重复工作,可以在任何scss文件中任意使用全局变量。定义全局scss变量文件配置vi......
  • linux环境开发过程中遇到的问题以及解决办法 how to
    1.装好开发机后上网检查网口是否开通,网线是否正常一般桌面上多个网口可能只开通一个,需要联系IT联系之前可以先找一个正常的网线连到PC看看是否能够提供网络一般从公司内网连接外网需要连接代理检查proxy的可访问性curl-x<proxy_address>:<proxy_port>http://www.example......
  • linux环境开发过程中遇到的问题 what
    1.file指令输出结果中,二进制文件的stripped是什么意思ChatGPT通常指的是可执行二进制文件是否被剥离(stripped)。剥离是指从可执行文件中删除了符号信息、调试信息和其他不必要的元数据,以减小文件的大小。当一个二进制文件被剥离后,它通常不再包含用于调试和符号分析的信息,因此在......
  • k8s subpath解决加载配置覆盖原目录问题,configmap与secret热更新
    问题:传统上直接挂载会直接覆盖原目录问题还原挂载配置 重启容器挂了 进入容器查看文件不见了,只剩下挂载文件了,目录被覆盖了问题解决subpath:1、当挂载目录存在多个文件,不会覆盖所有文件;2、挂载单个文件而不是整个目录。修改配置subpath热更新问题:1.cm或secret以......
  • COMSOL入门1——基础配置(自存)
    进行基础配置:文件➡首选项1.语言设置2.显卡不太好,图形的渲染改为“软件”,以防闪退、黑屏3.文件➡临时文件夹和恢复文件夹放在D盘重新启动软件......
  • 关于java的环境变量配置
    java概念1.sun,oraclejdk,openJdk2.jdk:javadevkit(java开发工具包)3.jre:jave运行时环境4.jvm:java虚拟机2.为啥要配置环境变量?让操作系统找到jave/bin目录位置,这样在任何目录都可以使用javecjavajavap,能够让依赖java的软件系统也能找到java配置环境变量:在w......