个人建站前端篇(三)环境变量配置

  1. 在项目根目录下新建.env.development和.env.production文件,里面配置环境变量

.env.development内容如下

复制代码
# 页面标题
VITE_APP_TITLE = 云风网
# 开发环境配置
VITE_APP_ENV = development
# 开发环境
VITE_APP_BASE_API = /api
# 是否启用代理
VITE_HTTP_PROXY = true
# 端口
VITE_PORT = 80
#本地环境接口地址
VITE_SERVE = ''

.env.production内容如下

复制代码
# 页面标题
VITE_APP_TITLE = 云风网
# 生产环境配置
VITE_APP_ENV = production
# 小麒物联/开发环境
VITE_APP_BASE_API = /api
# 是否启用代理
VITE_HTTP_PROXY = false
# 端口
VITE_PORT = 80
#本地环境接口地址
VITE_SERVE = ''
# 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip
  1. 在vite.config.ts中引入环境变量
ts 复制代码
import { defineConfig,loadEnv } from 'vite'
import createVitePlugins from './vite/plugins'
import path from 'path'

export default defineConfig(({ mode, command }) => {
  const env = loadEnv(mode, process.cwd())
  const { VITE_APP_ENV,VITE_APP_BASE_API,VITE_SERVE,VITE_PORT } = env
  console.log(VITE_APP_ENV,VITE_APP_BASE_API,VITE_SERVE,VITE_PORT)
  return {
    base: VITE_APP_ENV === 'production' ? '/' : '/',
    plugins: [createVitePlugins(env, command === 'build')],
    resolve: {
      alias: {
        // 设置路径
        '~': path.resolve(__dirname, './'),
        // 设置别名
        '@': path.resolve(__dirname, './src')
      },
      extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
    },
    //代理
    server: {
      host: '0.0.0.0',
      port: VITE_PORT || 80,
      https: false,
      open: true,
      proxy: {
        [VITE_APP_BASE_API]: {
          target: VITE_SERVE,
          changeOrigin: true,
          rewrite: path => path.replace(RegExp(`^${VITE_APP_BASE_API}`), '')
        }
      },
      disableHostCheck: true
    },
    css: {
      postcss: {
        plugins: [
          {
            postcssPlugin: 'internal:charset-removal',
            AtRule: {
              charset: (atRule) => {
                if (atRule.name === 'charset') {
                  atRule.remove();
                }
              }
            }
          }
        ]
      }
    },
    build:{
      rollupOptions:{
        output:{
          chunkFileNames: 'static/js/[name]-[hash].js',
          entryFileNames: 'static/js/[name]-[hash].js',
          assetFileNames:'static/[ext]/[name]-[hash][extname]',
          //manualChunks 两种使用形式
          // manualChunks:{
          //   elementPlus:['element-plus']
          // }
          manualChunks(id) {
            if (id.includes('element-plus')) {
              return 'element-plus';
            }
          }
        }
      }
    }
  }
})
相关推荐
GIS之路2 分钟前
GDAL 实现矢量裁剪
前端·python·信息可视化
是一个Bug5 分钟前
后端开发者视角的前端开发面试题清单(50道)
前端
Amumu121387 分钟前
React面向组件编程
开发语言·前端·javascript
IT=>小脑虎8 分钟前
Python零基础衔接进阶知识点【详解版】
开发语言·人工智能·python
wjs202410 分钟前
C 标准库 - `<float.h>》详解
开发语言
zfj32117 分钟前
CyclicBarrier、CountDownLatch、Semaphore 各自的作用和用法区别
java·开发语言·countdownlatch·semaphore·cyclicbarrier
张np24 分钟前
java基础-ConcurrentHashMap
java·开发语言
早日退休!!!25 分钟前
进程与线程的上下文加载_保存及内存映射
开发语言
jllllyuz26 分钟前
MATLAB实现蜻蜓优化算法
开发语言·算法·matlab
持续升级打怪中29 分钟前
Vue3 中虚拟滚动与分页加载的实现原理与实践
前端·性能优化