@h-ai/deploy
v0.1.0-alpha.34
Published
Hai Framework deployment automation module.
Readme
@h-ai/deploy
自动化部署模块,支持一键将 SvelteKit 应用部署到 Vercel,并自动开通所需的基础设施服务。
支持的服务
| 服务类型 | Provisioner | 说明 | | -------- | ------------- | --------------------- | | 部署 | Vercel | SvelteKit 应用部署 | | 数据库 | Neon | PostgreSQL Serverless | | 缓存 | Upstash | Redis REST API | | 存储 | Cloudflare R2 | S3 兼容对象存储 | | 邮件 | Resend | 邮件发送 API | | 短信 | 阿里云 | 阿里云短信服务 |
快速开始
import { deploy } from '@h-ai/deploy'
// 可选:从 ~/.hai/credentials.yml 注入 HAI_DEPLOY_* 环境变量
deploy.credentials.load()
// 初始化
await deploy.init({
provider: { type: 'vercel', token: 'vel_xxx' },
services: {
db: { provisioner: 'neon', apiKey: 'neon_xxx' },
cache: { provisioner: 'upstash', email: '[email protected]', apiKey: 'up_xxx' },
},
})
// 扫描应用依赖
const scan = await deploy.scan('./apps/my-app')
// 开通基础设施
const provisions = await deploy.provisionAll('my-app')
// 完整部署
const result = await deploy.deployApp('./apps/my-app')
await deploy.close()配置
通过 config/_deploy.yml 管理 git 安全的配置,密钥存放在 ~/.hai/credentials.yml:
# config/_deploy.yml
provider:
type: vercel
token: ${HAI_DEPLOY_VERCEL_TOKEN}
services:
db:
provisioner: neon
apiKey: ${HAI_DEPLOY_NEON_API_KEY}
cache:
provisioner: upstash
email: ${HAI_DEPLOY_UPSTASH_EMAIL}
apiKey: ${HAI_DEPLOY_UPSTASH_API_KEY}如需在脚本或 CLI 中显式管理凭证文件,请通过 deploy.credentials.* 访问:
deploy.credentials.load()
deploy.credentials.save('HAI_DEPLOY_VERCEL_TOKEN', 'vel_xxx')
deploy.credentials.saveAll({
HAI_DEPLOY_NEON_API_KEY: 'neon_xxx',
})
deploy.scan()与deploy.credentials.*()都是本地文件系统能力,不依赖deploy.init()。
错误处理
import { HaiDeployError } from '@h-ai/deploy'
const result = await deploy.deployApp('./apps/my-app')
if (!result.success) {
switch (result.error.code) {
case HaiDeployError.AUTH_FAILED.code:
// Vercel Token 无效
break
case HaiDeployError.BUILD_FAILED.code:
// 构建失败
break
}
}常用错误码:
| 错误码 | code | 说明 |
| --------------------------------- | ---------------- | ------------ |
| HaiDeployError.DEPLOY_FAILED | hai:deploy:001 | 部署失败 |
| HaiDeployError.BUILD_FAILED | hai:deploy:003 | 构建失败 |
| HaiDeployError.AUTH_FAILED | hai:deploy:006 | 认证失败 |
| HaiDeployError.PROVISION_FAILED | hai:deploy:007 | 资源开通失败 |
| HaiDeployError.NOT_INITIALIZED | hai:deploy:010 | 未初始化 |
| HaiDeployError.ENV_VAR_FAILED | hai:deploy:011 | 环境变量失败 |
测试
pnpm --filter @h-ai/deploy testLicense
Apache-2.0
