HONC应用开发框架

基于HONC堆栈的应用开发框架,支持使用Cloudflare D1数据库进行本地开发和云端部署。

  • by Rishabh510
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 rishabh510/slack-mcp-honc

使用说明

🪿 HONC

这是一个使用创建的项目 create-honc-app 模板。

了解更多关于HONC堆栈的信息 网站 或主要 仓库.

还有一个 出色的HONC系列 还有更多的指南、用例和示例。

入门

第1天 是Cloudflare的无服务器SQL数据库。使用D1数据库运行HONC涉及两个关键步骤:第一,在本地设置项目,第二,在生产中部署项目。您可以使用Wrangler在本地启动D1数据库。如果您计划部署应用程序用于生产,请确保您已在Cloudflare帐户中创建了D1实例。

项目结构

├── src
│   ├── index.ts # Hono app entry point
│   └── db
│       └── schema.ts # Database schema
├── .dev.vars.example # Example .dev.vars file
├── .prod.vars.example # Example .prod.vars file
├── seed.ts # Optional script to seed the db
├── drizzle.config.ts # Drizzle configuration
├── package.json
├── tsconfig.json # TypeScript configuration
└── wrangler.jsonc # Cloudflare Workers configuration

地方发展指挥部

运行迁移并(可选)为数据库设置种子:

# this is a convenience script that runs db:touch, db:generate, db:migrate, and db:seed
npm run db:setup

运行开发服务器:

npm run dev

当你迭代数据库模式时,你需要生成一个新的迁移文件,并按如下方式应用它:

npm run db:generate
npm run db:migrate

部署命令

在将您的worker部署到Cloudflare之前,请确保您在Cloudflare上有一个正在运行的D1实例来连接您的workers。

您可以通过导航到以下位置来创建D1实例 Workers & Pages 部分和选择 D1 SQL Database.

或者,您可以使用CLI创建D1实例:

npx wrangler d1 create <database-name>

创建数据库后,更新 wrangler.jsonc 带有数据库id的文件。

{
    // ...
    "d1_databases": [
        {
            "binding": "DB",
            "database_name": "honc-d1-database",
            "database_id": "<database-id-you-just-created>",
            "migrations_dir": "drizzle/migrations"
        }
    ],
    // ...
}

将以下信息纳入 .prod.vars 文件:

CLOUDFLARE_D1_TOKEN="" # An API token with D1 edit permissions. You can create API tokens from your Cloudflare profile
CLOUDFLARE_ACCOUNT_ID="" # Find your Account id on the Workers & Pages overview (upper right)
CLOUDFLARE_DATABASE_ID="" # Find the database ID under workers & pages under D1 SQL Database and by selecting the created database

如果您尚未生成最新的迁移文件,请运行:

npm run db:generate

之后,运行生产迁移脚本:

npm run db:migrate:prod

在中更改项目的名称 wrangler.jsonc 选择适合您项目的内容:

{
    "name": "my-d1-project",
    // ...
}

最后,部署你的worker

npm run deploy