Skip to content

Commit

Permalink
docs: update mwtsc
Browse files Browse the repository at this point in the history
  • Loading branch information
czy88840616 committed Jan 17, 2024
1 parent 62f9cab commit d241b9e
Show file tree
Hide file tree
Showing 17 changed files with 668 additions and 242 deletions.
37 changes: 37 additions & 0 deletions site/docs/change_start_dir.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# 修改源码目录

在某些特殊场景下,可以修改源码所在的 `src` 目录。
Expand All @@ -16,12 +19,36 @@

`package.json` 中的 dev 命令需要增加源码目录,方便 dev 查找。

<Tabs groupId="scripts">

<TabItem value="mwtsc" label="使用 mwtsc">

默认可以识别 `tsconfig.json` 中的 `outDir` 字段,无需调整。

</TabItem>

<TabItem value="cli" label="使用 @midwayjs/cli">

```typescript
"dev": "cross-env NODE_ENV=local midway-bin dev --sourceDir=./server --ts",
```

</TabItem>

</Tabs>

### build 编译

<Tabs groupId="scripts">

<TabItem value="mwtsc" label="使用 mwtsc">

默认可以识别 `tsconfig.json` 中的 `outDir` 字段,无需调整。

</TabItem>

<TabItem value="cli" label="使用 @midwayjs/cli">

为了让 tsc 编译能找到源码目录,需要修改 `tsconfig.json` ,增加 `rootDir` 字段。

```typescript
Expand All @@ -36,6 +63,12 @@

这样,开发和编译就都正常了。

</TabItem>

</Tabs>




## 编译目录的修改

Expand All @@ -52,6 +85,10 @@
// ...
"outDir": "build"
},
"exclude": {
"build",
//...
}
}
```

Expand Down
2 changes: 1 addition & 1 deletion site/docs/component_development.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
只需执行下面的脚本,模板列表中选择 `component-v3` 模板,即可快速生成示例组件。

```bash
$ npm init midway
$ npm init midway@latest -y
```

注意 [Node.js 环境要求](/docs/intro#环境准备工作)
Expand Down
11 changes: 0 additions & 11 deletions site/docs/debugger.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,3 @@



## 在 Chrome 中调试

如果您使用 vim 或其他代码编辑器,可以使用此方式,通过 `@midwayjs/cli``dev` 命令,添加 `--debug` 参数启动 debug 模式,可以通过 `chrome devtools` 进行单步代码调试:

![69456694-513D-4388-B52F-001562D4A520.png](https://img.alicdn.com/imgextra/i1/O1CN01jovior1pQBGiH8ao3_!!6000000005354-2-tps-1462-633.png)
您可以通过 `chrome://inspect/` 打开 `nodejs devtools` 进行断点调试:
![image.png](https://img.alicdn.com/imgextra/i4/O1CN01ntvZ5j28wDfyG5Gpe_!!6000000007996-2-tps-1464-708.png)
![image.png](https://img.alicdn.com/imgextra/i1/O1CN010Jpz2O1lp8NrFFK57_!!6000000004867-2-tps-1500-842.png)
您也可以直接通过 chrome 浏览器打开命令行中输出的 `devtools` 协议的链接,给对应代码添加断点后调试:
![10016148-385E-46A4-8B3A-0A0110BECD18.png](https://img.alicdn.com/imgextra/i1/O1CN01jOAX0U1Ggey4FsGnw_!!6000000000652-2-tps-1474-487.png)

95 changes: 84 additions & 11 deletions site/docs/deployment.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# 启动和部署

Midway 提供了一个轻量的启动器,用于启动你的应用。我们为应用提供了多种部署模式,你既可以将应用按照传统的样子,部署到任意的服务器上(比如自己购买的服务器),也可以将应用构建为一个 Serverless 应用,Midway 提供跨多云的部署方式。
Expand All @@ -11,22 +14,50 @@ Midway 提供了一个轻量的启动器,用于启动你的应用。我们为

### 快速启动单个服务


在本地研发时,Midway 在 `package.json` 中提供了一个 `dev` 命令启动框架,比如:

<Tabs groupId="scripts">

<TabItem value="mwtsc" label="使用 mwtsc">

```json
{
"scripts": {
"dev": "mwtsc --watch --run @midwayjs/mock/app.js",
}
}
```

这是一个最精简的命令,他有如下特性:


- 1、使用 `mwtsc` 工具构建代码,成功后通过 `@midwayjs/mock` 包中的 `app.js` 文件读取构建后的代码启动项目
- 2、使用内置的 API(@midwayjs/core`initializeGlobalApplicationContext`)创建一个服务,不经过 `bootstrap.js`
- 3、单进程运行

</TabItem>

<TabItem value="cli" label="使用 @midwayjs/cli">

```json
{
"script": {
"dev": "midway-bin dev --ts"
}
}
```

这是一个最精简的命令,他有如下特性:


- 1、使用 `--ts` 指定 TypeScript(ts-node)环境启动
- 2、使用内置的 API(@midwayjs/core`initializeGlobalApplicationContext`)创建一个服务,不经过 `bootstrap.js`
- 3、单进程运行

</TabItem>

</Tabs>

在命令行运行下面的命令即可执行。
```bash
$ npm run dev
Expand All @@ -40,6 +71,22 @@ $ npm run dev

这个时候我们可以直接传递一个入口文件给 `dev` 命令,直接使用入口文件启动服务。

<Tabs groupId="scripts">

<TabItem value="mwtsc" label="使用 mwtsc">

```json
{
"scripts": {
"dev": "mwtsc --watch --run bootstrap.js",
},
}
```

</TabItem>

<TabItem value="cli" label="使用 @midwayjs/cli">

```json
{
"script": {
Expand All @@ -48,6 +95,10 @@ $ npm run dev
}
```

</TabItem>

</Tabs>



## 部署到服务器
Expand All @@ -61,9 +112,10 @@ $ npm run dev

**1、node 环境的变化**

最大的不同是,服务器部署后,会直接使用 node 来启动项目。

最大的不同是,服务器部署后,会直接使用 node 来启动项目,而不是 ts-node,这意味着不再读取 `*.ts` 文件。

* 如果使用了 `mwtsc` 开发项目,差距不是很大
* 如果使用了 `@midwayjs/cli`,将不会使用 `ts-node` 来启动项目,这意味着不再读取 `*.ts` 文件

**2、加载目录的变化**

Expand Down Expand Up @@ -98,17 +150,38 @@ $ npm run dev

### 编译代码和安装依赖


由于 Midway 项目是 TypeScript 编写,在部署前,我们先进行编译。在示例中,我们预先写好了构建脚本,执行 `npm run build` 即可,如果没有,在 `package.json` 中添加下面的 `build` 命令即可。

<Tabs groupId="scripts">

<TabItem value="mwtsc" label="使用 mwtsc">

```typescript
{
"scripts": {
"build": "mwtsc --cleanOutDir",
},
}
```

</TabItem>

<TabItem value="cli" label="使用 @midwayjs/cli">

```json
// package.json
{
"scripts": {
"build": "midway-bin build -c"
},
}
```

</TabItem>

</Tabs>



:::info
虽然不是必须,但是推荐大家先执行测试和 lint。
:::
Expand Down Expand Up @@ -143,7 +216,7 @@ $ npm prune --production # 移除开发依赖
├── dist # Midway 构建产物目录
├── node_modules # Node.js 依赖包目录
├── test
├── bootstrap.js # 部署启动文件
├── bootstrap.js # 部署启动文件
├── package.json
└── tsconfig.json
```
Expand Down Expand Up @@ -394,7 +467,8 @@ CMD ["npm", "run", "start"]
### 结合 Docker-Compose 运行

在 docker 部署的基础上,还可以结合 docker-compose 配置项目依赖的服务,实现快速部署整个项目。
下面以midway结合redis为例,使用 docker-compose 快速部署整个项目。

下面以 midway 结合 redis 为例,使用 docker-compose 快速部署整个项目。


**步骤一:编写Dockerfile**
Expand All @@ -404,7 +478,7 @@ CMD ["npm", "run", "start"]

**步骤二:编写docker-compose.yml**

新增 `docker-compose.yml` 文件,内容如下:(此处模拟我们的 midway 项目需要使用redis
新增 `docker-compose.yml` 文件,内容如下:(此处模拟我们的 midway 项目需要使用 redis

```yaml
# 项目的根目录,与Dockerfile文件同级
Expand All @@ -425,7 +499,7 @@ services:

**步骤三:修改配置**

修改redis的配置文件,内容如下:( 配置redis,请参考[redis组件](extensions/redis)
修改 redis 的配置文件,内容如下:( 配置redis,请参考 [redis组件](extensions/redis)

```javascript
// src/config/config.default.ts
Expand Down Expand Up @@ -706,7 +780,6 @@ $ npm i pkg --save-dev
},
"scripts": {
// ...
"build": "midway-bin build -c",
"pkg": "pkg . -d > build/pkg.log",
"bundle": "bundle && npm run build"
},
Expand Down Expand Up @@ -752,4 +825,4 @@ $ npm run pkg

## 部署失败的问题

部署后由于和环境相关,情况更为复杂,如果部署到服务器之后碰到了问题,请查看 [服务器启动失败排查](./ops/ecs_start_err)
部署后由于和环境相关,情况更为复杂,如果部署到服务器之后碰到了问题,请查看 [服务器启动失败排查](/docs/ops/ecs_start_err)
7 changes: 4 additions & 3 deletions site/docs/extensions/caching.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

:::tip

Midway 提供基于 [cache-manager v5](https://github.com/node-cache-manager/node-cache-manager) 模块重新封装了缓存组件,原有的缓存模块基于 v3 开发不再迭代,如需查看老文档,请访问 [这里](/docs/cache)
Midway 提供基于 [cache-manager v5](https://github.com/node-cache-manager/node-cache-manager) 模块重新封装了缓存组件,原有的缓存模块基于 v3 开发不再迭代,如需查看老文档,请访问 [这里](/docs/extensions/cache)

:::

Expand Down Expand Up @@ -110,8 +110,9 @@ export default {

:::tip

* 内存缓存使用的淘汰算法是 LRU
* `ttl` 的单位是毫秒
* `max` 代表缓存 key 的最大个数
* 不同的 Store 淘汰 key 的算法不同,内存缓存使用的淘汰算法是 LRU

:::

Expand Down Expand Up @@ -240,7 +241,7 @@ export class UserService {


```typescript
import { createRedisStore } from '@midwayjs/cache-manager-redis';
import { createRedisStore } from '@midwayjs/cache-manager';

// src/config/config.default.ts
export default {
Expand Down
2 changes: 1 addition & 1 deletion site/docs/logger_v3.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Midway 为不同场景提供了一套统一的日志接入方式。通过 `@midw

:::tip

当前版本为 3.0 的日志 SDK 文档,如需 2.0 版本,请查看 [这个文档](/docs/legacy/logger)
当前版本为 3.0 的日志 SDK 文档,如需 2.0 版本,请查看 [这个文档](/docs/logger)

:::

Expand Down
30 changes: 21 additions & 9 deletions site/docs/quickstart.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# 创建第一个应用


Expand Down Expand Up @@ -112,28 +115,37 @@ Midway 会启动 HTTP 服务器,打开浏览器,访问 `http://127.0.0.1:700

![image.png](https://img.alicdn.com/imgextra/i2/O1CN01KoUxO91jydMw41Vv4_!!6000000004617-2-tps-1268-768.png)


如果需要修改开发的启动端口,可以在 `package.json` 的 scripts 段落里修改,如修改为 6001:

<Tabs groupId="cli">

<TabItem value="mwtsc" label="使用 mwtsc">

```typescript
"scripts": {
//...
"dev": "cross-env NODE_ENV=local mwtsc --watch --run @midwayjs/mock/app.js --port 6001",
},
```

</TabItem>

<TabItem value="cli" label="使用 @midwayjs/cli">

```typescript
"scripts": {
//...
"dev": "cross-env NODE_ENV=local midway-bin dev --ts --port=6001",
},
```

## 常见问题
</TabItem>

### Python 的编译错误

:::caution
在 node15/npm7 下执行 `npm install/i` 命令安装依赖可能会有 Python 编译错误

**使用 npm init midway 创建的项目会自动安装依赖,无此问题。**
</Tabs>

**解决方案**:npm i 时添加 `--legacy-peer-deps` 参数。
**原因**:测试框架 Jest 依赖 jsdom,npm7 会自动安装其 peerDependencies 中依赖的 canvas 包, 而 canvas 的安装编译需要有python3环境。
:::
## 常见问题

### windows eslint 报错

Expand Down
Loading

0 comments on commit d241b9e

Please sign in to comment.