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

  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';
            }
          }
        }
      }
    }
  }
})
相关推荐
wjs2024几秒前
HTMLCollection 对象
开发语言
Mintopia2 分钟前
想摸鱼背单词?我用 Cursor 一个小时开发了一个 Electron 应用
前端·javascript·cursor
JarvanMo5 分钟前
Flutter PruneKit - 从你的Flutter代码中干掉那些已经死掉的代码
前端
500佰5 分钟前
最近做产品开发,总结出一些通病
前端
清风与日月7 分钟前
c#事件委托示例
开发语言·c#
serve the people8 分钟前
Formatting Outputs for ChatPrompt Templates(two)
前端·数据库
后端小张12 分钟前
【JAVA 进阶】穿越之我在修仙世界学习 @Async 注解(深度解析)
java·开发语言·spring boot·后端·spring·注解·原理
小皮虾12 分钟前
魔法降临!让小程序调用云函数如丝般顺滑,调用接口仿佛就是调用存在于本地的函数
前端·微信小程序·小程序·云开发
StarkCoder13 分钟前
Flutter微任务解析:如何解决原生线程回调导致的UI状态异常
前端
yunyi14 分钟前
Husky v9+ 在 Monorepo/全栈项目中的升级与配置
前端