407 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 安装
- 1.安装pnpm
```shell
npm install -g pnpm
```
- 2.安装依赖
```shell
pnpm i
```
## 运行
- 1.开发环境启动
```shell
pnpm dev
```
## 打包
```shell
pnpm build
```
## 提交代码前先格式代码
```shell
pnpm lint
```
## 目录结构
```
├── .vscode # IDE 工具推荐配置文件
│ │ ├── extensions.json # 一键安装 vscode 插件
│ │ ├── settings.json # 设置扩展程序或 vscode 编辑器的一些属性
│ │ ├── vue3.0.code-snippets # vue3.0 代码片段
│ │ └── vue3.2.code-snippets # vue3.2 代码片段
│ │ └── vue3.3.code-snippets # vue3.3 代码片段
├── build # 构建工具
│ │ ├── cdn.ts # 打包时采用 cdn 模式
│ │ ├── compress.ts # 打包时启用 gzip 压缩或 brotli 压缩
│ │ ├── info.ts # 输出打包信息(大小、用时)
│ │ ├── optimize.ts # vite 依赖预构建配置项
│ │ ├── plugins.ts # vite 相关插件存放处
│ │ ├── utils.ts # 构建工具常用方法抽离
├── locales # 国际化文件存放处
│ │ ├── en.yaml # 英文配置
│ │ ├── zh-CN.yaml # 中文配置
├── node_modules # 模块依赖
├── public # 静态资源
│ │ ├── audio # 音频文件
│ │ ├── html # 静态 iframe 页面
│ │ ├── wasm # wasm 文件以及胶水代码
│ │ ├── favicon.ico # favicon
│ │ ├── logo.svg # logo
│ │ ├── platform-config.json # 全局配置文件(打包后修改也可生效)
├── src
│ ├── api # 接口请求统一管理
│ ├── assets # 字体、图片等静态资源
│ ├── components # 自定义通用组件
│ │ ├── ReAnimateSelector # [animate.css](https://animate.style/) 选择器组件
│ │ ├── ReAuth # 按钮级别权限组件
│ │ ├── ReCol # 封装 element-plus 的 el-col 组件
│ │ ├── ReCountTo # 数字动画组件
│ │ ├── ReCropper # 图片裁剪组件
│ │ ├── ReDialog # 基于 element-plus 中 el-dialog 组件开发的函数式弹框
│ │ ├── ReIcon # 图标组件
│ │ ├── ReImageVerify # 图形验证码组件
│ │ ├── RePureTableBar # 配合 `@pureadmin/table` 实现快速便捷的表格操作 https://github.com/pure-admin/pure-admin-table */
│ │ ├── ReSegmented # 分段控制器组件
│ │ ├── ReText # 支持 Tooltip 提示的文本省略组件
│ │ ├── ReTypeit # 打字机效果组件
│ ├── config # 获取平台动态全局配置
│ ├── directives # 自定义指令
│ │ ├── auth # 按钮级别权限指令
│ │ ├── copy # 文本复制指令(默认双击复制)
│ │ ├── longpress # 长按指令
│ │ ├── optimize # 防抖、节流指令
│ ├── layout # 主要页面布局
│ ├── plugins # 处理一些库或插件,导出更方便的 api
│ ├── router # 路由配置
│ ├── store # pinia 状态管理
│ ├── style # 全局样式
│ │ ├── dark.scss # 暗黑模式样式适配文件
│ │ ├── element-plus.scss # 全局覆盖 element-plus 样式文件
│ │ ├── reset.scss # 全局重置样式文件
│ │ ├── sidebar.scss # layout 布局样式文件
│ │ ├── tailwind.css # tailwindcss 自定义样式配置文件
│ │ ├── ...
│ ├── utils # 全局工具方法
│ │ ├── http # 封装 axios 文件
│ │ ├── localforage # 二次封装 localforage (https://localforage.docschina.org/) 支持设置过期时间,提供完整的类型提示
│ │ ├── progress # 封装 nprogress
│ │ └── auth.ts # 处理用户信息和 token 相关
│ │ └── chinaArea.ts # 汉字转区域码
│ │ └── globalPolyfills.ts # 解决项目可能因为安装某个依赖出现 `global is not defined` 报错
│ │ └── message.ts # 消息提示函数
│ │ ├── mitt.ts # 触发公共事件,类似 EventBus
│ │ ├── preventDefault.ts # 阻止键盘F12、浏览器默认右键菜单、页面元素选中、图片默认可拖动的方法
│ │ ├── print.ts # 打印函数
│ │ ├── propTypes.ts # 二次封装 vue 的 propTypes
│ │ ├── responsive.ts # 全局响应式 storage 配置
│ │ ├── sso.ts # 前端单点登录逻辑处理
│ │ ├── tree.ts # 树结构相关处理函数
│ ├── views # 存放编写业务代码页面
│ ├── App.vue # 入口页面
│ ├── main.ts # 入口文件
├── types # 全局 TS 类型配置
│ │ ├── global-components.d.ts # 自定义全局组件获得 Volar 提示(自定义的全局组件需要在这里声明下才能获得 Volar 类型提示哦)
│ │ ├── global.d.ts # 全局类型声明,无需引入直接在 `.vue` 、`.ts` 、`.tsx` 文件使用即可获得类型提示
│ │ ├── index.d.ts # 此文件跟同级目录的 global.d.ts 文件一样也是全局类型声明,只不过这里存放一些零散的全局类型,无需引入直接在 .vue 、.ts 、.tsx 文件使用即可获得类型提示
│ │ ├── router.d.ts # 全局路由类型声明
│ │ ├── shims-tsx.d.ts # 该文件是为了给 .tsx 文件提供类型支持,在编写时能正确识别语法
│ │ └── shims-vue.d.ts # .vue、.scss 文件不是常规的文件类型typescript 无法识别,所以我们需要通过下图的代码告诉 typescript 这些文件的类型,防止类型报错
├── .browserslistrc # 配置目标浏览器的环境
├── .dockerignore # 排除不需要上传到 docker 服务端的文件或目录
├── .editorconfig # 编辑器读取文件格式及样式定义配置 https://editorconfig.org/
├── .env # 全局环境变量配置(当 .env 文件与 .env.development、.env.production、.env.staging 这三个文件之一存在相同的配置 key 时,.env 优先级更低)
├── .env.development # 开发环境变量配置
├── .env.production # 生产环境变量配置
├── .env.staging # 预发布环境变量配置
├── .eslintignore # eslint 语法检查忽略文件
├── .gitattributes # 自定义指定文件属性
├── .gitignore # git 提交忽略文件
├── .gitpod.yml # gitpod 部署配置
├── .lintstagedrc # lint-staged 配置
├── .markdownlint.json # markdown 格式检查配置
├── .npmrc # npm 配置文件
├── .nvmrc # 用于指定在使用 Node Version ManagerNVM时要使用的特定 Node.js 版本
├── .prettierignore # prettier 语法检查忽略文件
├── .prettierrc.js # prettier 插件配置
├── .stylelintignore # stylelint 语法检查忽略文件
├── commitlint.config.js # git 提交前检查配置
├── Dockerfile # 用来构建 docker 镜像
├── eslint.config.js # eslint 语法检查配置
├── index.html # html 主入口
├── LICENSE # 证书
├── package.json # 依赖包管理以及命令配置
├── pnpm-lock.yaml # 依赖包版本锁定文件
├── postcss.config.js # postcss 插件配置
├── README.md # README
├── stylelint.config.js # stylelint 配置
├── tailwind.config.ts # tailwindcss 配置
├── tsconfig.json # typescript 配置
└── vite.config.ts # vite 配置
```
## 程序员必备技能之 `Git`
### 常用命令
#### 拉取代码
```sh
git clone xxx.git
```
#### 创建分支
```sh
git branch dev
# or
git checkout -b dev
# or
git switch -c dev
```
#### 切换本地分支
```sh
git checkout dev
# or
git switch dev
```
#### 切换分支并关联远程分支
```sh
git checkout -b dev origin/dev
# or
git checkout --track origin/dev
```
#### 查看本地所有分支
```sh
git branch
```
#### 查看远程所有分支
```sh
git branch -r
```
#### 删除本地分支
```sh
git branch -d dev
```
#### 删除远程分支
```sh
git push origin -d dev
```
#### 将代码从工作区添加暂存区
```sh
git add .
```
#### 查看尚未暂存的更新
```sh
git diff
```
#### 添加提交信息(`commit` 注释写错,执行 `git commit --amend` 此时会进入默认 `vim` 编辑器,修改注释后保存)
```sh
git commit -m 'xxxx'
```
#### 推送代码到远程分支
```sh
git push origin dev
# 强制推送(常在 git rebase 或 git reset 后使用)
git push -f origin dev
```
#### 拉取远程分支代码
```sh
git pull origin dev
```
#### 合并分支
```sh
git merge dev
```
#### 查看 `git` 状态
```sh
git status
```
#### 查看提交历史
```sh
git log
```
#### 查看可引用的历史版本记录
```sh
git reflog
```
#### 把本地未 `push` 的分叉提交历史整理成直线
```sh
git rebase origin/dev
```
#### 回到 `rebase` 执行之前的状态
```sh
git rebase --abort
```
#### 回退版本
```sh
# 回退指定 commit_id 版本
git reset --hard commit_id
# 回退上一个版本
git reset --soft HEAD^
# or
git reset --soft HEAD~1
```
#### 撤销代码
```sh
git revert commit_id
```
#### 修改分支名
```sh
# 第一步
git branch -m oldBranchName newBranchName
# 第二步
git push origin :oldBranchName
# 第三步
git push --set-upstream origin newBranchName
```
#### 查看 `git` 配置
```sh
# 查看全局配置
git config --global --list
# 查看用户名
git config --global user.name
```
#### 添加用户名
```sh
git config --global --add user.name newName
```
#### 删除用户名
```sh
git config --global --unset user.name
```
#### 修改用户名
```sh
git config --global user.name newName
```
#### 配置 `Git` 用户名和邮箱
```sh
# 用户名
git config --global user.name "Your Name"
# 邮箱
git config --global user.email "email@example.com"
```
#### 统计代码行数
```sh
git ls-files | xargs wc -l
```
#### 文件或文件夹重命名
`Git` 在 `Windows` 和 `macOS` 的默认文件系统中对文件大小写修改是不敏感的。可能你会先删除文件并提交,然后再新建文件再提交,这样做很麻烦,下面的 `git mv` 就简化了繁琐的操作
比如文件 `filename.ts` 或文件夹 `jsutils`,它们的相对路径分别是 `src/filename.ts` 和 `src/jsutils`
```sh
# 将 filename.ts 文件重命名为 fileName.ts分下面两步
# 第一步(注意下面的 name.ts 与 filename.ts 是不同的,如果你把 name.ts 改为 fileName.ts 是不行的,因为上面讲了仅大小写不同是不行的)
git mv src/filename.ts src/name.ts
# 第二步
git mv src/name.ts src/fileName.ts
# 将 jsutils 文件夹重命名为 jsUtils分下面两步
# 第一步
git mv src/jsutils src/utils
# 第二步
git mv src/utils src/jsUtils
```
## 提交规范
[相关参考](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular)
`feat: 增加新功能`
`fix: 修复问题/BUG`
`style: 代码风格相关无影响运行结果的`
`perf: 优化/性能提升`
`refactor: 重构`
`revert: 撤销修改`
`test: 测试相关`
`docs: 文档/注释`
`chore: 依赖更新/脚手架配置修改等`
`workflow: 工作流改进`
`ci: 持续集成`
`types: 类型定义文件更改`
`wip: 开发中`
## `CodeReview` 常用缩写
`PR`Pull Request拉取请求给其他项目提交代码
`LGTM`Looks Good To Me代码已经过 review可以合并
`SGTM`Sounds Good To Me和上面那句意思差不多也是已经通过了 review 的意思
`WIP`Work In Progress如果有个改动很大的 PR可以在写了一部分的情况下先提交但需在标题写上 WIP以告诉项目维护者这个功能还未完成方便维护者提前 review 部分提交的代码
`PTAL`Please Take A Look提示别人来看一下
`TBR`To Be Reviewed提示维护者进行 review
`TL;DR`Too Long; Didn't Read太长懒得看
`TBD`To Be Done(or Defined/Discussed/Decided/Determined) 一般表示还没搞定
[简单易懂的 Git](https://www.bilibili.com/video/BV1KZ4y1o7gr/?p=1&vd_source=5a992808de6229d78e7810536c5f9ab3)<Badge text="视频教程推荐"/>