407 lines
12 KiB
Markdown
407 lines
12 KiB
Markdown
|
||
## 安装
|
||
|
||
- 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 Manager(NVM)时要使用的特定 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="视频教程推荐"/>
|