项目配置项
用于修改项目的配色、布局、缓存、多语言、组件默认配置
环境变量配置
项目的环境变量配置位于项目根目录下的 .env、.env.development、.env.production
具体可以参考 Vite 文档
.env # 在所有的环境中被载入.env.[mode] # 只在指定的模式中被载入配置项说明
.env
所有环境适用
# 端口号VITE_PORT=8080# 网站标题VITE_GLOB_APP_TITLE=智慧监控平台2.0# 项目代号VITE_GLOB_BRAND=psm# 打包体积大小的分析VITE_BUILD_REPORT=true.env.development
开发环境适用
# 资源公共路径,需要以 /开头和结尾VITE_PUBLIC_PATH=/
# 接口地址VITE_GLOB_BASE_URL=https://apigw-test.trinablue.com/csde-nem-api/v1.0/test# 接口地址前缀,有些系统所有接口地址都有前缀,可以在这里统一加,方便切换VITE_GLOB_API_PREFIX=.env.production
生产环境适用
# 接口地址 可以由nginx做转发或者直接写实际地址VITE_GLOB_BASE_URL=/api# 接口地址前缀,有些系统所有接口地址都有前缀,可以在这里统一加,方便切换VITE_GLOB_API_PREFIX=# 是否删除Console.logVITE_DROP_CONSOLE=true# 资源公共路径,需要以 / 开头和结尾VITE_PUBLIC_PATH=/# 打包是否输出gz|br文件# 可选: gzip | brotli | none# 也可以有多个, 例如 ‘gzip’|'brotli',这样会同时生成 .gz和.br文件VITE_BUILD_COMPRESS = 'none'# 是否兼容旧版浏览器。开启后打包时间会慢一倍左右。会多打出旧浏览器兼容包,且会根据浏览器兼容性自动使用相应的版本VITE_LEGACY = false生产环境动态配置
// 变量名命名规则 __PRODUCTION__xxx_CONF__ xxx:为.env配置的VITE_GLOB_APP_SHORT_NAMEwindow.__PRODUCTION__VUE_VBEN_ADMIN__CONF__ = { VITE_GLOB_APP_TITLE: 智慧监控平台2.0 VITE_GLOB_BRAND:psm VITE_GLOB_BASE_URL: '/app', VITE_GLOB_API_PREFIX: '/',};项目配置
配置文件路径
src/settings/project.setting.js
说明
// ! 改动后需要清空浏览器缓存const setting: ProjectConfig = { // 是否显示SettingButton showSettingButton: true,
// 是否显示主题切换按钮 showDarkModeToggle: true,
// 设置按钮位置 可选项 // SettingButtonPositionEnum.AUTO: 自动选择 // SettingButtonPositionEnum.HEADER: 位于头部 // SettingButtonPositionEnum.FIXED: 固定在右侧 settingButtonPosition: settingButtonPosition.AUTO,
// 权限模式,默认前端角色权限模式 // ROUTE_MAPPING: 前端模式(菜单由路由生成,默认) // ROLE:前端模式(菜单路由分开) permissionMode: permissionMode.SCHEME_2, // 权限缓存存放位置。默认存放于localStorage permissionCacheType: STORAGE_TYPE.LOCAL, // 项目主题色 themeColor: primaryColor, // 网站灰色模式,用于可能悼念的日期开启 grayMode: false, // 色弱模式 colorWeak: false, // 是否取消菜单,顶部,多标签页显示, 用于可能内嵌在别的系统内 fullContent: false, // 主题内容宽度 contentMode: content.FULL, // 是否显示logo showLogo: true, // 是否显示底部信息 copyright showFooter: true, // 头部配置 headerSetting: { // 背景色 bgColor: HEADER_PRESET_BG_COLOR_LIST[0], // 固定头部 fixed: true, // 是否显示顶部 show: true, // 主题 theme: theme.LIGHT, // 显示全屏按钮 showFullScreen: true, // 显示消息中心按钮 showNotice: true, }, // 菜单配置 menuSetting: { // 背景色 bgColor: SIDE_BAR_BG_COLOR_LIST[3], // 是否固定住菜单 fixed: true, // 菜单折叠 collapsed: false, // 折叠菜单时候是否显示菜单名 collapsedShowTitle: false, // 是否可拖拽 canDrag: true, // 是否显示 show: true, // 菜单宽度 menuWidth: 210, // 菜单模式 mode: menuMode.INLINE, // 菜单类型 type: MenuTypeEnum.SIDEBAR, // 菜单主题 type: menuType.SIDEBAR, // 分割菜单 split: false, // 顶部菜单布局 topMenuAlign: 'center', // 折叠触发器的位置 trigger: trigger.HEADER, // 手风琴模式,只展示一个菜单 accordion: true, // 在路由切换的时候关闭左侧混合菜单展开菜单 closeMixSidebarOnChange: false, // 左侧混合菜单模块切换触发方式 mixSideTrigger: mixSidebarTrigger.CLICK, // 是否固定左侧混合菜单 mixSideFixed: false, }, // 多标签 multiTabsSetting: { // 刷新后是否保留已经打开的标签页 cache: false, // 开启 show: true, // 开启快速操作 showQuick: true, // 是否可以拖拽 canDrag: true, // 是否显示刷新按钮 showRedo: true, },
// 动画配置 transitionSetting: { // 是否开启切换动画 enable: true, // 动画名 basicTransition: routerTransition.FADE_SIDE, // 是否打开页面切换loading openPageLoading: true, // 是否打开页面切换顶部进度条 openNProgress: false, },
// 是否开启KeepAlive缓存 开发时候最好关闭,不然每次都需要清除缓存 openKeepAlive: true, // 自动锁屏时间,为0不锁屏。 单位分钟 默认1个小时 lockTime: 0, // 显示面包屑 showBreadCrumb: true, // 是否开启回到顶部 useOpenBackTop: true, // 是否可以嵌入iframe页面 canEmbedIFramePage: true, // 切换界面的时候是否删除未关闭的message及notify closeMessageOnSwitch: true, // 切换界面的时候是否取消已经发送但是未响应的http请求。 // 如果开启,想对单独接口覆盖。可以在单独接口设置 removeAllHttpPending: true,};缓存配置
用于配置缓存内容加密信息,对缓存到浏览器的信息进行 AES 加密
在 /@/settings/cache.setting.js 内可以配置 localStorage 及 sessionStorage 缓存信息
前提: 使用项目自带的缓存工具类 /@/utils/cache 来进行缓存操作
// 缓存默认过期时间export const DEFAULT_CACHE_TIME = 60 * 60 * 24 * 7;多语言配置
用于配置多语言信息
在 src/settings/locale.setting.js 内配置
export const LOCALE = { ZH_CN: 'zh-CN', EN_US: 'en',}
export const currentLocale = () => { const _locale = navigator.language || navigator.userLanguage if (Object.values(LOCALE).includes(_locale)) return _locale return LOCALE.ZH_CN}
export const currentLocale = () => { // 是否显示语言选择器 showPicker: true, // 当前语言 locale: currentLocale(), // 默认语言 fallback: currentLocale(), // 允许的语言 availableLocales: [LOCALE.ZH_CN, LOCALE.EN_US],};
// 语言列表export const localeList = [ { text: '简体中文', event: LOCALE.ZH_CN, }, { text: 'English', event: LOCALE.EN_US, },]主题色配置
默认全局主题色配置位于 build/config/themeConfig.ts 内
只需要修改 primaryColor 为您需要的配色,然后重新执行 pnpm serve 即可
/** * less global variable */export const primaryColor = '#3A78F2';样式配置
css 前缀设置
用于修改项目内组件 class 的统一前缀
export const prefixCls = import.meta.env.VITE_GLOB_BRAND- 在 src/design/var/index.less 配置 css 前缀
@namespace: apms;前缀使用
在 css 内
<style lang="less" scoped> /* namespace已经全局注入,不需要额外再引入 */ @prefix-cls: ~'@{namespace}-app-logo';
.@{prefix-cls} { width: 100%; }</style>在 vue/ts 内
import { useDesign } from '/@/hooks/web/useDesign';
const { prefixCls } = useDesign('app-logo');
// prefixCls => vben-app-logo颜色配置
用于预设一些颜色数组
在 src/settings/design.setting.js 内配置
// app主题色预设export const APP_PRESET_COLOR_LIST = [ '#0960bd', '#0084f4', '#009688', '#536dfe', '#ff5c93', '#ee4f12', '#0096c7', '#9c27b0', '#ff9800',]
// 顶部背景色预设export const HEADER_PRESET_BG_COLOR_LIST = [ '#ffffff', '#151515', '#009688', '#5172DC', '#018ffb', '#409eff', '#e74c3c', '#24292e', '#394664', '#001529', '#383f45',]
// 左侧菜单背景色预设export const SIDE_BAR_BG_COLOR_LIST = [ '#001529', '#212121', '#273352', '#ffffff', '#191b24', '#191a23', '#304156', '#001628', '#28333E', '#344058', '#383f45',]