Merge pull request #137 from apefuu/v2.0

Upgrade web Toolchain and update web docs
This commit is contained in:
孟帅 2024-09-16 11:29:27 +08:00 committed by GitHub
commit 52263c608f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 9609 additions and 79 deletions

View File

@ -10,7 +10,7 @@ gf run main.go
# web端 # web端
cd web cd web
yarn dev pnpm run dev 或 npm run dev
``` ```
以下是一个关联表的CURD生成流程 以下是一个关联表的CURD生成流程

View File

@ -10,7 +10,7 @@ gf run main.go
# web端 # web端
cd web cd web
yarn dev pnpm run dev 或 npm run dev
``` ```
以下是一个基本的CURD生成流程 以下是一个基本的CURD生成流程

View File

@ -10,7 +10,7 @@ gf run main.go
# web端 # web端
cd web cd web
yarn dev pnpm run dev 或 npm run dev
``` ```
以下是一个基本的树形CURD生成流程 以下是一个基本的树形CURD生成流程

View File

@ -41,7 +41,7 @@ cd server && make build
cd server # 切换到服务端目录下 cd server # 切换到服务端目录下
rm -rf ./resource/public/admin/ # 删除之前的web资源 rm -rf ./resource/public/admin/ # 删除之前的web资源
mkdir ./resource/public/admin/ # 重新创建web资源存放目录除首次编译后续可以跳过执行此步骤 mkdir ./resource/public/admin/ # 重新创建web资源存放目录除首次编译后续可以跳过执行此步骤
cd ../web && yarn build # 切换到web项目下编译web项目 cd ../web && pnpm run build # 切换到web项目下编译web项目
\cp -rf ./dist/* ../server/resource/public/admin/ # 将编译好的web资源复制到server对应的资源存放路径下 \cp -rf ./dist/* ../server/resource/public/admin/ # 将编译好的web资源复制到server对应的资源存放路径下
cd ../server # 切换回服务端目录下 cd ../server # 切换回服务端目录下
echo "y" | gf build # 编译hotgo服务端 echo "y" | gf build # 编译hotgo服务端
@ -58,7 +58,7 @@ echo "y" | gf build # 编译hotgo服务端
# 编译web端 # 编译web端
cd web cd web
yarn build pnpm run build 或 npm run build
# web端编译完成后将web/dist/*中的文件上传到`server`端线上运行目录:/resource/public/admin即可 # web端编译完成后将web/dist/*中的文件上传到`server`端线上运行目录:/resource/public/admin即可
# 至此web端和server端都可以独立覆盖更新 # 至此web端和server端都可以独立覆盖更新

View File

@ -11,8 +11,8 @@
1. 前往https://nodejs.org/zh-cn/下载当前版本node 1. 前往https://nodejs.org/zh-cn/下载当前版本node
2. 命令行运行 `node -v` 若控制台输出版本号则node安装成功 2. 命令行运行 `node -v` 若控制台输出版本号则node安装成功
3. node 版本需大于等于 `16.0` 3. node 版本需大于等于 `16.0`
4. 安装yarn`npm install -g yarn` 4. 安装pnpm`npm install -g pnpm`
5. 命令行运行 `yarn -v` 若控制台输出版本号则前端环境搭建成功 5. 命令行运行 `pnpm -v` 若控制台输出版本号则前端环境搭建成功
### 后端环境 ### 后端环境
1. 下载golang安装 版本号需>=1.21 1. 下载golang安装 版本号需>=1.21

View File

@ -88,13 +88,13 @@ gfcli:
2、web前端 2、web前端
```shell script ```shell script
cd web cd web
# 首先确定你以安装node16.0以上版本并安装了包[npm、yarn],否则可能会出现一些未知报错 # 首先确定你以安装node16.0以上版本并安装了包[npm、pnpm],否则可能会出现一些未知报错
# 安装依赖 # 安装依赖
yarn install pnpm install
# 启动web项目 # 启动web项目
yarn dev pnpm run dev
# 如果顺利至此到浏览器打开http://你的IP:8001/admin # 如果顺利至此到浏览器打开http://你的IP:8001/admin
# 登录账号admin, 密码123456 # 登录账号admin, 密码123456

View File

@ -128,7 +128,7 @@ gfcli:
### 生成CRUD表格 ### 生成CRUD表格
- 推荐使用热编译方式启动HotGo这样生成完成页面自动刷新即可看到新生成内容无需手动重启 - 推荐使用热编译方式启动HotGo这样生成完成页面自动刷新即可看到新生成内容无需手动重启
- 服务端热编译启动:`gf run main.go`, web前端启动`yarn dev` - 服务端热编译启动:`gf run main.go`, web前端启动`pnpm run dev` 或 `npm run dev`
1、创建数据表 1、创建数据表

View File

@ -15,7 +15,7 @@
项目开发完成之后,执行以下命令进行构建 项目开发完成之后,执行以下命令进行构建
```shell ```shell
yarn build pnpm run build 或 npm run build
``` ```
构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件 构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件
@ -40,15 +40,15 @@ VITE_LEGACY = true
使用项目自定的命令进行预览(推荐) 使用项目自定的命令进行预览(推荐)
```shell ```shell
# 先打包在进行预览 # 先打包在进行预览
yarn preview pnpm run preview 或 npm run preview
# 直接预览本地 dist 文件目录 # 直接预览本地 dist 文件目录
yarn preview:dist pnpm run preview:dist 或 npm run preview:dist
``` ```
- 本地服务器预览(通过 live-server) - 本地服务器预览(通过 live-server)
```shell ```shell
# 1.全局安装live-server # 1.全局安装live-server
yarn global add live-server npm -g install live-server
# 2. 进入打包的后目录 # 2. 进入打包的后目录
cd ./dist cd ./dist
# 本地预览默认端口8080 # 本地预览默认端口8080
@ -60,7 +60,7 @@ live-server --port 9000
### 分析构建文件体积 ### 分析构建文件体积
如果你的构建文件很大,可以通过项目内置 [rollup-plugin-analyzer](https://github.com/doesdev/rollup-plugin-analyzer) 插件进行代码体积分析,从而优化你的代码。 如果你的构建文件很大,可以通过项目内置 [rollup-plugin-analyzer](https://github.com/doesdev/rollup-plugin-analyzer) 插件进行代码体积分析,从而优化你的代码。
```shell ```shell
yarn report pnpm run report 或 npm run report
``` ```
运行之后,在自动打开的页面可以看到具体的体积分布,以分析哪些依赖有问题。 运行之后,在自动打开的页面可以看到具体的体积分布,以分析哪些依赖有问题。

View File

@ -9,7 +9,7 @@ ADMIN_RESOURCE_PATH = "/resource/public/admin/"
build: build:
@rm -rf ./$(ADMIN_RESOURCE_PATH) @rm -rf ./$(ADMIN_RESOURCE_PATH)
@mkdir ./$(ADMIN_RESOURCE_PATH) @mkdir ./$(ADMIN_RESOURCE_PATH)
@cd ../web && yarn build && \cp -rf ./dist/* ../server$(ADMIN_RESOURCE_PATH) @cd ../web && pnpm run build && \cp -rf ./dist/* ../server$(ADMIN_RESOURCE_PATH)
@cd ../server @cd ../server
@echo "y" | gf build @echo "y" | gf build
@ -37,7 +37,7 @@ auth:
# 启动web服务 # 启动web服务
.PHONY: web .PHONY: web
web: web:
@cd ../web && yarn dev @cd ../web && pnpm run dev
# 刷新casbin权限 # 刷新casbin权限
.PHONY: refresh .PHONY: refresh

View File

@ -1,7 +1,7 @@
{ {
"name": "hotgo", "name": "hotgo",
"type": "module", "type": "module",
"version": "2.15.7", "version": "2.15.8",
"author": { "author": {
"name": "MengShuai", "name": "MengShuai",
"email": "133814250@qq.com", "email": "133814250@qq.com",
@ -9,106 +9,116 @@
}, },
"private": true, "private": true,
"scripts": { "scripts": {
"bootstrap": "yarn install", "bootstrap": "pnpm install",
"serve": "npm run dev", "serve": "pnpm run dev",
"dev": "vite", "dev": "vite",
"build": "vite build && esno ./build/script/postBuild.ts", "build": "vite build && esno ./build/script/postBuild.ts",
"build:no-cache": "yarn clean:cache && npm run build", "build:no-cache": "pnpm clean:cache && pnpm run build",
"report": "cross-env REPORT=true npm run build", "report": "cross-env REPORT=true pnpm run build",
"preview": "npm run build && vite preview", "preview": "pnpm run build && vite preview",
"preview:dist": "vite preview", "preview:dist": "vite preview",
"clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite", "clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
"clean:lib": "rimraf node_modules", "clean:lib": "rimraf node_modules",
"build typecheck": "vuedx-typecheck . && vite build",
"deploy": "gh-pages -d dist", "deploy": "gh-pages -d dist",
"lint:eslint": "eslint \"{src,mock}/**/*.{vue,ts,tsx}\" --fix", "lint:eslint": "eslint \"{src,mock}/**/*.{vue,ts,tsx}\" --fix",
"lint:prettier": "prettier --write --loglevel warn \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"", "lint:prettier": "prettier --write --loglevel warn \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",
"lint:stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", "lint:stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
"lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js", "lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js",
"lint:pretty": "pretty-quick --staged", "lint:pretty": "pretty-quick --staged",
"build typecheck": "vuedx-typecheck . && vite build",
"test prod gzip": "http-server dist --cors --gzip -c-1" "test prod gzip": "http-server dist --cors --gzip -c-1"
}, },
"dependencies": { "dependencies": {
"@vicons/antd": "^0.12.0", "@vicons/antd": "^0.12.0",
"@vicons/ionicons5": "^0.12.0", "@vicons/ionicons5": "^0.12.0",
"@vue/runtime-core": "^3.4.21", "@vue/runtime-core": "^3.4.38",
"@vueup/vue-quill": "^1.2.0", "@vueup/vue-quill": "^1.2.0",
"@vueuse/core": "^10.9.0", "@vueuse/core": "^11.0.3",
"axios": "^1.7.2", "axios": "^1.7.7",
"date-fns": "^2.30.0", "blueimp-md5": "^2.19.0",
"date-fns": "^3.6.0",
"echarts": "^5.5.1", "echarts": "^5.5.1",
"element-resize-detector": "^1.2.4", "element-resize-detector": "^1.2.4",
"fingerprintjs2": "^2.1.4", "fingerprintjs2": "^2.1.4",
"highlight.js": "^11.8.0", "highlight.js": "^11.10.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"mint-filter": "^4.0.3", "mint-filter": "^4.0.3",
"mitt": "^3.0.1",
"naive-ui": "^2.39.0", "naive-ui": "^2.39.0",
"pinia": "^2.1.7", "pinia": "^2.2.2",
"pinyin-pro": "^3.16.3", "pinyin-pro": "^3.24.2",
"print-js": "^1.6.0", "print-js": "^1.6.0",
"qrcode.vue": "3.3.3", "qrcode.vue": "3.4.1",
"qs": "^6.12.1", "qs": "^6.13.0",
"quill-image-uploader": "^1.3.0", "quill-image-uploader": "^1.3.0",
"quill-magic-url": "^4.2.0", "quill-magic-url": "^4.2.0",
"spark-md5": "^3.0.2", "spark-md5": "^3.0.2",
"throttle-debounce": "^5.0.0", "throttle-debounce": "^5.0.2",
"vue": "^3.4.31", "vfonts": "^0.0.3",
"vue-router": "^4.4.0", "vue": "^3.4.38",
"vue-types": "^4.2.1", "vue-router": "^4.4.3",
"vue-waterfall-plugin-next": "^2.2.3", "vue-types": "^5.1.3",
"vue-waterfall-plugin-next": "^2.6.0",
"vue3-json-viewer": "^2.2.2", "vue3-json-viewer": "^2.2.2",
"vuedraggable": "^4.1.0", "vuedraggable": "^4.1.0",
"weixin-js-sdk": "^1.6.0" "weixin-js-sdk": "^1.6.5"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^17.8.1", "@commitlint/cli": "^19.4.1",
"@commitlint/config-conventional": "^17.8.1", "@commitlint/config-conventional": "^19.4.1",
"@types/lodash": "^4.17.6", "@types/lodash": "^4.17.7",
"@types/node": "^18.19.39", "@types/node": "^22.5.2",
"@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/eslint-plugin": "^8.4.0",
"@typescript-eslint/parser": "^5.62.0", "@typescript-eslint/parser": "^8.4.0",
"@vitejs/plugin-vue": "^3.2.0", "@vitejs/plugin-vue": "^5.1.3",
"@vitejs/plugin-vue-jsx": "^2.1.1", "@vitejs/plugin-vue-jsx": "^4.0.1",
"@vue/compiler-sfc": "^3.4.31", "@vue/compiler-sfc": "^3.4.38",
"@vue/eslint-config-typescript": "^11.0.3", "@vue/eslint-config-typescript": "^13.0.0",
"autoprefixer": "^10.4.19", "autoprefixer": "^10.4.20",
"commitizen": "^4.3.0", "commitizen": "^4.3.0",
"core-js": "^3.37.1", "core-js": "^3.38.1",
"cross-env": "^7.0.3",
"crypto-js": "^4.2.0", "crypto-js": "^4.2.0",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"eslint": "^8.57.0", "eslint": "^9.9.1",
"eslint-config-prettier": "^8.10.0", "eslint-config-prettier": "^9.1.0",
"eslint-define-config": "1.12.0", "eslint-define-config": "2.1.0",
"eslint-plugin-jest": "^27.9.0", "eslint-plugin-jest": "^28.8.2",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-vue": "^9.26.0", "eslint-plugin-vue": "^9.28.0",
"esno": "^0.16.3", "esno": "^4.7.0",
"gh-pages": "^4.0.0", "gh-pages": "^6.1.1",
"husky": "^8.0.3", "husky": "^9.1.5",
"jest": "^29.7.0", "jest": "^29.7.0",
"less": "^4.2.0", "less": "^4.2.0",
"less-loader": "^11.1.4", "less-loader": "^12.2.0",
"lint-staged": "^13.3.0", "lint-staged": "^15.2.10",
"postcss": "^8.4.38", "mockjs": "^1.1.0",
"prettier": "^2.8.8", "npm-check-updates": "^17.1.1",
"pretty-quick": "^3.3.1", "postcss": "^8.4.44",
"rimraf": "^3.0.2", "prettier": "^3.3.3",
"stylelint": "^14.16.1", "pretty-quick": "^4.0.0",
"rimraf": "^6.0.1",
"stylelint": "^16.9.0",
"stylelint-config-prettier": "^9.0.5", "stylelint-config-prettier": "^9.0.5",
"stylelint-config-standard": "^29.0.0", "stylelint-config-standard": "^36.0.1",
"stylelint-order": "^5.0.0", "stylelint-order": "^6.0.4",
"stylelint-scss": "^4.7.0", "stylelint-scss": "^6.5.1",
"tailwindcss": "^3.4.4", "tailwindcss": "^3.4.10",
"typescript": "^5.3.0", "typescript": "^5.5.4",
"unplugin-vue-components": "^0.22.12", "unplugin-vue-components": "^0.27.4",
"vite": "^5.3.2", "vite": "^5.4.2",
"vite-plugin-compression": "^0.5.1", "vite-plugin-compression": "^0.5.1",
"vite-plugin-html": "^3.2.2", "vite-plugin-html": "^3.2.2",
"vite-plugin-require-transform": "^1.0.5", "vite-plugin-mock": "^3.0.2",
"vite-plugin-require-transform": "^1.0.21",
"vite-plugin-style-import": "^2.0.0", "vite-plugin-style-import": "^2.0.0",
"vite-plugin-top-level-await": "^1.2.2", "vite-plugin-top-level-await": "^1.4.4",
"vite-plugin-vue-setup-extend": "^0.4.0", "vite-plugin-vue-setup-extend": "^0.4.0",
"vue-eslint-parser": "^9.4.3" "vue-demi": "^0.14.10",
"vue-draggable-next": "^2.2.1",
"vue-eslint-parser": "^9.4.3",
"vuedraggable": "^4.1.0"
}, },
"lint-staged": { "lint-staged": {
"*.{vue,js,ts,tsx}": "eslint --fix" "*.{vue,js,ts,tsx}": "eslint --fix"

9520
web/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, ref } from 'vue'; import { defineComponent, ref } from 'vue';
import { useMessage } from 'naive-ui'; import { useMessage } from 'naive-ui';
import { isYesterday, addDays } from 'date-fns/esm'; import { isYesterday, addDays } from 'date-fns';
export default defineComponent({ export default defineComponent({
setup() { setup() {