代码库管理
项目结构
了解SuperStarter应用程序和包的结构。
SuperStarter是一个monorepo,这意味着它在一个仓库中包含多个包。这是现代Web应用程序的常见模式,因为它允许您在应用程序的不同部分之间共享代码,并将它们一起管理。
该monorepo由Turborepo管理,这是一个用于管理monorepo的工具。它提供了一种简单的方式来管理单个仓库中的多个包,并且专为现代Web应用程序设计。
应用程序
SuperStarter包含多个构成您项目的应用程序。每个应用程序都是一个独立的应用程序,可以单独部署。
虽然您可以选择在您选择的子域上运行这些应用程序,但每个页面上都列出了推荐的子域。请记得将它们添加到您的环境变量中的NEXT_PUBLIC_APP_URL
、NEXT_PUBLIC_WEB_URL
和NEXT_PUBLIC_API_URL
下。
每个应用程序应该是独立的,不依赖于其他应用程序。它们应该在应用程序的根目录下有一个env.ts
文件,用于组合来自其所依赖包的环境变量。
包
SuperStarter包含多个在monorepo中共享的包。这些包的目的是将共享代码与主应用程序隔离,使其更易于管理和更新。
此外,它使得更容易为应用程序的不同部分交换实现。例如,database
包包含与数据库相关的所有内容,包括模式和数据迁移。这使我们能够轻松地更换数据库提供程序或ORM,而不会影响应用程序的其他部分。
每个包应该是独立的,不依赖于其他包。它们应该导出应用程序所需的一切——中间件、钩子、组件,甚至环境变量。
边界
next-forge使用Turborepo的边界来确保Turborepo功能正常工作,通过检查包管理器工作区违规。
您可以运行pnpm run boundaries
来检查任何违规行为。