前言
PREFACE

本书适合对使用TypeScript实现Monorepo项目感兴趣的程序员阅读,全书涉及的TypeScript和JavaScript上下游工具链和框架较为广泛,但是选取的例子都相对简单,目的是写给前端开发入门者,以及计划在自己项目中实践Monorepo项目的中级前端开发工程师。

作为一本Monorepo入门的实践指南,全书涉及三种运行时:Node.js、Deno和浏览器,较为系统地介绍了Deno这个比较新的JavaScript/TypeScript运行时。

内容结构

本书使用Monorepo整合了Node.js、Deno和浏览器三个运行时的代码,实现了报名登记应用。在一个相对完整的前后端全栈项目中,讲解Monorepo项目的实现路径。

全书共12章,以编写报名登记应用为主线,从零搭建一个基于pnpm的项目,以TypeScript 4.9版本为主,讲解必要的TypeScript知识。从Deno开始构建模拟的FaaS环境,构建简单的函数注册中心、文件函数服务、邮箱函数服务、计时器函数服务等FaaS服务。接着在Node.js环境中使用时下流行的Prisma、Fastify和MySQL构建后端服务程序。最后使用Vue 3、Vite和Tailwind构建报名登记应用的前端应用。在实战项目完成之后,探讨了一些和运维部署相关的话题。最后一章以4个现实中的Monorepo项目为例,讲解Monorepo架构常用的配置。

本书内容

第1章介绍了Monorepo与其他代码仓库技术的异同,JavaScript、TypeScript的发展概况。

第2章介绍了本书管理Monorepo的软件pnpm,较为详细地讲解了pnpm的核心机制,安装了实战项目的开发环境,包括TypeScript、ESLint和Prettier,创建了全局类型收束项目。

第3章在项目中引入了Deno运行时,充分利用Deno的架构与技术特点开发了一个简单的函数注册中心。

第4章介绍了函数即服务。基于第3章的工作,开发了三个函数服务,分别是本地文件服务器、基于HTTP协议的计时器和邮箱服务。

第5章主要介绍了Docker、MySQL和Prisma,重点介绍了使用Docker部署MySQL,并使用Prisma完成报名登记应用的数据模型构建。

第6章介绍了Node.js生态最快的Web框架Fastify,简要介绍了Fastify的插件系统和日志系统,引入TypeBox作为JSON Schema类型工具,确保同时获得JSON Schema和类型,完成服务端项目的初始化。

第7章使用Fastify开发报名登记应用的用户管理服务,编写JWT身份验证插件,融合Prisma和Fastify,实现了发送验证码、用户注册、用户登录等RESTFUL风格的服务接口。

第8章使用Fastify开发报名登记应用的活动管理服务,实现了活动的发布、上线、结束、取消等服务接口。

第9章介绍了Vue、Vite、Tailwind等前端技术栈,创建前端应用的环境。

第10章编写报名登记应用的前端代码,完成报名登记应用整个业务流程,并介绍了不同的打包工具,如Rollup、Vite等在该项目中的定位。

第11章介绍了应用的部署、监控和高可用相关的内容,介绍了服务监控工具Prometheus、Grafana,以及应用高可用性部署。

第12章讲解了使用pnpm、TypeScript技术栈的开源项目Vue、Vite、Astro和Prisma与Monorepo相关的设计。

本书约定

因为涉及的文件比较多,代码示例会以//开头写明具体的代码路径。

本书涉及的开源软件均提供了详细数据表格。

其中GitHub Stars和npm包月下载量数据截至2023年3月。

本书作者使用macOS系统开发,使用的各主要软件版本如下。

因为Node.js生态更新较快,不同版本的行为可能差异较大。

本书提供了免费配套资源,包括TypeScript类型系统、常用的TypeScript工具范性、Deno基础以及完整的项目代码。

致谢

感谢机械工业出版社策划这样一本书。感谢编辑李培培在整个出版过程给予的支持和帮助。感谢家人在写书过程中的理解和支持。

作者