# workinghours
**Repository Path**: edeneden/workinghours
## Basic Information
- **Project Name**: workinghours
- **Description**: 武汉项目本地部署仓库
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-06
- **Last Updated**: 2023-11-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 说明
本框架支持node16+构建,已接入天启,扁鹊和quark。
天启引用 src/utils/ubt.js 参考文档:https://hellobike.yuque.com/gzxsb9/gdvwvw/kegdas
扁鹊引用 src/utils/apm.js 参考文档:https://hellobike.yuque.com/gzxsb9/gdvwvw/itybxd
## 开始
## HellobileFE React 通用后台模板
* [快速上手](#quickStart)
* [开发目录介绍](#dirs)
* [注意事项](#notes)
* [常用配置说明](#settings)
* [HTML自定义配置](#settings-01)
* [路由权限](#settings-02)
* [CDN链接引入](#settings-03)
* [环境变量定义](#settings-04)
* [编译速度优化](#compile)
* [代码检查](#lint)
* [版本管理](#version)
* [MOCK API](#mock)
* [相关资料](#links)
### 快速上手:
```bash
npm i // 安装依赖
npm run dev // 启动项目
npm run build // 生产环境打包
npm run analyze // 包体积分析
npm run eslint:fix // 代码检查&修复
npm run stylelint:fix
```
### 开发目录介绍
```
├── api ------------------- 对接服务端接口
├── components ------------ 通用组件目录
├── config ---------------- 配置目录
│ ├── env.ts ----------- 不同环境的常量配置
│ ├── layout.ts -------- 界面配置
│ └── routes.ts -------- 路由配置
├── global.less ----------- 全局样式文件
├── locales --------------- 国际化相关目录
├── models ---------------- 全局共享数据配置目录
├── pages ----------------- 页面组件目录
└── utils ----------------- 通用工具方法目录
│ └── request ---------- 请求方法目录
├── app.tsx --------------- umi运行时配置(不建议改动)
└── access.ts ------------- umi权限相关配置(不建议改动)
```
### 注意事项
除文档说明的配置外, 尽量不要修改`src/app.tsx`、`src/access.ts`、`.umirc.ts`这三个文件
环境变量 `REACT_APP_ENV` 用于标识业务环境, 影响api接口配置等
### 常用配置说明
#### HTML自定义配置
按照 umi 的约定, 以 `src/pages/document.ejs` 文件为应用的html模板, 文件内可以通过 ejs模板语法访问 umi 提供的变量 `<%=` `%>`;参考 [Umi 基础 - HTML 模板](https://umijs.org/zh-CN/docs/html-template)
#### 路由权限
约定 `src/access.ts`为权限定义文件, 在项目启动时根据路由`config/routes.ts`配置的 actionId 判断该路由是否展示;其中 initialState 由`src/app.tsx`导出的 getInitialState 获取;参考 [Umi 插件 - @umijs/plugin-access](https://umijs.org/zh-CN/plugins/plugin-access)
#### CDN链接引入
* 从`.umirc`的一级配置项 scripts 定义 (推荐)
* 在自定义HTML模板 `src/pages/document.ejs` 中加入 (不支持动态引入)
建议以第一种方式为主,避免混淆
#### 环境变量定义
从`.umirc`的一级配置项 define 添加; 参考 [Umi 配置 - define](https://umijs.org/zh-CN/config#define)
### 编译速度优化
* ***webpack5持久缓存*** - 对于非首次构建的情况, 只重新编译内容改变的 chunk, 其它 chunk 使用缓存 (开发环境默认开启);
* ***MFSU(Module Federation Speed Up)*** - 基于 webpack5 新特性"模块联邦"独立打包并缓存`node_modules`的依赖, 后续构建不再重新编译这些依赖模板;
**缺点:** 安装/删除依赖包后需要手动清缓存`src/.umi/.cache/.mfsu` 如果开启webpack5持久缓存的基础上还有部分模块重新编译速度慢, 可以考虑开启
* ***CDN外链*** 比较稳定的依赖可以替换成 CDN 外链脚本, 定义在`.umirc`的 scripts/externals 配置项, 缩小每次构建编译范围; 示例:
``` javascript
// 定义外链脚本
scripts: process.env.NODE_ENV === 'development' ? [
'https://m.hellobike.com/npm/react@17.0.2/umd/react.development.js',
'https://m.hellobike.com/npm/react-dom@17.0.2/umd/react-dom.development.js',
'https://m.hellobike.com/npm/axios@0.20.0/dist/axios.min.js',
...
] : [
'https://m.hellobike.com/npm/react@17.0.2/umd/react.production.min.js',
'https://m.hellobike.com/npm/react-dom@17.0.2/umd/react-dom.production.min.js',
'https://m.hellobike.com/npm/axios@0.20.0/dist/axios.min.js',
...
],
...
// 定义不打包的模块
externals: {
'react': 'window.React',
'react-dom': 'window.ReactDOM',
'axios': 'window.axios',
...
},
```
### 代码检查
整个应用会基于 [@hb/codestyle-linter](https://gitlab.hellobike.cn/Carfee/codestyle-linter) 提供的规则检测代码是否符合公司统一语法规范.
* 每次`git commit`的时候会分别执行`eslint` `stylelint` `commitlint`的检查, 全都通过后才能 commit 成功;
* 每次保存文件时会启动`eslint` `stylelint`的格式自动修复, 或者可以手动执行 scripts 脚本批量修复.
### 版本管理
应用会根据`package.json`的 version 字段匹配上传的 publicPath 以及页面路径. 发布新版本前可以执行 `npm run release`, 基于 [standard-version](https://github.com/conventional-changelog/standard-version) 自动生成一个 commit 修改 version 字段并打上标签
### MOCK API
默认使用`umi` dev server 内置的 mock 能力, 约定式 mock 数据定义请参考 [Umi 基础 - Mock 数据](https://umijs.org/zh-CN/docs/mock)
开发环境将环境参数`MOCK`设置成 **on** 可以将所有请求转发到 dev server 的 mock api, 设置成 **none** 则不使用 mock api
### 相关资料
[脚手架文档地址](https://hellobike.yuque.com/gzxsb9/gdvwvw/dauv75)
[umi文档地址](https://umijs.org/zh-CN/docs)