diff --git a/.DS_Store b/.DS_Store index a53f245..340f91e 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/build/platform.ts b/build/platform.ts index c7feb67..778ddf5 100644 --- a/build/platform.ts +++ b/build/platform.ts @@ -3,13 +3,11 @@ import process from 'node:process'; const currentPlatform = process.env.UNI_PLATFORM; const isH5 = currentPlatform === 'h5'; const isApp = currentPlatform === 'app'; -const WeappTailwindcssDisabled = isH5 || isApp; const isMp = !isH5 && !isApp; export { isH5, isApp, - WeappTailwindcssDisabled, isMp, currentPlatform, }; diff --git a/build/vitePlugins.ts b/build/vitePlugins.ts index e804038..4d6748d 100644 --- a/build/vitePlugins.ts +++ b/build/vitePlugins.ts @@ -1,14 +1,15 @@ import type { PluginOption } from 'vite'; import uni from '@dcloudio/vite-plugin-uni'; -import { UnifiedViteWeappTailwindcssPlugin as uvtw } from 'weapp-tailwindcss/vite'; import autoImport from 'unplugin-auto-import/vite'; import viteRestart from 'vite-plugin-restart'; import { visualizer } from 'rollup-plugin-visualizer'; +import Unocss from 'unocss/vite'; import { appProvider, buildThemeConfig, createComponents } from '../vite/plugins/index'; -import { WeappTailwindcssDisabled, isH5 } from './platform'; +import { isH5 } from './platform'; interface VitePluginConfig { isProd: boolean + env?: Record } export function createVitePlugins({ isProd }: VitePluginConfig): PluginOption[] { @@ -18,13 +19,8 @@ export function createVitePlugins({ isProd }: VitePluginConfig): PluginOption[] appProvider(), buildThemeConfig(), createComponents(), - uvtw({ - rem2rpx: true, - disabled: WeappTailwindcssDisabled, - // 使用新的 ast-grep 来处理 js 资源,速度是 babel 的2倍左右 - // 需要先安装 `@ast-grep/napi` - // jsAstTool: 'ast-grep' - }), + + Unocss(), autoImport({ include: [ /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx diff --git a/package.json b/package.json index 663a589..6bc8c16 100644 --- a/package.json +++ b/package.json @@ -77,12 +77,15 @@ "@dcloudio/uni-cli-shared": "3.0.0-alpha-4020620240822002", "@dcloudio/uni-stacktracey": "3.0.0-alpha-4020620240822002", "@dcloudio/vite-plugin-uni": "3.0.0-alpha-4020620240822002", - "@egoist/tailwindcss-icons": "^1.8.1", - "@iconify/json": "^2.2.239", "@types/crypto-js": "^4.2.2", "@types/lodash-es": "^4.17.12", "@types/node": "^20.16.1", "@types/normalize-path": "^3.0.0", + "@unocss/eslint-config": "^0.62.3", + "@unocss/preset-icons": "^0.62.3", + "@unocss/preset-uno": "^0.62.3", + "@unocss/transformer-directives": "^0.62.3", + "@unocss/vite": "0.62.3", "@vitejs/plugin-vue": "^5.1.2", "@vue/runtime-core": "^3.4.38", "autoprefixer": "^10.4.20", @@ -92,19 +95,18 @@ "globals": "^15.9.0", "lint-staged": "^15.2.9", "picocolors": "^1.0.1", - "postcss": "^8.4.41", "rollup-plugin-visualizer": "^5.12.0", "sass": "^1.77.8", "simple-git-hooks": "^2.11.1", - "tailwindcss": "^3.4.10", "tsx": "^4.17.0", "typescript": "^5.5.4", "uni-mini-router": "^0.1.6", "uni-read-pages-vite": "^0.0.6", + "unocss": "^0.62.3", + "unocss-preset-weapp": "^0.62.0", "unplugin-auto-import": "^0.18.2", "vite": "^5.4.2", - "vite-plugin-restart": "^0.4.1", - "weapp-tailwindcss": "^3.5.0" + "vite-plugin-restart": "^0.4.1" }, "simple-git-hooks": { "pre-commit": "npx lint-staged", diff --git a/postcss.config.ts b/postcss.config.ts deleted file mode 100644 index a16dcd9..0000000 --- a/postcss.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import tailwindcss from 'tailwindcss'; -import autoprefixer from 'autoprefixer'; -import type { AcceptedPlugin } from 'postcss'; -import cssMacro from 'weapp-tailwindcss/css-macro/postcss'; - -const plugins: AcceptedPlugin[] = [tailwindcss(), autoprefixer()]; - -// 可以使用 postcss-pxtransform 来进行 px 转 rpx 的功能 - -plugins.push(cssMacro); - -export default plugins; diff --git a/src/App.vue b/src/App.vue index ce58eeb..cd8a42e 100644 --- a/src/App.vue +++ b/src/App.vue @@ -13,7 +13,5 @@ onHide(() => { diff --git a/src/assets/imgs/soybean.jpg b/src/assets/imgs/soybean.jpg new file mode 100644 index 0000000..75457d5 Binary files /dev/null and b/src/assets/imgs/soybean.jpg differ diff --git a/src/assets/svg-icon/activity.svg b/src/assets/svg-icon/activity.svg new file mode 100644 index 0000000..abe892f --- /dev/null +++ b/src/assets/svg-icon/activity.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/at-sign.svg b/src/assets/svg-icon/at-sign.svg new file mode 100644 index 0000000..625214d --- /dev/null +++ b/src/assets/svg-icon/at-sign.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/avatar.svg b/src/assets/svg-icon/avatar.svg new file mode 100644 index 0000000..66fe6f2 --- /dev/null +++ b/src/assets/svg-icon/avatar.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/banner.svg b/src/assets/svg-icon/banner.svg new file mode 100644 index 0000000..192b637 --- /dev/null +++ b/src/assets/svg-icon/banner.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/cast.svg b/src/assets/svg-icon/cast.svg new file mode 100644 index 0000000..4f008d3 --- /dev/null +++ b/src/assets/svg-icon/cast.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/chrome.svg b/src/assets/svg-icon/chrome.svg new file mode 100644 index 0000000..6314173 --- /dev/null +++ b/src/assets/svg-icon/chrome.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/copy.svg b/src/assets/svg-icon/copy.svg new file mode 100644 index 0000000..ab25601 --- /dev/null +++ b/src/assets/svg-icon/copy.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/custom-icon.svg b/src/assets/svg-icon/custom-icon.svg new file mode 100644 index 0000000..b33a43f --- /dev/null +++ b/src/assets/svg-icon/custom-icon.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/empty-data.svg b/src/assets/svg-icon/empty-data.svg new file mode 100644 index 0000000..293486c --- /dev/null +++ b/src/assets/svg-icon/empty-data.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/expectation.svg b/src/assets/svg-icon/expectation.svg new file mode 100644 index 0000000..1d87d5e --- /dev/null +++ b/src/assets/svg-icon/expectation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg-icon/heart.svg b/src/assets/svg-icon/heart.svg new file mode 100644 index 0000000..56e59b4 --- /dev/null +++ b/src/assets/svg-icon/heart.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/logo.svg b/src/assets/svg-icon/logo.svg new file mode 100644 index 0000000..341675d --- /dev/null +++ b/src/assets/svg-icon/logo.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/network-error.svg b/src/assets/svg-icon/network-error.svg new file mode 100644 index 0000000..52f97ab --- /dev/null +++ b/src/assets/svg-icon/network-error.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/no-icon.svg b/src/assets/svg-icon/no-icon.svg new file mode 100644 index 0000000..f6dcdd0 --- /dev/null +++ b/src/assets/svg-icon/no-icon.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/no-permission.svg b/src/assets/svg-icon/no-permission.svg new file mode 100644 index 0000000..4c408ca --- /dev/null +++ b/src/assets/svg-icon/no-permission.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/not-found.svg b/src/assets/svg-icon/not-found.svg new file mode 100644 index 0000000..a513656 --- /dev/null +++ b/src/assets/svg-icon/not-found.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/service-error.svg b/src/assets/svg-icon/service-error.svg new file mode 100644 index 0000000..0120f1e --- /dev/null +++ b/src/assets/svg-icon/service-error.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svg-icon/wind.svg b/src/assets/svg-icon/wind.svg new file mode 100644 index 0000000..7c90590 --- /dev/null +++ b/src/assets/svg-icon/wind.svg @@ -0,0 +1 @@ + diff --git a/src/components/Iconify/index.vue b/src/components/Iconify/index.vue deleted file mode 100644 index 79adabc..0000000 --- a/src/components/Iconify/index.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue new file mode 100644 index 0000000..db755a5 --- /dev/null +++ b/src/components/SvgIcon/index.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/main.ts b/src/main.ts index 8cb5244..fa07ab2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,17 +3,13 @@ import App from './App.vue'; import { setupRouter } from './router'; import { setupStore } from './stores'; import { themeMixin } from '@/mixins/theme'; +import 'uno.css'; export function createApp() { const app = createSSRApp(App); - setupStore(app); - - // app.mixin(themeMixin); - setupRouter(app); - return { app, }; diff --git a/src/pages/demo/index.vue b/src/pages/demo/index.vue index 2603379..611dcf0 100644 --- a/src/pages/demo/index.vue +++ b/src/pages/demo/index.vue @@ -4,14 +4,14 @@ diff --git a/src/pages/splashScreen/index.vue b/src/pages/splashScreen/index.vue index 8d03da1..0341372 100644 --- a/src/pages/splashScreen/index.vue +++ b/src/pages/splashScreen/index.vue @@ -26,20 +26,20 @@ onMounted(async () => { const userStore = useUserStore(); const { isLogined } = userStore; // 如果已经登录,跳转到首页 - // if (isLogined) { - // userStore.initUserInfo(); - // router.pushTab({ - // name: 'Home', - // }); - // } else { - // router.replace({ - // name: 'Login', - // params: { - // redirect: 'Home', - // tabBar: 'true', - // }, - // }); - // } + if (isLogined) { + userStore.initUserInfo(); + router.pushTab({ + name: 'Home', + }); + } else { + router.replace({ + name: 'Login', + params: { + redirect: 'Home', + tabBar: 'true', + }, + }); + } }); // fuc : 切换主题 diff --git a/src/types/import-components.d.ts b/src/types/import-components.d.ts index 59580a3..0022afb 100644 --- a/src/types/import-components.d.ts +++ b/src/types/import-components.d.ts @@ -9,6 +9,7 @@ declare module 'vue' { export interface GlobalComponents { AppProvider: typeof import('./../components/AppProvider/index.vue')['default'] BasicButton: typeof import('./../components/BasicButton/index.vue')['default'] - Iconify: typeof import('./../components/Iconify/index.vue')['default'] + 'svg-icon': typeof import('./../components/SvgIcon/index.vue')['default'] + SvgIcon: typeof import('./../components/SvgIcon/index.vue')['default'] } } diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts new file mode 100644 index 0000000..e870bb1 --- /dev/null +++ b/src/typings/components.d.ts @@ -0,0 +1,16 @@ +/* eslint-disable */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + AppProvider: typeof import('./../components/AppProvider/index.vue')['default'] + BasicButton: typeof import('./../components/BasicButton/index.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + 'svg-icon': typeof import('./../components/SvgIcon/index.vue')['default'] + } +} diff --git a/tailwind.config.ts b/tailwind.config.ts deleted file mode 100644 index 0534bfa..0000000 --- a/tailwind.config.ts +++ /dev/null @@ -1,74 +0,0 @@ - - import { getIconCollections, iconsPlugin } from '@egoist/tailwindcss-icons'; - import { isMp } from './build/platform'; - - /** @type {import('tailwindcss').Config} */ - export default { - content: ['./public/index.html', './src/**/**.{html,js,ts,jsx,tsx,vue}'], - corePlugins: { - // 小程序去使用 h5 的 preflight 和响应式 container 没有意义 - preflight: !isMp, - container: !isMp, - }, - plugins: [iconsPlugin({ - collections: getIconCollections(['mdi', 'svg-spinners']), - })], - theme: { - "extend": { - "opacity": { - "disabled": "var(--opacity-disabled)" - } - }, - "colors": { - "primary": "var(--colors-primary)", - "secondary": "var(--colors-secondary)", - "accent": "var(--colors-accent)", - "success": "var(--colors-success)", - "warning": "var(--colors-warning)", - "error": "var(--colors-error)", - "disable": "var(--colors-disable)", - "danger": "var(--colors-danger)", - "mark": "var(--colors-mark)", - "title": "var(--colors-title)", - "subtitle": "var(--colors-subtitle)", - "paragraph": "var(--colors-paragraph)", - "fontColorblack": "var(--colors-fontColorblack)", - "fontColorPrimary": "var(--colors-fontColorPrimary)", - "fontColorInverse": "var(--colors-fontColorInverse)", - "fontColorGrey": "var(--colors-fontColorGrey)", - "fontColorPlaceholder": "var(--colors-fontColorPlaceholder)", - "fontColorDisable": "var(--colors-fontColorDisable)", - "fontColorBottomText": "var(--colors-fontColorBottomText)", - "container": "var(--colors-container)", - "page": "var(--colors-page)", - "containerInverse": "var(--colors-containerInverse)", - "containerHover": "var(--colors-containerHover)", - "secondaryHover": "var(--colors-secondaryHover)", - "containerMask": "var(--colors-containerMask)", - "iconButton": "var(--colors-iconButton)", - "borderColor": "var(--colors-borderColor)" - }, - "fontSize": { - "sm": "var(--fontSize-sm)", - "base": "var(--fontSize-base)", - "lg": "var(--fontSize-lg)", - "title": "var(--fontSize-title)", - "subtitle": "var(--fontSize-subtitle)", - "paragraph": "var(--fontSize-paragraph)" - }, - "borderRadius": { - "sm": "var(--borderRadius-sm)", - "base": "var(--borderRadius-base)", - "lg": "var(--borderRadius-lg)", - "circle": "var(--borderRadius-circle)" - }, - "spacing": { - "rowSm": "var(--spacing-rowSm)", - "rowBase": "var(--spacing-rowBase)", - "rowLg": "var(--spacing-rowLg)", - "colSm": "var(--spacing-colSm)", - "colBase": "var(--spacing-colBase)", - "colLg": "var(--spacing-colLg)" - } -} - }; diff --git a/tsconfig.json b/tsconfig.json index cb986ed..5547ae6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,4 @@ -{ +{ // 指定要从编译中排除的文件列表 "compilerOptions": { "target": "ESNext", // 编译出目标语言版本 diff --git a/unocss.config.ts b/unocss.config.ts new file mode 100644 index 0000000..5f7c19d --- /dev/null +++ b/unocss.config.ts @@ -0,0 +1,75 @@ +/** + * unocss defineConfig + * @link unocss: https://github.com/unocss/unocss + * @link unocss-preset-weapp: https://github.com/MellowCo/unocss-preset-weapp + */ + +import { defineConfig, presetIcons } from 'unocss'; +import presetWeapp from 'unocss-preset-weapp'; +import { transformerAttributify, transformerClass } from 'unocss-preset-weapp/transformer'; +import transformerDirectives from '@unocss/transformer-directives'; + +const transformRules = { + '.': '-d111-', + '/': '-s111-', + ':': '-c111-', + '%': '-p111-', + '!': '-e111-', + '#': '-w111-', + '(': '-b111l-', + ')': '-b111r-', + '[': '-f111l-', + ']': '-f111r-', + '$': '-r111-', + ',': '-r222-', +}; + +const prefix = ''; + +export default defineConfig({ + presets: [ + // https://github.com/MellowCo/unocss-preset-weapp + presetWeapp({ + nonValuedAttribute: true, + prefix, + whRpx: true, + transform: true, + platform: 'uniapp', + transformRules, + }), + // 由 Iconify 提供支持的纯 CSS 图标解决方案 + presetIcons({ + scale: 1, + warn: true, + extraProperties: { + 'display': 'inline-block', + 'vertical-align': 'middle', + }, + }), + ], + // transformers: [transformerDirectives()], + // attributify: false, + shortcuts: [ + { + 'border-base': 'border border-gray-500_10', + 'z-tar-both': 'z-988', + 'head-fixed': 'fixed top-0 left-0 w-full z-tar-both', + 'center': 'flex justify-center items-center', + }, + ], + theme: { extend: { opacity: { disabled: 'var(--opacity-disabled)' } }, colors: { primary: 'var(--colors-primary)', secondary: 'var(--colors-secondary)', accent: 'var(--colors-accent)', success: 'var(--colors-success)', warning: 'var(--colors-warning)', error: 'var(--colors-error)', disable: 'var(--colors-disable)', danger: 'var(--colors-danger)', mark: 'var(--colors-mark)', title: 'var(--colors-title)', subtitle: 'var(--colors-subtitle)', paragraph: 'var(--colors-paragraph)', fontColorblack: 'var(--colors-fontColorblack)', fontColorPrimary: 'var(--colors-fontColorPrimary)', fontColorInverse: 'var(--colors-fontColorInverse)', fontColorGrey: 'var(--colors-fontColorGrey)', fontColorPlaceholder: 'var(--colors-fontColorPlaceholder)', fontColorDisable: 'var(--colors-fontColorDisable)', fontColorBottomText: 'var(--colors-fontColorBottomText)', container: 'var(--colors-container)', page: 'var(--colors-page)', containerInverse: 'var(--colors-containerInverse)', containerHover: 'var(--colors-containerHover)', secondaryHover: 'var(--colors-secondaryHover)', containerMask: 'var(--colors-containerMask)', iconButton: 'var(--colors-iconButton)', borderColor: 'var(--colors-borderColor)' }, fontSize: { sm: 'var(--fontSize-sm)', base: 'var(--fontSize-base)', lg: 'var(--fontSize-lg)', title: 'var(--fontSize-title)', subtitle: 'var(--fontSize-subtitle)', paragraph: 'var(--fontSize-paragraph)' }, borderRadius: { sm: 'var(--borderRadius-sm)', base: 'var(--borderRadius-base)', lg: 'var(--borderRadius-lg)', circle: 'var(--borderRadius-circle)' }, spacing: { rowSm: 'var(--spacing-rowSm)', rowBase: 'var(--spacing-rowBase)', rowLg: 'var(--spacing-rowLg)', colSm: 'var(--spacing-colSm)', colBase: 'var(--spacing-colBase)', colLg: 'var(--spacing-colLg)' } }, + transformers: [ + transformerDirectives({ + applyVariable: ['--at-apply', '--uno-apply', '--uno'], + enforce: 'pre', + }), + transformerAttributify({ + classPrefix: prefix, + transformRules, + nonValuedAttribute: true, + }), + transformerClass({ + transformRules, + }), + ], +}); diff --git a/vite.config.ts b/vite.config.ts index fd49b6e..fe94837 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -8,7 +8,6 @@ import process from 'node:process'; import type { UserConfig } from 'vite'; import { defineConfig, loadEnv } from 'vite'; import TransformPages from 'uni-read-pages-vite'; -import postcssPlugins from './postcss.config'; import { createVitePlugins, currentPlatform, resolveProxy } from './build'; export default defineConfig(async ({ mode }) => { @@ -38,11 +37,9 @@ export default defineConfig(async ({ mode }) => { additionalData: '@import "./src/uni.scss";', }, }, - postcss: { - plugins: postcssPlugins, - }, + }, - plugins: createVitePlugins({ isProd }), + plugins: createVitePlugins({ isProd, env }), // 开发服务器配置 server: { // host: true, diff --git a/vite/plugins/build.unocss.config.ts b/vite/plugins/build.unocss.config.ts index 114e9e5..9786411 100644 --- a/vite/plugins/build.unocss.config.ts +++ b/vite/plugins/build.unocss.config.ts @@ -2,14 +2,14 @@ import * as fs from 'node:fs'; import { buildTheme } from '../../src/theme/theme'; export default function buildThemeConfig() { - const fileName = './tailwind.config.ts'; + const fileName = './unocss.config.ts'; const _data = buildTheme(); // 写入时会先清空文件 fs.writeFile(fileName, `${createFileByTemplate(_data)}`, (err: any) => { if (err) { console.error(err); } else { - console.log('构建 css 提示文件完成'); + // console.log('构建 css 提示文件完成'); console.table(flatten(_data)); } }); @@ -36,23 +36,84 @@ function flatten(obj: any, parentKey = ''): any { // 通过模版生成文件 function createFileByTemplate(theme: any) { - const fileString = ` - import { getIconCollections, iconsPlugin } from '@egoist/tailwindcss-icons'; - import { isMp } from './build/platform'; + const file_string = ` + + /** + * unocss defineConfig + * @link unocss: https://github.com/unocss/unocss + * @link unocss-preset-weapp: https://github.com/MellowCo/unocss-preset-weapp + * */ + + import { defineConfig, presetIcons } from 'unocss'; + import presetWeapp from 'unocss-preset-weapp'; + import { transformerAttributify, transformerClass } from 'unocss-preset-weapp/transformer'; + import transformerDirectives from '@unocss/transformer-directives'; + + const transformRules = { + '.': '-d111-', + '/': '-s111-', + ':': '-c111-', + '%': '-p111-', + '!': '-e111-', + '#': '-w111-', + '(': '-b111l-', + ')': '-b111r-', + '[': '-f111l-', + ']': '-f111r-', + $: '-r111-', + ',': '-r222-', + }; + + const prefix = ''; + + export default defineConfig({ + presets: [ + // https://github.com/MellowCo/unocss-preset-weapp + presetWeapp({ + nonValuedAttribute: true, + prefix: prefix, + whRpx: true, + transform: true, + platform: 'uniapp', + transformRules, + }), + // 由 Iconify 提供支持的纯 CSS 图标解决方案 + presetIcons({ + scale: 1, + warn: true, + extraProperties: { + 'display': 'inline-block', + 'vertical-align': 'middle', + }, + }), + ], + // transformers: [transformerDirectives()], + // attributify: false, + shortcuts: [ + { + 'border-base': 'border border-gray-500_10', + 'z-tar-both': 'z-988', + 'head-fixed': 'fixed top-0 left-0 w-full z-tar-both', + center: 'flex justify-center items-center', + }, + ], + theme: ${JSON.stringify(theme)}, + transformers: [ + transformerDirectives({ + applyVariable: ['--at-apply', '--uno-apply', '--uno'], + enforce: 'pre' + }), + transformerAttributify({ + classPrefix: prefix, + transformRules, + nonValuedAttribute: true, + }), + transformerClass({ + transformRules, + }), + ], + }); + `; - /** @type {import('tailwindcss').Config} */ - export default { - content: ['./public/index.html', './src/**/**.{html,js,ts,jsx,tsx,vue}'], - corePlugins: { - // 小程序去使用 h5 的 preflight 和响应式 container 没有意义 - preflight: !isMp, - container: !isMp, - }, - plugins: [iconsPlugin({ - collections: getIconCollections(['mdi', 'svg-spinners']), - })], - theme: ${JSON.stringify(theme, null, 4)} - }; -`; - return fileString; + return file_string; }