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

  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';
            }
          }
        }
      }
    }
  }
})
相关推荐
打瞌睡的朱尤4 小时前
Vue day10 完整购物网页(登录页,首页,搜索)
前端·javascript·vue.js
光泽雨4 小时前
C# 中 Assembly 类详解
开发语言·c#
少控科技4 小时前
C#基础训练营 - 02 - 运算器
开发语言·c#
扶苏10025 小时前
深入理解 Vue 3 的 watchEffect
前端·javascript·vue.js
Riemann~~5 小时前
C语言嵌入式风格
c语言·开发语言
zmzb01036 小时前
C++课后习题训练记录Day104
开发语言·c++
未来龙皇小蓝7 小时前
RBAC前端架构-05:引入Element-UI及相关逻辑
前端·ui
zmzb01037 小时前
C++课后习题训练记录Day105
开发语言·c++·算法
wjs20247 小时前
Vue3 条件语句
开发语言
_codemonster7 小时前
JavaWeb开发系列(六)JSP基础
java·开发语言