Skip to content
On this page

design 包最小化升级指南

  • 移除 theme 主题切换相关设置
  • 引入集成的 tailwind 配置的 design 包,并删除 unocss 包,删除 unocss 的配置文件

全量升级指南查看

删除文件

  • uno.config.ts
  • build/config/themeConfig.ts
  • build/generate/generateModifyVars.ts
  • build/vite/plugins/theme.ts
  • src/global/theme/dark.js
  • src/global/theme/index.js
  • src/global/theme/updateBackground.js
  • src/global/theme/updateColorWeak.js
  • src/global/theme/updateGrayMode.js
  • src/global/theme/util.js
  • src/components/Application/src/AppDarkModeToggle.vue
  • src/views/layout/default/setting/SettingDrawer.jsx
  • src/views/layout/default/setting/components/SettingFooter.vue
  • src/design/* 先要排查下是否后续添加了部分样式,需要保留增量部分,可以排查 git 上的文件修改记录

新增文件

  • tailwind.config.ts
  • assets/styles/index.less design 目录下删除的公共样式可以添加到该文件下

新增文件明细

  • tailwind.config.ts
javascript
import type { Config } from 'tailwindcss'
import { createDesktopPreset } from '@trinapower/tailwind-preset-desktop'
export default {
  corePlugins: {
    preflight: false,
  },
  content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
  presets: [createDesktopPreset()],
} satisfies Config

修改文件

  • package.json
  • build/vite/plugins/index.ts
  • src/components/Application/index.js
  • src/global/index.js
  • src/settings/project.setting.js
  • src/views/layout/default/setting/handler.js
  • src/views/layout/default/setting/components/index.js
  • vite.config.mts
  • postcss.config.js
  • main.js

修改文件明细

  • build/vite/plugins/index.ts修改
diff
-  // unocss/vite
-  vitePlugins.push(UnoCSS())

-  // vite-plugin-theme
-  vitePlugins.push(configThemePlugin(isBuild))
-

  • src/components/Application/index.js 修改
diff
 import appProvider from './src/AppProvider.vue'
 import appLocalePicker from './src/AppLocalePicker.vue'
-import appDarkModeToggle from './src/AppDarkModeToggle.vue'

 export { useAppProviderContext } from './src/useAppContext'

 export const AppLogo = withInstall(appLogo)
 export const AppProvider = withInstall(appProvider)
 export const AppLocalePicker = withInstall(appLocalePicker)
-export const AppDarkModeToggle = withInstall(appDarkModeToggle)
  • package.json 最终需要根据实际修改的发布版本进行替换
diff
{
-  "@trinapower/unocss-preset-desktop": "0.0.10",
-  "@trinapower/unocss-public-reset": "^0.0.8",
-  "unocss": "^0.56.5",
+  "cosine-fee": "0.4.2-alpha.1",
+  "tailwindcss": "^3.4.16",
+  "@trinapower/design": "0.1.3-alpha.4",
+  "@trinapower/tailwind-preset-desktop": "1.0.4",
-  "@trinapower/vite-plugin-theme": "1.0.0-alpha.4"
}
  • src/global/index.js 修改
diff
 import { LOCALE, currentLocale } from '@/settings/locale.setting'
 import { deepMerge } from '@/utils'
 import projectSetting from '@/settings/project.setting'
-import { changeTheme } from './theme'
-import { updateHeaderBgColor, updateSidebarBgColor } from './theme/updateBackground'
-import { updateColorWeak } from './theme/updateColorWeak'
-import { updateGrayMode } from './theme/updateGrayMode'
-import { updateDarkTheme } from './theme/dark'
 import { getCommonStoragePrefix, getStorageShortName } from '@/utils/env'
-import { primaryColor } from '../../build/config/themeConfig'
-import { theme } from '@/constants/app.constant'

 export function initAppConfig() {
   projCfg = deepMerge(projectSetting, projCfg || {})
   appStore.setProjectConfig(projCfg)

-  runTheme(appStore, projCfg)
   runLocale()


-function runTheme(appStore, projCfg) {
-  const darkMode = appStore.getDarkMode
-  const {
-    colorWeak,
-    grayMode,
-    themeColor,
-
-    headerSetting: { bgColor: headerBgColor } = {},
-    menuSetting: { bgColor } = {},
-  } = projCfg
-
-  try {
-    if (themeColor && themeColor !== primaryColor) {
-      changeTheme(themeColor)
-    }
-
-    grayMode && updateGrayMode(grayMode)
-    colorWeak && updateColorWeak(colorWeak)
-  } catch (error) {
-    console.log(error)
-  }
-
-  // init dark mode
-  updateDarkTheme(darkMode)
-  if (darkMode === theme.DARK) {
-    updateHeaderBgColor()
-    updateSidebarBgColor()
-  } else {
-    headerBgColor && updateHeaderBgColor(headerBgColor)
-    bgColor && updateSidebarBgColor(bgColor)
-  }
-}
-
  • src/settings/project.setting.js 修改
diff
import {
   settingButtonPosition,
 } from '@/constants/app.constant'
 import { SIDE_BAR_BG_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST } from './design.setting'
-import { primaryColor } from '../../build/config/themeConfig'
+import { DEFAULT_PRIMARY_COLOR } from '@trinapower/design/constants'

 // ! You need to clear the browser cache after the change
const setting = {
   permissionCacheType: STORAGE_TYPE.LOCAL,

   // color
-  themeColor: primaryColor,
+  themeColor: DEFAULT_PRIMARY_COLOR,
  • src/views/layout/default/setting/components/SettingFooter.vue 修改
diff
import { useAppStore } from '@/store/modules/app.store'
 import { usePermissionStore } from '@/store/modules/permission.store'
 import { useMultipleTabStore } from '@/store/modules/multipleTab.store'
 import useUserStore from '@/store/modules/user.store'
+import { useThemeStore } from '@/store/modules/theme.store'

 import { useDesign } from '@/hooks/gui/useDesign'
 import { useI18n } from '@/hooks/gui/useI18n'
 import { useMessage } from '@/hooks/gui/useMessage'
 import { useCopyToClipboard } from '@/hooks/gui/useCopyToClipboard'

-import { updateColorWeak } from '@/global/theme/updateColorWeak'
-import { updateGrayMode } from '@/global/theme/updateGrayMode'
 import defaultSetting from '@/settings/project.setting'

 export default defineComponent({
@@ -46,6 +45,7 @@ export default defineComponent({
     const tabStore = useMultipleTabStore()
     const userStore = useUserStore()
     const appStore = useAppStore()
+    const themeStore = useThemeStore()

     function handleCopy() {
       const { isSuccessRef } = useCopyToClipboard(
@@ -62,8 +62,8 @@ export default defineComponent({
         appStore.setProjectConfig(defaultSetting)
         const { colorWeak, grayMode } = defaultSetting
         // updateTheme(themeColor);
-        updateColorWeak(colorWeak)
-        updateGrayMode(grayMode)
+        themeStore.toggleColorWeak(colorWeak)
+        themeStore.toggleGrayMode(grayMode)
         createMessage.success(t('layout.setting.resetSuccess'))
       } catch (error) {
         createMessage.error(error)
  • src/views/layout/default/setting/components/index.js 修改
diff
 export const TypePicker = createAsyncComponent(() => import('./TypePicker.vue'))
 export const ThemeColorPicker = createAsyncComponent(() => import('./ThemeColorPicker.vue'))
-export const SettingFooter = createAsyncComponent(() => import('./SettingFooter.vue'))
 export const SwitchItem = createAsyncComponent(() => import('./SwitchItem.vue'))
 export const SelectItem = createAsyncComponent(() => import('./SelectItem.vue'))
 export const InputNumberItem = createAsyncComponent(() => import('./InputNumberItem.vue'))
  • src/views/layout/default/setting/handler.js 修改
diff
/* eslint-disable no-case-declarations */
 import { HandlerEnum } from './constants'
-import { updateHeaderBgColor, updateSidebarBgColor } from '@/global/theme/updateBackground'
-import { updateColorWeak } from '@/global/theme/updateColorWeak'
-import { updateGrayMode } from '@/global/theme/updateGrayMode'

 import { useAppStore } from '@/store/modules/app.store'
-import { changeTheme } from '@/global/theme'
-import { updateDarkTheme } from '@/global/theme/dark'
 import { useRootSetting } from '@/hooks/setting/useRootSetting'

 export function baseHandler(event, value) {
   const appStore = useAppStore()
   const config = handler(event, value)
   appStore.setProjectConfig(config)
-  if (event === HandlerEnum.CHANGE_THEME) {
-    updateHeaderBgColor()
-    updateSidebarBgColor()
-  }
 }

 export function handler(event, value) {
       if (getThemeColor.value === value) {
         return {}
       }
-      changeTheme(value)
-      updateDarkTheme(value)
-      updateSidebarBgColor(value)
-      updateGrayMode(value)
-      updateColorWeak(value)
-      updateHeaderBgColor(value)


  • vite.config.mts修改
diff
 import { wrapperEnv } from './build/utils'
 import { createProxy } from './build/vite/proxy'
-import { generateModifyVars } from './build/generate/generateModifyVars'
+import { generateModifyVars } from '@trinapower/design/build'
 import { createVitePlugins } from './build/vite/plugins'
 import { TESTING_OUTPUT_DIR, STAGING_OUTPUT_DIR, PRODUCTION_OUTPUT_DIR } from './build/constant'

export default ({ command, mode }: TrinaConfigEnv): UserConfig => {
  const env = loadEnv(mode, root)
  const viteEnv = wrapperEnv(env)
- const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY, VITE_DROP_CONSOLE } = viteEnv
+ const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY, VITE_DROP_CONSOLE, VITE_GLOB_BRAND } = viteEnv

     optimizeDeps: {
       include: ['cosine-fee/es/locale/zh_CN', 'cosine-fee/es/locale/en_US'],
+      exclude: ['@trinapower/design']
     },
   }
 }
  • postcss.config.js 修改
diff
module.exports = (ctx) => {
  return {
    plugins: {
+    'postcss-import': {},
+     'tailwindcss/nesting': {},
+     tailwindcss: {},
      autoprefixer: {},
    },
  }
}
  • main.js 修改
diff
-import '@/design/tailwind.css'
-import '@/design/index.less'
+import '@trinapower/design'
+import '@trinapower/design/cosine-fee'
+import '@/assets/styles/index.less'

 import 'virtual:svg-icons-register' // Register icon sprite