Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 63 additions & 19 deletions packages/toolkits/pro/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,47 @@

## 说明

tiny-toolkit-pro 套件,开箱即用的中后台前端/设计解决方案
tiny-toolkit-pro 套件,开箱即用的全栈开发基础平台

## 准备工作
### 数据库准备工作
如果要对接服务端,请提前安装配置本地数据库服务或者云数据库服务,确保连接正常可用,可使用本地数据库或云数据库。

**本地数据库:** 本地数据库安装MySQL
- 查看本机操作系统,选择合适的安装包版本[下载MySQL](https://dev.mysql.com/downloads/)
- 安装完成MySQL软件
- 进行初始化配置,设置端口、用户、登录密码等,测试连接正常

**云数据库:** 云数据库推荐使用[华为云数据库RDS](https://support.huaweicloud.com/productdesc-rds/zh-cn_topic_dashboard.html)
- 注册华为帐号并开通华为云
- 选择合适的计费模式购买并配置数据库实例
- 选择合适的连接模式进行连接
具体开通过程请参考:[RDS for MySQL快速入门](https://support.huaweicloud.com/qs-rds/rds_02_0008.html),也可使用TinyCLI云服务插件以命令行的方式开通创建,具体请参考:[TinyCLI 云服务插件](https://opentiny.design/vue-pro/docs/advanced/plugin)

### Egg.js准备工作
Egg.js 是一个Node.js服务端框架,开发环境准备好Node、Git等即可,[参考指南](https://www.eggjs.org/zh-CN/intro/quickstart)

### Spring Cloud准备工作
如选择对接Spring Cloud,需要提前安装好JDK、IDE、Maven、配置好环境变量等
#### Java环境安装
1. [下载JDK](https://www.oracle.com/java/technologies/downloads/)
2. [配置环境变量](https://www.runoob.com/java/java-environment-setup.html)
#### IDE安装
建议安装使用 [IntelliJ IDEA](https://www.jetbrains.com/idea/),内置Maven,[下载链接](https://www.jetbrains.com/zh-cn/idea/download/)

#### Maven安装
tiny-toolkit-pro 套件中的 Spring Cloud 采用 Maven 构建项目和依赖管理
1. [下载链接](https://maven.apache.org/download.cgi)
2. [环境配置](https://www.runoob.com/maven/maven-setup.html)

#### 微服务引擎
有两种方式可供选择:

* 通过下载安装本地简化版 CSE 搭建本地开发环境,下载链接:[CSE 2.0](https://support.huaweicloud.com/devg-cse/cse_devg_0036.html),下载完成,一键启动cse.exe

* 使用[华为云微服务引擎(CSE)](https://support.huaweicloud.com/qs-cse/cse_qs_0002.html)

####

## 用法

Expand All @@ -25,11 +65,12 @@ tiny init pro
angular
```
### 选择服务端技术栈(可选配置)
**目前仅 `Vue`工程支持对接服务端,且只支持`Egg.js`,剩余功能正在开发中。**
**目前仅 `Vue`工程支持对接服务端,剩余功能正在开发中。**
如果选择不对接服务端,全部接口将采用mock数据。
```
? 请选择您希望使用的服务端技术栈: (Use arrow keys)
> Egg.js
Spring Cloud
暂不配置
```
### 选择数据库(可选配置)
Expand All @@ -38,21 +79,6 @@ tiny init pro
> mySQL
暂不配置
```
### 数据库准备工作
可使用本地数据库或云数据库,请提前安装配置本地数据库服务或者云数据库服务,确保连接正常可用。

**本地数据库:** 本地数据库安装MySQL
- 查看本机操作系统,选择合适的安装包版本[下载MySQL](https://dev.mysql.com/downloads/)
- 安装完成MySQL软件
- 进行初始化配置,设置端口、用户、登录密码等,测试连接正常

**云数据库:** 云数据库推荐使用[华为云数据库RDS](https://support.huaweicloud.com/productdesc-rds/zh-cn_topic_dashboard.html)
- 注册华为帐号并开通华为云
- 选择合适的计费模式购买并配置数据库实例
- 选择合适的连接模式进行连接
具体开通过程请参考:[RDS for MySQL快速入门](https://support.huaweicloud.com/qs-rds/rds_02_0008.html),也可使用TinyCLI云服务插件以命令行的方式开通创建,具体请参考:[TinyCLI 云服务插件](https://opentiny.design/vue-pro/docs/advanced/plugin)



### 配置数据库信息
**初始化过程中会自动创建数据库和表,建议输入新的数据库名称以免造成数据库覆盖风险!**
Expand All @@ -77,14 +103,32 @@ tiny init pro
```
cd web && npm run start
```
后端
后端
* EggJS
```
cd server && npm run dev
```
* Spring Cloud
* 直接使用IDEA一键启动所有服务(推荐)
* 使用 ```mvn``` 命令
```
// 进入对应目录下
mvn spring-boot:run
```
* 使用 ```java -jar ``` 命令
```
// 使用IDEA或者mvn进行打包
mvn clean package

// 进入对应 target 目录下
java -jar packagename.jar
```

### 构建部署
前端:Vue项目采用Vite工具构建,请参考[Vite 部署指南](https://cn.vitejs.dev/guide/static-deploy.html)、[Vite 生产环境指南](https://cn.vitejs.dev/guide/build.html)
后端:Egg项目请参考[Egg构建部署指南](https://www.eggjs.org/zh-CN/core/deployment)
后端:
* EggJS项目请参考[Egg构建部署指南](https://www.eggjs.org/zh-CN/core/deployment)
* Spring Cloud请参考[CSE部署微服务应用](https://support.huaweicloud.com/intl/zh-cn/devg-cse/cse_devg_0016.html)

## 维护者

Expand Down
39 changes: 32 additions & 7 deletions packages/toolkits/pro/src/lib/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ const getProjectInfo = (): Promise<ProjectInfo> => {
message: '请选择您希望使用的服务端技术栈:',
choices: [
{ name: 'Egg.js', value: ServerFrameworks.EggJs },
{ name: 'Spring Cloud', value: ServerFrameworks.SpringCloud },
{ name: '暂不配置', value: ServerFrameworks.Skip },
],
default: ServerFrameworks.Skip,
Expand All @@ -67,7 +68,7 @@ const getProjectInfo = (): Promise<ProjectInfo> => {
{ name: '暂不配置服务端', value: false },
],
prefix: '*',
when: (answers) => answers.serverFramework === ServerFrameworks.EggJs,
when: (answers) => answers.serverFramework !== ServerFrameworks.Skip,
},
{
type: 'list',
Expand Down Expand Up @@ -129,7 +130,16 @@ const getProjectInfo = (): Promise<ProjectInfo> => {
* @answers 询问客户端问题的选择值
*/
const createDatabase = async (answers: ProjectInfo) => {
const { name, dialect, host, port, database, username, password } = answers;
const {
name,
dialect,
host,
port,
database,
username,
password,
serverFramework,
} = answers;
if (!dialect) return;

log.info('开始连接数据库服务...');
Expand All @@ -150,8 +160,22 @@ const createDatabase = async (answers: ProjectInfo) => {
await connection.query(` USE ${database}`);

// 读取sql文件、新建表
const serverPath = utils.getDistPath(`${name}/server`);
const databaseSqlDir = path.join(serverPath, 'app', 'database');
const serverPath = utils.getDistPath(`${name}/${serverFramework}`);
let databaseSqlDir = '';
switch (serverFramework) {
case ServerFrameworks.EggJs:
databaseSqlDir = path.join(serverPath, 'app/database');
break;
case ServerFrameworks.SpringCloud:
databaseSqlDir = path.join(
serverPath,
'server/src/main/resources/database'
);
break;
default:
break;
}

const tableSqlDirPath = path.join(databaseSqlDir, 'table');
const files = fs.readdirSync(tableSqlDirPath);
for (const file of files) {
Expand Down Expand Up @@ -184,7 +208,7 @@ const createServerSync = (answers: ProjectInfo) => {
const { name, serverFramework, dialect } = answers;
// 复制服务端相关目录
const serverFrom = utils.getTemplatePath(`server/${serverFramework}`);
const serverTo = utils.getDistPath(`${name}/server`);
const serverTo = utils.getDistPath(`${name}/${serverFramework}`);
const defaultConfig = {
// 在未配置数据库信息时,使用默认值替换ejs模板
dialect: 'mysql',
Expand All @@ -197,6 +221,7 @@ const createServerSync = (answers: ProjectInfo) => {

fs.copyTpl(serverFrom, serverTo, dialect ? answers : defaultConfig, {
overwrite: true,
notTextFile: ['.jar'],
});
};

Expand Down Expand Up @@ -260,7 +285,7 @@ export const installDependencies = (answers: ProjectInfo) => {
if (serverConfirm && serverFramework === ServerFrameworks.EggJs) {
log.info('正在安装服务端 npm 依赖,安装过程需要几十秒,请耐心等待...');
spawn.sync('npm', ['install'], {
cwd: `${name}/server/`,
cwd: `${name}/${serverFramework}/`,
stdio: 'inherit',
});
log.success('服务端 npm 依赖安装成功');
Expand Down Expand Up @@ -291,7 +316,7 @@ export const installDependencies = (answers: ProjectInfo) => {
console.log(
chalk.green(
`${chalk.yellow(
`$ cd ${name}/server && npm run dev`
`$ cd ${name}/${serverFramework} && npm run dev`
)} # 开启server开发环境`
)
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

### STS ###
.apt_generated
Expand Down

This file was deleted.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@
<groupId>com.huaweicloud</groupId>
<artifactId>spring-cloud-starter-huawei-service-engine-gateway</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
</dependencies>

<build>
Expand Down
Loading