# xyq **Repository Path**: LAMMUpro/xyq ## Basic Information - **Project Name**: xyq - **Description**: xyq - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-21 - **Last Updated**: 2025-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 介绍 xxxxxxxxxxxxxxxx ### 特性 - ✅ xxx - 🧙‍xxx - 🐎 xxx - 🍃 xxx - 🐻 xxx - 🔋xxx - 🥃 xxx - ⚡️ xxx - 👀 xxx ## 快速开始 项目依赖了[dto-to-zod库](https://gitee.com/LAMMUpro/dto-to-zod),需要使用monorepo管理 **安装pnpm** ```sh npm i -g pnpm ``` **xxxx** ```sh git clone https://github.com/LAMMUpro/xxx.git cd ./xxx # 配置生效 pnpm run set:config pnpm i pnpm generate pnpm ``` ## 常用接口 **[组件调试(preact环境)](http://localhost:5173/src/components/wc-button/index.test.html) button组件调试👈** **后端接口 [http://localhost:9000/]() xxx👈** **数据库web [http://localhost:7777/]() xxx👈** **swagger文档 [http://localhost:9000/swagger/]() xxx👈** **swagger-json [http://localhost:9000/swagger-json/]() xxx👈** **swagger-yaml [http://localhost:9000/swagger-yaml/]() xxx👈** ## 默认开发环境 电脑系统: `Mac` node版本: `18.18.0` 包管理器: `pnpm` (必需) 代码运行器: `ts-node` | `tsx` 编辑器: `vscode` ## 相关技术 数据库: mysql 文件存储: oss 数据库操作 - prisma 打包工具 - ncc 部署 - serveless linux环境 - wsl(windows下用, 可解决一些问题) 本地数据库管理工具 - DBeaver(非必需) 在线数据库管理工具 - [阿里云DMS(非必需)](https://dms.aliyun.com/?accounttraceid=eb2c16205f144e8eb57462349eb6ed71syaa) ## 目录结构 ```sh dist # yarn build 产物目录 build # yarn ncc 产物目录 prisma # prisma配置 - api # 自动生成的api, 供前端使用, yarn generate:api 可重新生成 - controller # 自动生成的controller, 供后端使用(手动复制), yarn generate:controller 可重新生成 - dto # !!!自动生成的dto ts类型, 供后端使用(软链接), yarn generate:dto 可重新生成 - migrations # prisma migrate记录 - generateApi.ts # 生成api的脚本 - generateController.ts # 生成controller的脚本 - generateDto.ts # 生成dto的脚本 - prisma.service.ts # PrismaService, 供import导入使用 - schema.dbml # dbdocs生成的dbml - schema.prisma # !!!数据库配置 scripts # shell脚本 - generate_module.sh # yarn generate:module执行的命令 - s_deploy.sh # 部署脚本, yarn deploy:xxx 执行的命令 - watchPrismaSchema.ts # yarn watch执行的命令 src - types - dto # 前后端公用, 文件名格式: `${model.name}.dto.ts`, 该文件夹后续由prisma.schema代码生成, 不要在这个文件夹修改内容!!!如果需要扩展类型在./dtoExt里面写 - dtoExt # 前后端公用, 文件名格式: `${model.name}.dto.ts` - entrity # 后端自己用的类型, 如果提升到公用, 移到dotExt文件夹 .env # !!!环境变量 .fcignore # 上传serveless黑名单 .s[.xxx].yaml # !!!serveless部署配置 webpack.config.js # webpack打包配置 ``` ## 开发规范 \- 文件名不要有空格!!! **ts类型定义** 前端: 列表项(item)、详情(detail) 前端增删查改 add remove find edit 后端增删查改 insert delete selete update js脚本统一用ESN ## 项目配置 **项目配置文件`.env`**(必需) 放项目根目录下**(不存在需要手动创建)** ```yaml ########################## 公共配置 ########################## author=Lammu ############################################################# ########################## 开发环境 ########################## JWT_Key=${JWT_Key_test} JWT_Secret=${JWT_Secret_test} DATABASE_URL=${DATABASE_URL_test} ## OSS存储 OSS_Region=${OSS_Region_test} OSS_Bucket=${OSS_Bucket_test} OSS_RAM_AccessKey_ID=${OSS_RAM_AccessKey_ID_test} OSS_RAM_AccessKey_Secret=${OSS_RAM_AccessKey_Secret_test} ############################################################# ########################## 测试环境 ########################## ## jwt JWT_Key_test=${JWT_Key_master}_test JWT_Secret_test=${JWT_Secret_master}_test ## 数据库 DATABASE_URL_test=${DATABASE_URL_master}_test ## OSS存储 OSS_Region_test=${OSS_Region_master} OSS_Bucket_test=${OSS_Bucket_master}-test OSS_RAM_AccessKey_ID_test=${OSS_RAM_AccessKey_ID_master} OSS_RAM_AccessKey_Secret_test=${OSS_RAM_AccessKey_Secret_master} ############################################################# ########################## 预发环境 ########################## ## jwt JWT_Key_pre=${JWT_Key_master}_pre JWT_Secret_pre=${JWT_Secret_master}_pre ## 数据库 DATABASE_URL_pre=${DATABASE_URL_master}_pre ## OSS存储 OSS_Region_pre=${OSS_Region_master} OSS_Bucket_pre=${OSS_Bucket_master}-pre OSS_RAM_AccessKey_ID_pre=${OSS_RAM_AccessKey_ID_master} OSS_RAM_AccessKey_Secret_pre=${OSS_RAM_AccessKey_Secret_master} ############################################################# ########################## 正式环境 ########################## ## jwt JWT_Key_master="kfcvm50" JWT_Secret_master="dghjfsdfetreytxtyhrhtru" ## 数据库 DATABASE_URL_master="mysql://root:sh1du237847@46.172.221.36:7555/user-center" ## OSS存储 OSS_Region_master="oss-cn-shenzhen" OSS_Bucket_master="user-center" OSS_RAM_AccessKey_ID_master="xxxxxxxxxxxxxxxxxxxxxxxx" OSS_RAM_AccessKey_Secret_master="xxxxxxxxxxxxxxxxxxxxxxxx" ``` **项目忽略大小写**(项目根目录下运行) ```sh git config core.ignorecase false # 在项目根目录中执行 ``` ## 命令说明 ## 脚本运行顺序 ## 开发 ## 打包 ## 部署 后端部署到宝塔,通过宝塔面板,网站->Node项目-> 本质是在/www/wwwroot/xyq-nest下使用git拉取项目后运行 前端部署到宝塔,通过宝塔面板,网站->PHP项目 本质是在本地编译后,将产物上传到 /www/wwwroot/xyq23.cn ## CI/CD ## 常见问题 ### SWC vs webpack差异 ```tsx // webpack import * as OSS from 'ali-oss'; // SWC import { default as OSS } from 'ali-oss'; // 兼容写法 import * as OSS from 'ali-oss'; new ((OSS).default || OSS)() ``` ### TypeError: (0 , J.default) is not a function 报错代码 ```tsx import ms from 'ms'; ms('3m') ``` 解决方案 tsconfig.json添加`"esModuleInterop": true`配置 ## 分支说明 `x.y.z` - 版本分支 `dev` - 开发分支 `test` - 测试分支 `pre` - 预发分支 `master` - 主分支 ## 更新说明 - 5.6.1(2023.9.28) - xxx - xxx - 5.4.1(2023.6.9) - xxx - xxx