用于 Vercel Serverless Functions 的 Swift 运行时和 SDK。
查看入门介绍博文和 YouTube 教程以开始使用
这个包中有两个重要的部分使一切正常工作
EdgeConfig
)的访问import Vercel
@main
struct App: RequestHandler {
func onRequest(_ req: Request) async throws -> Response {
let greeting = EdgeConfig.default.get("greeting").string!
return .status(.ok).send("Hello, \(greeting)")
}
}
import Vercel
@main
struct App: ExpressHandler {
static func configure(router: isolated Router) async throws {
router.get("/") { req, res in
res.status(.ok).send("Hello, Swift")
}
}
}
import Vapor
import VercelVapor
@main
struct App: VaporHandler {
static func configure(app: Application) async throws {
app.get { _ in
"Hello, Vapor"
}
}
}
并确保使用新软件包更新你的 Package.swift
文件
dependencies: [
.product(name: "Vercel", package: "Vercel"),
.product(name: "VercelVapor", package: "Vercel")
]
你可以使用任何流行的库来获取数据,例如 Alamofire 或 async-http-client,但我们也在这个包中直接提供了一个方便的 fetch()
方法
let obj = try await fetch("https://httpbin.org/json").json()
此软件包提供对 Vercel Edge Config API 的完全访问权限。你可以访问默认的 Edge Config 存储或分配给你的项目的任何其他存储
// Default edge config
let str = EdgeConfig.default.get("some-string-key").string
// Edge config assigned to an environment variable
let num = EdgeConfig("EDGE_CONFIG_2").get("some-int-key").int
你可以添加一个顶级的 public
文件夹,它将被静态部署到 Vercel 的 CDN。
通过在你的项目根目录中添加一个 vercel.json
文件并遵循此处的 Vercel 文档,可以完全支持 Cron jobs: https://vercel.com/docs/cron-jobs
传统上,本地运行服务器端代码一直非常痛苦,但现在不再如此。这个包使得本地运行代码变得非常简单
swift package --disable-sandbox vercel dev
这将构建并运行你的 Swift 应用程序,并在 https://:7676 启动一个本地服务器
要在本地部署你的项目,你需要安装 Docker 和 Vercel CLI。安装完成后,你必须链接你的 Vercel 项目
vercel link
链接你的项目后,你可以通过 Swift Package Manager 部署它
swift package --disable-sandbox vercel deploy
swift package --disable-sandbox vercel deploy
--prod
- 触发生产部署到 Vercel--product <name>
- 你要构建的产品。默认值:Package.swift 中第一个带有 Vercel 依赖项的目标--memory <number>
- 要分配给你的函数的内存量,以兆字节为单位。默认值 512mb--duration <number>
- 你的函数将运行的最大持续时间,以秒为单位。默认值:10 秒--regions <name>
- 要将你的函数部署到的区域的逗号分隔列表。默认值:iad1--port <number>
- 用于运行本地开发服务器的自定义端口。默认值:7676使用以下 GitHub Actions 工作流程来持续部署你的项目到 Vercel
name: Vercel
on:
push:
branches:
- main
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
jobs:
deploy:
runs-on: ubuntu-latest
container: swift:5.10-amazonlinux2
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: .build
key: ${{ runner.os }}-spm-${{ hashFiles('Package.resolved') }}
restore-keys: |
${{ runner.os }}-spm-
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Install
run: npm install -g vercel@latest
- name: Deploy
run: swift package --disable-sandbox vercel deploy