diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..16f9eae Binary files /dev/null and b/.DS_Store differ diff --git a/.npmrc b/.npmrc index 54d704c..7b91ab7 100644 --- a/.npmrc +++ b/.npmrc @@ -1,6 +1,9 @@ # 提示:如果你想自动安装对等依赖,在项目根目录下的.npmrc文件中添加"auto-install-peers=true"。 # 提示:如果你不希望pnpm在对等依赖问题上失败,在项目根目录下的.npmrc文件中添加"strict-peer-dependencies=false"。 -# auto-install-peers=true +auto-install-peers=true strict-peer-dependencies=false registry=https://registry.npmmirror.com # registry=https://registry.npmjs.org +public-hoist-pattern[]=*vue* +shamefully-hoist=true + diff --git a/.versionrc b/.versionrc deleted file mode 100644 index 8ca3449..0000000 --- a/.versionrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "types": [ - {"type": "feat", "section": "✨ Features | 新功能", "hidden": false}, - {"type": "fix", "section": "🐛 Bug Fixes | Bug 修复", "hidden": false}, - {"type": "docs", "section":"📝 Documentation | 文档", "hidden": false}, - {"type": "style", "section":"💄 Styles | 风格", "hidden": false}, - {"type": "refactor", "section":"💄 Refactor | 重构", "hidden": false}, - {"type": "perf", "section":"⚡ Performance Improvements | 性能优化", "hidden": false}, - ] -} diff --git a/.versionrc.cjs b/.versionrc.cjs new file mode 100644 index 0000000..91a164e --- /dev/null +++ b/.versionrc.cjs @@ -0,0 +1,10 @@ +module.exports = { + types: [ + { type: 'feat', section: '✨ Features | 新功能', hidden: false }, + { type: 'fix', section: '🐛 Bug Fixes | Bug 修复', hidden: false }, + { type: 'docs', section: '📝 Documentation | 文档', hidden: false }, + { type: 'style', section: '💄 Styles | 风格', hidden: false }, + { type: 'refactor', section: '💄 Refactor | 重构', hidden: false }, + { type: 'perf', section: '⚡ Performance Improvements | 性能优化', hidden: false }, + ], +}; diff --git a/CHANGELOG.md b/CHANGELOG.md index 12cd116..c093956 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.1.0](https://gitee.com/h_mo/uniapp-vue3-vite-ts-template/compare/v2.0.1...v2.1.0) (2025-04-02) + + +### ✨ Features | 新功能 + +* add unocss configuration for styling ([642ee9e](https://gitee.com/h_mo/uniapp-vue3-vite-ts-template/commit/642ee9e6374651d502fc47bb6596711a93af1e07)) + + +### 🐛 Bug Fixes | Bug 修复 + +* **build:** 修复pnpm构建出错的问题 ([a0b559f](https://gitee.com/h_mo/uniapp-vue3-vite-ts-template/commit/a0b559f7d2f87e738c7b61560f0c44312e985a3f)) + + +### 💄 Styles | 风格 + +* 格式化代码 ([36d036e](https://gitee.com/h_mo/uniapp-vue3-vite-ts-template/commit/36d036e08626ced71485b8566acba8a824132657)) +* 格式化代码 ([bfcabd0](https://gitee.com/h_mo/uniapp-vue3-vite-ts-template/commit/bfcabd0262fefdb2d78c294cf149ec32874846b3)) + ## 2.0.1 (2024-08-30) diff --git a/README.md b/README.md index f758b51..ae70fe1 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ - + @@ -55,7 +55,7 @@ ## 特性 - **最新技术栈**:使用 Vue3/Vite5/pinia ,TypeScript 等前端前沿技术开发; -- **[Tailwindcss](https://tailwindcss.com/)**: 原子化 CSS, [iconify](https://iconify.design/)图标 +- **[Unocss](https://unocss.dev/)**: 原子化 CSS, [iconify](https://iconify.design/)图标 - **Eslint**: 规范代码格式,统一编码; - **路由拦截**: [uni-mini-router](https://gitee.com/fant-mini/uni-mini-router),类似Vue Router的API和功能,在uni-app中进行路由跳转、传参、拦截等常用操作; - **请求拦截**: 使用[alova 请求](https://github.com/alovajs/alova),支持请求和响应拦截等; @@ -152,7 +152,7 @@ - 安装依赖 -> 若 pnpm 安装或运行失败,请使用 npm 或 yarn 安装依赖 +> 若 pnpm 安装或运行失败,请使用 npm 或 **yarn** 安装依赖 ```bash pnpm install diff --git a/build/platform.ts b/build/platform.ts index 0282e9b..830f6e3 100644 --- a/build/platform.ts +++ b/build/platform.ts @@ -3,13 +3,13 @@ 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; +const isWeixinMp = currentPlatform === 'mp-weixin'; export { currentPlatform, isApp, isH5, isMp, - WeappTailwindcssDisabled, + isWeixinMp, }; diff --git a/build/vitePlugins.ts b/build/vitePlugins.ts index 8da09c1..06af119 100644 --- a/build/vitePlugins.ts +++ b/build/vitePlugins.ts @@ -1,10 +1,10 @@ import type { PluginOption } from 'vite'; import uni from '@dcloudio/vite-plugin-uni'; import { visualizer } from 'rollup-plugin-visualizer'; +import Unocss from 'unocss/vite'; import autoImport from 'unplugin-auto-import/vite'; import viteRestart from 'vite-plugin-restart'; -import { UnifiedViteWeappTailwindcssPlugin as uvtw } from 'weapp-tailwindcss/vite'; -import { isH5, WeappTailwindcssDisabled } from './platform'; +import { isH5 } from './platform'; interface VitePluginConfig { isProd: boolean @@ -14,12 +14,8 @@ export function createVitePlugins({ isProd }: VitePluginConfig): PluginOption[] return [ // @ts-expect-error TODO uni() 会报错:uni is not a function,暂时使用此方式解决 uni?.default(), - uvtw({ - rem2rpx: true, - disabled: WeappTailwindcssDisabled, - // 使用新的 ast-grep 来处理 js 资源,速度是 babel 的2倍左右 - // 需要先安装 `@ast-grep/napi` - // jsAstTool: 'ast-grep' + Unocss({ + hmrTopLevelAwait: false, }), autoImport({ include: [ diff --git a/bun.lockb b/bun.lockb deleted file mode 100644 index 57b65a8..0000000 Binary files a/bun.lockb and /dev/null differ diff --git a/package.json b/package.json index f9a5a50..13e8528 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "uniapp_vue3_vite_ts", "type": "module", - "version": "2.0.1", + "version": "2.1.0", "scripts": { "dev:app": "uni -p app", "dev:custom": "uni -p", @@ -33,7 +33,6 @@ "build:quickapp-webview-union": "uni build -p quickapp-webview-union", "lint:fix": "eslint . --fix", "git:hooks": "npx simple-git-hooks", - "postinstall": "weapp-tw patch", "version:first": "commit-and-tag-version --first-release", "version:alpha": "commit-and-tag-version --prerelease alpha", "version:beta": "commit-and-tag-version --prerelease beta", @@ -43,65 +42,63 @@ "version:major": "commit-and-tag-version --release-as major" }, "dependencies": { - "@alova/adapter-uniapp": "^2.0.9", - "@alova/mock": "^2.0.9", - "@alova/shared": "^1.1.0", - "@dcloudio/uni-app": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-app-plus": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-components": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-h5": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-i18n": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-mp-alipay": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-mp-baidu": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-mp-lark": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-mp-qq": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-mp-weixin": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-4030220241101001", + "@alova/adapter-uniapp": "^2.0.11", + "@alova/mock": "^2.0.13", + "@alova/shared": "^1.1.2", + "@dcloudio/uni-app": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-app-plus": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-components": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-h5": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-i18n": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-mp-alipay": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-mp-baidu": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-mp-lark": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-mp-qq": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-mp-weixin": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-4060120250328001", "@multiavatar/multiavatar": "^1.0.7", - "alova": "^3.2.2", + "alova": "^3.2.10", "crypto-js": "^4.2.0", "lodash-es": "^4.17.21", - "pinia": "^2.2.6", - "vue": "^3.5.12" + "pinia": "^2.3.1", + "vue": "^3.5.13" }, "devDependencies": { - "@antfu/eslint-config": "^3.8.0", + "@antfu/eslint-config": "^4.11.0", "@dcloudio/types": "^3.4.14", - "@dcloudio/uni-automator": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-cli-shared": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-stacktracey": "3.0.0-alpha-4030220241101001", - "@dcloudio/uni-uts-v1": "3.0.0-alpha-4030220241101001", - "@dcloudio/vite-plugin-uni": "3.0.0-alpha-4030220241101001", - "@egoist/tailwindcss-icons": "^1.8.1", - "@iconify/json": "^2.2.270", - "@rollup/plugin-node-resolve": "^15.3.0", + "@dcloudio/uni-automator": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-cli-shared": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-stacktracey": "3.0.0-alpha-4060120250328001", + "@dcloudio/uni-uts-v1": "3.0.0-alpha-4060120250328001", + "@dcloudio/vite-plugin-uni": "3.0.0-alpha-4060120250328001", + "@iconify/json": "^2.2.323", + "@rollup/plugin-node-resolve": "^16.0.1", "@types/crypto-js": "^4.2.2", "@types/lodash-es": "^4.17.12", - "@types/node": "^20.17.6", - "@vitejs/plugin-vue": "^5.1.4", - "@vue/runtime-core": "^3.5.12", - "autoprefixer": "^10.4.20", + "@types/node": "^22.13.17", + "@vitejs/plugin-vue": "^5.2.3", + "@vue/runtime-core": "^3.5.13", + "autoprefixer": "^10.4.21", "commit-and-tag-version": "^12.5.0", - "eslint": "^9.14.0", - "eslint-plugin-format": "^0.1.2", - "globals": "^15.12.0", - "lint-staged": "^15.2.10", + "eslint": "^9.23.0", + "eslint-plugin-format": "^1.0.1", + "globals": "^16.0.0", + "lint-staged": "^15.5.0", "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "rollup-plugin-visualizer": "^5.12.0", - "sass": "^1.80.6", - "simple-git-hooks": "^2.11.1", - "tailwindcss": "^3.4.14", - "tsx": "^4.19.2", - "typescript": "^5.6.3", + "rollup-plugin-visualizer": "^5.14.0", + "sass": "^1.86.1", + "simple-git-hooks": "^2.12.1", + "tsx": "^4.19.3", + "typescript": "^5.8.2", "uni-mini-router": "^0.1.6", "uni-read-pages-vite": "^0.0.6", - "unplugin-auto-import": "^0.18.3", - "vite": "^5.4.10", - "vite-plugin-restart": "^0.4.1", - "weapp-tailwindcss": "^3.7.0" + "unocss": "66.1.0-beta.8", + "unocss-preset-weapp": "^66.0.0", + "unplugin-auto-import": "^19.1.2", + "vite": "^5.4.16", + "vite-plugin-restart": "^0.4.2" }, "simple-git-hooks": { "pre-commit": "npx lint-staged", diff --git a/postcss.config.ts b/postcss.config.ts deleted file mode 100644 index 1f941ac..0000000 --- a/postcss.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { AcceptedPlugin } from 'postcss'; -import autoprefixer from 'autoprefixer'; -import tailwindcss from 'tailwindcss'; -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/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..8f58053 Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/App.vue b/src/App.vue index 6ee2ae9..9a62c9e 100644 --- a/src/App.vue +++ b/src/App.vue @@ -15,8 +15,5 @@ onHide(() => { }); - diff --git a/src/components/.DS_Store b/src/components/.DS_Store new file mode 100644 index 0000000..e81f1c9 Binary files /dev/null and b/src/components/.DS_Store differ diff --git a/src/main.ts b/src/main.ts index c723877..0bf2abc 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,6 +2,8 @@ import { createSSRApp } from 'vue'; import App from './App.vue'; import { setupRouter } from './router'; import { setupStore } from './stores'; +import './styles/main.css'; +import 'uno.css'; export function createApp() { const app = createSSRApp(App); diff --git a/src/pages/.DS_Store b/src/pages/.DS_Store new file mode 100644 index 0000000..761c01b Binary files /dev/null and b/src/pages/.DS_Store differ diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index 1caa986..9b5ef9e 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -9,10 +9,12 @@ const appTitle = 'uniapp-vue3'; diff --git a/src/services/.DS_Store b/src/services/.DS_Store new file mode 100644 index 0000000..53c249c Binary files /dev/null and b/src/services/.DS_Store differ diff --git a/src/static/.DS_Store b/src/static/.DS_Store new file mode 100644 index 0000000..4230501 Binary files /dev/null and b/src/static/.DS_Store differ diff --git a/src/stores/app.ts b/src/stores/app.ts index 87a6977..ee4c344 100644 --- a/src/stores/app.ts +++ b/src/stores/app.ts @@ -1,11 +1,10 @@ -import { defineStore } from 'pinia'; +// import { defineStore } from 'pinia'; interface AppState { sys?: string | number } -export const useAppStore = defineStore({ - id: 'app-store', +export const useAppStore = defineStore('app-store', { state: (): AppState => ({}), getters: {}, actions: {}, diff --git a/src/stores/modules/user.ts b/src/stores/modules/user.ts index 9c04945..2ccf512 100644 --- a/src/stores/modules/user.ts +++ b/src/stores/modules/user.ts @@ -11,10 +11,10 @@ export const useUserStore = defineStore('UserStore', () => { const userInfo = ref(null); // 初始化 - function initUserInfo() { + async function initUserInfo() { if (isLogin()) { token.value = getToken(); - getUserInfo(); + await getUserInfo(); } } @@ -35,7 +35,7 @@ export const useUserStore = defineStore('UserStore', () => { } // 获取用户信息 - const { send: _getUserInfo } = useRequest(getUserInfoApi, { initialData: null, immediate: false }); + const { send: _getUserInfo } = useRequest(getUserInfoApi, { immediate: false }); async function getUserInfo() { try { userInfo.value = await _getUserInfo(); diff --git a/src/utils/.DS_Store b/src/utils/.DS_Store new file mode 100644 index 0000000..623b192 Binary files /dev/null and b/src/utils/.DS_Store differ diff --git a/unocss.config.ts b/unocss.config.ts new file mode 100644 index 0000000..8c68e7a --- /dev/null +++ b/unocss.config.ts @@ -0,0 +1,69 @@ +import { defineConfig, presetIcons } from 'unocss'; +import presetWeapp from 'unocss-preset-weapp'; +import { transformerAttributify, transformerClass } from 'unocss-preset-weapp/transformer'; +import { isWeixinMp } from './build/platform'; + +const prefix = ''; + +const transformRules = { + '.': '-d2e-', + '/': '-s2f-', + ':': '-c3a-', + '%': '-p25-', + '!': '-e21-', + '#': '-w23-', + '(': '-b28-', + ')': '-b29-', + '[': '-f4b-', + ']': '-f5d-', + '$': '-r24-', + ',': '-r2c-', +}; + +export default defineConfig({ + presets: [ + // https://github.com/MellowCo/unocss-preset-weapp + presetWeapp({ + prefix, + whRpx: false, + transform: isWeixinMp as boolean, + platform: 'uniapp', + transformRules, + }) as any, + presetIcons({ + scale: 1.2, + warn: true, + }), + ], + shortcuts: [ + { + center: 'flex justify-center items-center', + }, + ], + theme: { + colors: { + primary: '#007AFF', + secondary: '#4CD964', + danger: '#FF3B30', + warning: '#FF9500', + info: '#5AC8FA', + light: '#F0F0F0', + dark: '#1A1A1A', + }, + fontSize: { + mini: ['20rpx', '26rpx'], + }, + }, + transformers: [ + // options https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerAttributify + transformerAttributify({ + classPrefix: prefix, + transformRules, + nonValuedAttribute: true, + }) as any, + // options https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerClass + transformerClass({ + transformRules, + }), + ], +}); diff --git a/vite.config.ts b/vite.config.ts index 43a5c48..2d72fc7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -9,7 +9,7 @@ import process from 'node:process'; import TransformPages from 'uni-read-pages-vite'; import { defineConfig, loadEnv } from 'vite'; import { createVitePlugins, currentPlatform, resolveProxy } from './build'; -import postcssPlugins from './postcss.config'; +// import postcssPlugins from './postcss.config'; export default defineConfig(async ({ mode }) => { const root = process.cwd(); @@ -39,9 +39,6 @@ export default defineConfig(async ({ mode }) => { silenceDeprecations: ['legacy-js-api'], }, }, - postcss: { - plugins: postcssPlugins, - }, }, plugins: createVitePlugins({ isProd }), // 开发服务器配置