diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..696747b
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,10 @@
+{
+ "recommendations": [
+ "CodeInChinese.EnglishChineseDictionary", // 翻译(英汉词典)
+ "kisstkondoros.vscode-gutter-preview", // Image 预览
+ "ritwickdey.LiveServer", // 为静态和动态页面启动具有实时重载功能的本地开发服务器
+ "antfu.unocss", // UnoCSS 原子化css
+ "esbenp.prettier-vscode", // 格式化
+ ]
+ }
+
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 00f3cd1..f1715a1 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,5 +1,13 @@
{
- "editor.formatOnSave": true, //保存时格式化
- "editor.detectIndentation": false,
- "editor.tabSize": 4
-}
+ // 参考:https://blog.csdn.net/weixin_46238462/article/details/125867532
+
+ "editor.defaultFormatter": "esbenp.prettier-vscode", // 定义一个默认格式化程序, 该格式化程序优先于所有其他格式化程序设置。必须是提供格式化程序的扩展的标识符。
+ "editor.formatOnSave": true, //在保存时格式化文件。格式化程序必须可用,延迟后文件不能保存,并且编辑器不能关闭。
+ "editor.detectIndentation": false, // 控制在基于文件内容打开文件时是否自动检测 #editor.tabSize# 和 #editor.insertSpaces#。
+ "editor.tabSize": 4,
+ "editor.codeActionsOnSave": {
+ "source.fixAll": true, // 控制是否应在文件保存时运行自动修复操作。
+ "source.fixAll.eslint": true,
+ "source.fixAll.stylelint": true
+ }, // 要在保存时运行的代码操作种类。
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index b097b94..adcf580 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,17 @@
+# 🌈 uni-app Vue3 Vite4 pinia2 TypeScript 基础框架
+
+
+
+
+
+
+
+
+
+
## 简介
-- **uni-app Vue3 Vite TypeScript 基础框架**
+- **uni-app Vue3 Vite4 pinia2 TypeScript 基础框架**
- cli创建的Vue3/Vite项目 与 使用HBuilderX导入插件 的包有差异,请直接访问 [开源地址](https://gitee.com/h_mo/uniapp-vue3-vite-ts-template)
- 访问[uniapp插件](https://ext.dcloud.net.cn/plugin?id=8559)
@@ -12,6 +23,7 @@
- 其他平台暂未测试,后续会增加;
- 如发现问题或建议可在评论区留言, 或提[Issues](https://gitee.com/h_mo/uniapp-vue3-vite-ts-template/issues)及[PR](https://gitee.com/h_mo/uniapp-vue3-vite-ts-template/pulls),会及时处理;
- 如有需求亦可在评论区留言,或在此项目基础上增加;
+- [代码规范 & 详细解释 husky、prettier、eslint、lint-staged 的作用和使用](https://blog.csdn.net/cookcyq__/article/details/125457031)
## 特性
@@ -136,6 +148,13 @@ pnpm dev:h5
pnpm build:h5
```
+- 更新依赖到最新(新手请忽略)
+
+```bash
+pnpm up
+# 打开HBuilder X alpha桌面程序-->点击上面的帮助-->历次更新说明-->获取最新版本号(如:3.7.2.20230217-alpha)
+npx @dcloudio/uvm 3.7.2.20230217-alpha
+```
## Git 贡献提交规范
- 参考 [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) 规范 ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular))
diff --git a/package.json b/package.json
index b045d03..d7751ac 100644
--- a/package.json
+++ b/package.json
@@ -1,104 +1,105 @@
{
- "name": "uniapp_vue3_vite_ts",
- "version": "1.1.2",
- "scripts": {
- "dev:app": "uni -p app",
- "dev:custom": "uni -p",
- "dev:h5": "uni",
- "dev:h5:ssr": "uni --ssr",
- "dev:mp-alipay": "uni -p mp-alipay",
- "dev:mp-baidu": "uni -p mp-baidu",
- "dev:mp-kuaishou": "uni -p mp-kuaishou",
- "dev:mp-lark": "uni -p mp-lark",
- "dev:mp-qq": "uni -p mp-qq",
- "dev:mp-toutiao": "uni -p mp-toutiao",
- "dev:mp-weixin": "uni -p mp-weixin",
- "dev:quickapp-webview": "uni -p quickapp-webview",
- "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei",
- "dev:quickapp-webview-union": "uni -p quickapp-webview-union",
- "build:app": "uni build -p app",
- "build:custom": "uni build -p",
- "build:h5": "uni build --minify",
- "build:h5:ssr": "uni build --ssr",
- "build:mp-alipay": "uni build -p mp-alipay",
- "build:mp-baidu": "uni build -p mp-baidu",
- "build:mp-kuaishou": "uni build -p mp-kuaishou",
- "build:mp-lark": "uni build -p mp-lark",
- "build:mp-qq": "uni build -p mp-qq",
- "build:mp-toutiao": "uni build -p mp-toutiao",
- "build:mp-weixin": "uni build -p mp-weixin --minify",
- "build:quickapp-webview": "uni build -p quickapp-webview",
- "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
- "build:quickapp-webview-union": "uni build -p quickapp-webview-union",
- "lint": "eslint --cache --max-warnings 0 \"src/**/*.{vue,ts}\" --fix",
- "prettier": "prettier --write \"src/**/*.{js,ts,json,css,scss,vue}\"",
- "prepare": "husky install"
- },
- "dependencies": {
- "@dcloudio/uni-app": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-app-plus": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-components": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-h5": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-i18n": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-mp-alipay": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-mp-baidu": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-mp-lark": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-mp-qq": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-3070220230217001",
- "@fortawesome/fontawesome-free": "^6.3.0",
- "@iconify/iconify": "^3.1.0",
- "crypto-js": "^4.1.1",
- "echarts": "^5.4.1",
- "lodash-es": "^4.17.21",
- "luch-request": "^3.0.8",
- "pinia": "^2.0.30",
- "qs": "^6.11.0",
- "vue": "^3.2.47",
- "vue-i18n": "^9.2.2"
- },
- "devDependencies": {
- "@dcloudio/types": "^2.6.12",
- "@dcloudio/uni-automator": "3.0.0-alpha-3070220230217001",
- "@dcloudio/uni-cli-shared": "3.0.0-alpha-3070220230217001",
- "@dcloudio/vite-plugin-uni": "3.0.0-alpha-3070220230217001",
- "@iconify/json": "^2.2.24",
- "@types/crypto-js": "^4.1.1",
- "@types/lodash-es": "^4.17.6",
- "@types/node": "^17.0.45",
- "@types/qs": "^6.9.7",
- "@typescript-eslint/eslint-plugin": "^5.52.0",
- "@typescript-eslint/parser": "^5.52.0",
- "@unocss/preset-icons": "^0.46.5",
- "autoprefixer": "^10.4.13",
- "eslint": "^8.34.0",
- "eslint-config-prettier": "^8.6.0",
- "eslint-plugin-prettier": "^4.2.1",
- "eslint-plugin-vue": "^9.9.0",
- "husky": "^8.0.3",
- "lint-staged": "^13.1.2",
- "mrm": "^4.1.13",
- "postcss": "^8.4.21",
- "prettier": "^2.8.4",
- "sass": "^1.58.3",
- "typescript": "^4.9.5",
- "unocss": "^0.46.5",
- "unocss-preset-weapp": "^0.2.5",
- "unplugin-vue-components": "^0.22.12",
- "vite": "^4.1.2",
- "vite-plugin-eslint": "^1.8.1"
- },
- "husky": {
- "hooks": {
- "pre-commit": "lint-staged"
- }
- },
- "lint-staged": {
- "*.{js,jsx,vue,ts,tsx}": [
- "prettier --write",
- "git add"
- ]
- }
+ "name": "uniapp_vue3_vite_ts",
+ "version": "1.1.2",
+ "scripts": {
+ "dev:app": "uni -p app",
+ "dev:custom": "uni -p",
+ "dev:h5": "uni",
+ "dev:h5:ssr": "uni --ssr",
+ "dev:mp-alipay": "uni -p mp-alipay",
+ "dev:mp-baidu": "uni -p mp-baidu",
+ "dev:mp-kuaishou": "uni -p mp-kuaishou",
+ "dev:mp-lark": "uni -p mp-lark",
+ "dev:mp-qq": "uni -p mp-qq",
+ "dev:mp-toutiao": "uni -p mp-toutiao",
+ "dev:mp-weixin": "uni -p mp-weixin",
+ "dev:quickapp-webview": "uni -p quickapp-webview",
+ "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei",
+ "dev:quickapp-webview-union": "uni -p quickapp-webview-union",
+ "build:app": "uni build -p app",
+ "build:custom": "uni build -p",
+ "build:h5": "uni build --minify",
+ "build:h5:ssr": "uni build --ssr",
+ "build:mp-alipay": "uni build -p mp-alipay",
+ "build:mp-baidu": "uni build -p mp-baidu",
+ "build:mp-kuaishou": "uni build -p mp-kuaishou",
+ "build:mp-lark": "uni build -p mp-lark",
+ "build:mp-qq": "uni build -p mp-qq",
+ "build:mp-toutiao": "uni build -p mp-toutiao",
+ "build:mp-weixin": "uni build -p mp-weixin --minify",
+ "build:quickapp-webview": "uni build -p quickapp-webview",
+ "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
+ "build:quickapp-webview-union": "uni build -p quickapp-webview-union",
+ "lint": "eslint --cache --max-warnings 0 \"src/**/*.{vue,ts}\" --fix",
+ "prettier": "prettier --write \"src/**/*.{js,ts,json,css,scss,vue}\"",
+ "prepare": "husky install"
+ },
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-app-plus": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-components": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-h5": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-i18n": "3.0.0-alpha-3061620230106001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-mp-lark": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-mp-qq": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-alpha-3070220230217001",
+ "@fortawesome/fontawesome-free": "^6.3.0",
+ "@iconify/iconify": "^3.1.0",
+ "crypto-js": "^4.1.1",
+ "echarts": "^5.4.1",
+ "lodash-es": "^4.17.21",
+ "luch-request": "^3.0.8",
+ "pinia": "^2.0.32",
+ "qs": "^6.11.0",
+ "vue": "^3.2.47",
+ "vue-i18n": "^9.2.2"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.2.11",
+ "@dcloudio/uni-automator": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-cli-shared": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/uni-stacktracey": "3.0.0-alpha-3070220230217001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-alpha-3070220230217001",
+ "@iconify/json": "^2.2.24",
+ "@types/crypto-js": "^4.1.1",
+ "@types/lodash-es": "^4.17.6",
+ "@types/node": "^17.0.45",
+ "@types/qs": "^6.9.7",
+ "@typescript-eslint/eslint-plugin": "^5.53.0",
+ "@typescript-eslint/parser": "^5.53.0",
+ "@unocss/preset-icons": "^0.46.5",
+ "autoprefixer": "^10.4.13",
+ "eslint": "^8.34.0",
+ "eslint-config-prettier": "^8.6.0",
+ "eslint-plugin-prettier": "^4.2.1",
+ "eslint-plugin-vue": "^9.9.0",
+ "husky": "^8.0.3",
+ "lint-staged": "^13.1.2",
+ "mrm": "^4.1.13",
+ "postcss": "^8.4.21",
+ "prettier": "^2.8.4",
+ "sass": "^1.58.3",
+ "typescript": "^4.9.5",
+ "unocss": "^0.46.5",
+ "unocss-preset-weapp": "^0.2.5",
+ "unplugin-vue-components": "^0.22.12",
+ "vite": "^4.0.3",
+ "vite-plugin-eslint": "^1.8.1"
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.{js,jsx,vue,ts,tsx}": [
+ "prettier --write",
+ "git add"
+ ]
+ }
}
diff --git a/vite.config.ts b/vite.config.ts
index b9e5a1d..1b4c409 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -5,6 +5,49 @@ import { resolve } from 'path';
import { loadEnv } from 'vite';
import Unocss from 'unocss/vite';
+//发布时动态修改 manifest.json
+// if (process.env.NODE_ENV === 'production') {
+// // 读取 manifest.json ,修改后重新写入
+// const fs = require('fs');
+// const manifestPath = './src/manifest.json';
+// let Manifest = fs.readFileSync(manifestPath, { encoding: 'utf-8' });
+// function replaceManifest(path: string, value: any) {
+// const arr = path.split('.');
+// const len = arr.length;
+// const lastItem = arr[len - 1];
+
+// let i = 0;
+// let ManifestArr = Manifest.split(/\n/);
+
+// for (let index = 0; index < ManifestArr.length; index++) {
+// const item = ManifestArr[index];
+// if (new RegExp(`"${arr[i]}"`).test(item)) ++i;
+// if (i === len) {
+// const hasComma = /,/.test(item);
+// ManifestArr[index] = item.replace(new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`), `"${lastItem}": ${value}${hasComma ? ',' : ''}`);
+// break;
+// }
+// }
+
+// Manifest = ManifestArr.join('\n');
+// }
+// let Data1 = new Date().toLocaleDateString();
+// let Data2 = new Date().toLocaleTimeString();
+// let Data_ = Data1.replace(/\//g, '-') + ' ' + Data2;
+// // 使用
+// replaceManifest('description', JSON.stringify(`app平台-${Data_}`));
+// replaceManifest(
+// 'versionName',
+// JSON.stringify(
+// String(Number(JSON.parse(Manifest).versionCode) + 1)
+// .split('')
+// .join('.')
+// )
+// );
+// replaceManifest('versionCode', JSON.stringify(String(Number(JSON.parse(Manifest).versionCode) + 1)));
+// fs.writeFileSync(manifestPath, Manifest, { flag: 'w' });
+// }
+
// https://vitejs.cn/config/
export default ({ mode }: ConfigEnv): UserConfig => {
const root = process.cwd();