Project Icon

Next-js-Boilerplate

Next.js开发框架集成现代工具和最佳实践

Next-js-Boilerplate是一个功能丰富的Next.js启动模板,集成TypeScript、Tailwind CSS和ESLint等开发工具。该项目提供身份验证、数据库ORM、国际化和测试等功能,注重开发体验和性能优化。它遵循严格代码规范,支持自动化部署和错误监控,适合快速启动高质量Next.js项目。

Next.js 14+、Tailwind CSS 3.4和TypeScript的样板和启动器。

Next.js启动器横幅

🚀 支持App Router的Next.js、Tailwind CSS和TypeScript的样板和启动器 ⚡️ 首先优先考虑开发者体验:Next.js、TypeScript、ESLint、Prettier、Husky、Lint-Staged、Jest(由Vitest替代)、Testing Library、Commitlint、VSCode、PostCSS、Tailwind CSS、使用Clerk进行身份验证、使用DrizzleORM的数据库(PostgreSQL、SQLite和MySQL)、使用Sentry进行错误监控、使用Pino.js进行日志记录和日志管理、代码即监控、Storybook、多语言(i18n)等。为Next.js 15做好准备。

克隆此项目并用它创建你自己的Next.js项目。你可以查看Next.js模板演示

赞助商

特点

首先考虑开发者体验,代码结构极其灵活,只保留您所需要的内容:

  • ⚡ 支持 App Router 的 Next.js
  • 🔥 使用 TypeScript 进行类型检查
  • 💎 集成 Tailwind CSS
  • ✅ TypeScript 和 React 18 的严格模式
  • 🔒 使用 Clerk 进行身份认证:注册、登录、登出、忘记密码、重置密码等
  • 👤 无密码身份认证,包括魔法链接、多因素认证(MFA)、社交认证(Google、Facebook、Twitter、GitHub、Apple 等)、使用密钥的无密码登录、用户模拟
  • 📦 使用 DrizzleORM 的类型安全 ORM,兼容 PostgreSQL、SQLite 和 MySQL
  • 🌐 使用 next-intlCrowdin 实现多语言支持(i18n)
  • ♻️ 使用 T3 Env 实现类型安全的环境变量
  • ⌨️ 使用 React Hook Form 处理表单
  • 🔴 使用 Zod 进行验证
  • 📏 使用 ESLint 进行代码检查(默认 Next.js、Next.js Core Web Vitals、Tailwind CSS 和 Airbnb 配置)
  • 💖 使用 Prettier 进行代码格式化
  • 🦊 使用 Husky 进行 Git Hooks
  • 🚫 使用 Lint-staged 对 Git 暂存文件运行 linter
  • 🚓 使用 Commitlint 检查 git 提交
  • 📓 使用 Commitizen 编写符合标准的提交信息
  • 🦺 使用 Vitest 和 React Testing Library 进行单元测试
  • 🧪 使用 Playwright 进行集成和端到端测试
  • 👷 使用 GitHub Actions 在拉取请求时运行测试
  • 🎉 使用 Storybook 进行 UI 开发
  • 🚨 使用 Sentry 进行错误监控
  • ☂️ 使用 Codecov 进行代码覆盖率测试
  • 📝 使用 Pino.js 进行日志记录,使用 Better Stack 进行日志管理
  • 🖥️ 使用 Checkly 进行代码监控
  • 🎁 使用 Semantic Release 自动生成更新日志
  • 🔍 使用 Percy 进行视觉测试(可选)
  • 💡 使用 @ 前缀进行绝对导入
  • 🗂 VSCode 配置:调试、设置、任务和扩展
  • 🤖 SEO 元数据、JSON-LD 和 Open Graph 标签
  • 🗺️ Sitemap.xml 和 robots.txt
  • ⌘ 使用 Drizzle Studio 进行数据库探索,使用 Drizzle Kit 进行 CLI 迁移工具
  • ⚙️ Bundler Analyzer
  • 🌈 包含免费的极简主题
  • 💯 最大化 Lighthouse 得分

Next.js 内置功能:

  • ☕ 压缩 HTML 和 CSS
  • 💨 实时重载
  • ✅ 缓存破坏

理念

  • 对你来说没有隐藏的内容,你可以自由进行必要的调整以满足你的需求和偏好
  • 每月更新依赖
  • 易于定制
  • 代码最小化
  • SEO 友好
  • 🚀 生产就绪

要求

  • Node.js 20+ 和 npm

开始使用

在本地环境中运行以下命令:

git clone --depth=1 https://github.com/ixartz/Next-js-Boilerplate.git my-project-name
cd my-project-name
npm install

请注意,所有依赖项每月都会更新。

然后,你可以通过执行以下命令在开发模式下本地运行项目,并启用实时重载:

npm run dev

使用你喜欢的浏览器打开 http://localhost:3000 查看你的项目。

设置身份认证

Clerk.com 创建一个 Clerk 账户,并在 Clerk 仪表板中创建一个新应用。然后,将 NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEY 复制到 .env.local 文件中(该文件不会被 Git 跟踪):

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_pub_key
CLERK_SECRET_KEY=your_clerk_secret_key

现在,你有了一个与 Next.js 完全集成的身份认证系统:注册、登录、登出、忘记密码、重置密码、更新个人资料、更新密码、更新邮箱、删除账户等。

设置远程数据库

该项目使用 DrizzleORM,这是一个类型安全的 ORM,兼容 PostgreSQL、SQLite 和 MySQL 数据库。默认情况下,该项目设置为与 PostgreSQL 无缝协作,你可以轻松选择任何 PostgreSQL 数据库提供商。

翻译(i18n)设置

对于翻译,该项目使用 next-intl 结合 Crowdin。作为开发者,你只需要关注英语(或其他默认语言)版本。其他语言由 Crowdin 自动生成和处理。你可以使用 Crowdin 与翻译团队协作,或在机器翻译的帮助下自行翻译消息。

要设置翻译(i18n),请在 Crowdin.com 创建一个账户并创建一个新项目。在新创建的项目中,你将能够找到项目 ID。你还需要通过进入账户设置 > API 来创建一个新的个人访问令牌。然后,在你的 GitHub Actions 中,你需要定义以下环境变量:CROWDIN_PROJECT_IDCROWDIN_PERSONAL_TOKEN

在 GitHub Actions 中定义环境变量后,每次你向 main 分支推送新的提交时,你的本地化文件都会与 Crowdin 同步。

项目结构

.
├── README.md                       # README 文件
├── .github                         # GitHub 文件夹
├── .husky                          # Husky 配置
├── .storybook                      # Storybook 文件夹
├── .vscode                         # VSCode 配置
├── migrations                      # 数据库迁移
├── public                          # 公共资源文件夹
├── scripts                         # 脚本文件夹
├── src
│   ├── app                         # Next JS App(App Router)
│   ├── components                  # React 组件
│   ├── libs                        # 第三方库配置
│   ├── locales                     # 本地化文件夹(i18n 消息)
│   ├── models                      # 数据库模型
│   ├── styles                      # 样式文件夹
│   ├── templates                   # 模板文件夹
│   ├── types                       # 类型定义
│   ├── utils                       # 实用工具文件夹
│   └── validations                 # 验证模式
├── tests
│   ├── e2e                         # 端到端测试,也包括代码监控
│   └── integration                 # 集成测试
├── tailwind.config.js              # Tailwind CSS 配置
└── tsconfig.json                   # TypeScript 配置

自定义

你可以通过在整个项目中搜索 FIXME: 来轻松配置 Next.js Boilerplate,以进行快速自定义。以下是一些最重要的文件进行自定义:

  • public/apple-touch-icon.pngpublic/favicon.icopublic/favicon-16x16.pngpublic/favicon-32x32.png:你的网站图标,可以从 https://favicon.io/favicon-converter/ 生成
  • src/utils/AppConfig.ts:配置文件
  • src/templates/BaseTemplate.tsx:默认主题
  • next.config.mjs:Next.js 配置
  • .env:默认环境变量 如果您需要进一步定制,可以访问完整的代码源。提供的代码仅是供您开始项目的示例。天空才是极限 🚀。

提交消息格式

该项目遵循约定式提交规范。这意味着所有提交消息必须按照规范格式化。为了帮助您编写提交消息,项目使用Commitizen,这是一个交互式CLI,可以指导您完成提交过程。要使用它,请运行以下命令:

npm run commit

使用约定式提交的一个好处是它允许我们自动生成CHANGELOG文件。它还允许我们根据发布中包含的提交类型自动确定下一个版本号。

测试

所有单元测试都与源代码位于同一目录中,这使得找到它们更容易。该项目使用Vitest和React Testing Library进行单元测试。您可以使用以下命令运行测试:

npm run test

集成和端到端测试

该项目使用Playwright进行集成和端到端测试。您可以使用以下命令运行测试:

npx playwright install # 仅在新环境中首次运行时需要
npm run test:e2e

启用Edge运行时(可选)

App Router文件夹与Edge运行时兼容。您可以通过在src/app/layouts.tsx中添加以下行来启用它:

export const runtime = 'edge';

请注意,数据库迁移与Edge运行时不兼容。因此,您需要在src/libs/DB.ts中禁用自动迁移:

await migrate(db, { migrationsFolder: './migrations' });

禁用后,您需要手动运行迁移:

npm run db:migrate

每次更新数据库架构时,您也需要运行此命令。

部署到生产环境

在构建过程中,会自动执行数据库迁移。因此,您无需手动运行迁移。但是,在您的环境变量中,需要定义DATABASE_URL

然后,您可以使用以下命令生成生产构建:

$ npm run build

这会生成经过优化的样板生产构建。要测试生成的构建,您可以运行:

$ npm run start

您还需要使用自己的密钥定义环境变量CLERK_SECRET_KEY

该命令启动一个带有生产构建的本地服务器。然后,您可以使用您喜欢的浏览器打开http://localhost:3000来查看项目。

错误监控

该项目使用Sentry进行错误监控。对于开发环境,您无需做任何事情:Next.js Boilerplate已经配置为使用Sentry和Spotlight(Sentry的开发版本)。所有错误都会自动发送到您的本地Spotlight实例。因此,您可以在本地尝试Sentry体验。

对于生产环境,您需要创建一个Sentry账户并创建一个新项目。然后,在next.config.mjs中,您需要更新withSentryConfig函数中的orgproject属性。您还需要在sentry.client.config.tssentry.edge.config.tssentry.server.config.ts中添加您的Sentry DSN。

代码覆盖率

Next.js Boilerplate依赖于Codecov作为代码覆盖率报告解决方案。要使用Codecov,请创建一个Codecov账户并将其连接到您的GitHub账户。在您的Codecov仪表板上,应该显示您的仓库列表。选择您要为其启用Codecov的仓库并复制令牌。然后,在您的GitHub Actions中,您需要定义CODECOV_TOKEN环境变量并粘贴您复制的令牌。

请确保将CODECOV_TOKEN创建为GitHub Actions密钥,不要直接将其粘贴到源代码中。

日志记录

该项目使用Pino.js进行日志记录。默认情况下,对于开发环境,日志显示在控制台中。

对于生产环境,该项目已经集成了Better Stack,以使用SQL管理和查询您的日志。要使用Better Stack,您需要创建一个Better Stack账户并创建一个新的源:转到您的Better Stack Logs仪表板 > 源 > 连接源。然后,您需要为您的源命名并选择Node.js作为平台。

创建源后,您将能够看到您的源令牌并复制它。然后,在您的环境变量中,您可以将令牌粘贴到LOGTAIL_SOURCE_TOKEN变量中。现在,所有日志都会自动发送并由Better Stack摄取。

Checkly监控

该项目使用Checkly来确保您的生产环境始终正常运行。Checkly会定期运行以*.check.spec.ts扩展名结尾的测试,并在任何测试失败时通知您。此外,您可以灵活地在多个位置执行测试,以确保您的应用程序在全球范围内可用。

要使用Checkly,您必须首先在他们的网站上创建一个账户。一旦您有了账户,您可以在GitHub Actions中设置CHECKLY_API_KEY环境变量,方法是在Checkly仪表板中生成一个新的API密钥。此外,您还需要定义CHECKLY_ACCOUNT_ID,这也可以在Checkly仪表板的用户设置 > 常规中找到。

要完成设置,请确保更新checkly.config.ts文件,使用您自己的电子邮件地址和生产URL。

有用的命令

包分析器

Next.js Boilerplate带有内置的包分析器。它可用于分析JavaScript包的大小。要开始,请运行以下命令:

npm run build-stats

运行该命令后,它会自动打开一个新的浏览器窗口显示结果。

数据库工作室

该项目已经配置了Drizzle Studio来探索数据库。您可以运行以下命令打开数据库工作室:

npm run db:studio

然后,您可以使用喜欢的浏览器打开https://local.drizzle.studio来探索您的数据库。

VSCode信息(可选)

如果您是VSCode用户,可以通过安装.vscode/extension.json中建议的扩展来获得更好的VSCode集成。入门代码提供了与VSCode无缝集成的设置。还提供了前端和后端调试体验的调试配置。

在VSCode中安装插件后,ESLint和Prettier可以自动修复代码并显示错误。对于测试也是如此,您可以安装VSCode Vitest扩展来自动运行测试,它还会在上下文中显示代码覆盖率。

专业提示:如果您需要使用TypeScript进行项目范围的类型检查,可以在Mac上使用Cmd + Shift + B运行构建。

贡献

欢迎每个人为这个项目做出贡献。如果您有问题或发现bug,请随时提出问题。完全欢迎任何建议和改进。

许可证

根据MIT许可证授权,版权所有 © 2024

有关更多信息,请参阅LICENSE

赞助商


CreativeDesignsGuru 用♥制作 Twitter

赞助 Next JS 模板

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号