# cli-template-source
**Repository Path**: soulkey3/cli-template-source
## Basic Information
- **Project Name**: cli-template-source
- **Description**: 脚手架模板源代码
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-09-14
- **Last Updated**: 2025-06-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 开发文档
请严格遵守DDD 领域驱动 开发
## 页面模板代码
页面模板代码直接复制使用
views/basic-config/
## 开发环境
**Node20.11.1、pnpm@latest**
## 技术栈
**Vite@5、Vue@3+、Typescript@5、tailwind.css、pina@2、vue-router@4、element-plus@2.8+**
## !开始开发
开发前请先在项目中添加文件 .env.development.local
且不可传入gitlab(.local优先级最高,会覆盖CICD各环境的配置文件),已配置gitignore,知晓即可。各个项目
```plain
VITE_BASE_API='/regionadm/api'
VITE_PROXY_TARGET = "http://tcwireless.qa.17usoft.com"
VITE_CLIENT_ID = 'tc-union-store-webui.test'
VITE_REDIRECT_URL = 'http://localhost:5173/regionadm/#/login'
VITE_OA_API = 'http://tccommon.qas.17usoft.com/oauth/authorize'
```
0. 复制下方代码执行 新建.env.development.local
```sh
echo ` VITE_BASE_API='/regionadm/api'
VITE_PROXY_TARGET = "http://tcwireless.qa.17usoft.com"
VITE_CLIENT_ID = 'tc-union-store-webui.test'
VITE_REDIRECT_URL = 'http://localhost:5173/regionadm/#/login'
VITE_OA_API = 'http://tccommon.qas.17usoft.com/oauth/authorize' ` > .env.development.local
```
1. 检查Node是不是20.11.1和全局安装了pnpm
2. 已安装pnpm忽略该步骤。全局安装 **npm i pnpm -g**
3. pnpm i
4. pnpm dev
5. 项目启动
6. 修改项目的key
- 修改config.global.ts 项目公共配置
- 修改统一权限的clientId和回调地址,在.env.xxx相关文件修改
- 修改base路径 在vite.config.ts修改
- 修改package.json的name字段,防止打包冲突
- 修改nginx配置文件,location /xxx
- 修改开发服务器代理,即可调通接口 server.proxy
## 指令说明
- **pnpm dev** 启动项目 --host 参数可以暴露内网ip供外机访问
- **pnpm build:qa** QA环境打包
- **pnpm build:stage** 预发环境打包
- **pnpm build:prod** 生产环境打包
- **pnpm preview** 本地预览打包产物 占用4173端口
- **pnpm type-check** 运行ts类型检查
- **pnpm lint** 运行eslint检查
- **pnpm format** 全局格式化文件样式,会按照prettier配置来,保证了多人开发的代码风格统一
## 权限配置
roles字段为[*],表示该路由对所有用户开放。
按照需求,填入【统一权限】的表示。
### 1.页面路由权限:
```plain
{
path: '/dashboard/workplace',
name: 'Workplace',
component: () => import('@/views/dashboard/views/workplace/index.vue'),
meta: {
title: '工作台',
needLogin: true,
alive: true,
menu: true,
roles: ['*']
}
}
```
### 2.按钮、页面元素权限
在组件中使用v-permission指令,传入权限标识数组。
例如:运营、管理员等。
例如:
```html
新增
```
极端动态,如for循环出来的页面元素
例如:
```html
```
## 工程文件
- src 工程入口
- assets 静态资源
- components 项目组件
- directive 自定义指令
- filters 自定义过滤器
- hooks 自定义hook
- layout 页面整体布局
- model 接口数据层——全局
- router 路由入口
- stores 全局缓存
- styles 样式文件
- types 类型声明
- utils 工具包
- views 业务代码入口
- App.vue Vue入口文件
- config.global.ts 全局配置
- main.ts js入口,优先级大于App.vue
- permission.ts 路由权限拦截器
- public 对外可访问静态资源 最终一起打包到dist,一般不动
- .env.development Qa环境配置文件
- .env.development.local 本地开发环境变量
- .env.production 上产环境变量
- .env.stage 语法环境变量
- .eslintcache eslint缓存 不用看
- .eslintrc.cjs eslint配置文件,**看不懂就别乱配置**
- .npmrc rc配置了npm i包的源,让源跟着项目走,保证统一性
- .prettierrc.json prettier插件配置,**看不懂就别乱配置**
- auto-imports.d.ts、components.d.ts Vue组件自动引入配置,自动生成,**别乱动**
- env.d.ts ts环境变量配置文件
- index.html Vite工程入口
- nginx.conf nginx配置 **千万别乱动!**
- package.json Node 项目配置文件
- postcss.config.js postcss配置文件
- tailwind.config.js tailwind配置文件
- tsconfig.app.json tsconfig.json tsconfig.node.json ts配置文件
- vite.config.ts Vite工程配置文件
## 项目能力
1. [x] 公共请求库,且做了重复提交的拦截。
2. [x] 代码样式统一。乱写的也会在提交时候rewrite,保证了远程仓库的代码风格一致
3. [x] 暗黑模式
4. [x] 全局功能检索
5. [x] 网页全屏
6. [x] OA登录
7. [x] 主题色,皮肤配置
8. [x] Element 组件自动引入,不需要手动import
9. [x] npmrc 包源统一阿里源
10. [ ] IE8,不支持
## DDD实践思想
在业务开发中,按照领域创建模块(参照views中的文件划分),各个领域自建**index.routes.ts(路由表)**,**view(页面文件)**,**model(接口数据层)**,**components(领域组件)**,**utils(方法)**...
思想:肯定存在代码冗余,但是保证了的项目的领域划分更加的清晰,保证了健壮性和后续迭代维护的清晰性,舍弃一定的代码精简度,保证项目后期多人开发等情况下的稳定迭代和维护。