Wener Notes

Vercel

约 2 分钟阅读
  • Free
    • 100 部署/天
    • Serverless Functions 12/部署
    • Serverless Functions 10s 执行时间
      • 没有后台执行概念
      • Pro 60s Enterprise 900s
    • 3 Git Repository/Vercel Project
    • 内存 1024 MB
    • 50 自定义域名
    • 100 GB 带宽每月
  • Serverless Function
    • 单个 < 50MB
    • 解压后 < 250MB
    • 消息体 5MB
    • 并发 1000
  • EdgeFunction
bash
# 全局安装
npm i vercel -g
# 或直接执行
yarn dlx vercel
npx vercel

# 登陆
yarn dlx vercel login

# 部署
# .vercel 目录会记录项目信息 - 默认会加到 .gitignore
yarn dlx vercel
Packagesvercelnpm PackagevercelNPM

配置

json
{
  "version": 2,
  "name": "my-app",
  "alias": ["my-domain.com", "my-alias"],
  "scope": "my-team",
  "env": {
    "MY_KEY": "this is the value",
    "SECRET": "@my-secret-name"
  },

  "build": {
    "env": {
      "MY_KEY": "this is the value",
      "SECRET": "@my-secret-name"
    }
  },

  "builds": [
    { "src": "*.html", "use": "@vercel/static" },
    { "src": "*.py", "use": "@vercel/python" },
    { "src": "*.js", "use": "@vercel/node" }
  ],

  "functions": {
    "api/test.js": {
      "memory": 3008,
      "maxDuration": 60
    },
    "api/test.php": {
      "runtime": "[email protected]"
    }
  },

  // 最多 256
  "routes": [
    { "src": "/custom-page", "headers": { "cache-control": "s-maxage=1000" }, "dest": "/index.html" },
    { "src": "/api", "dest": "/my-api.js" },
    { "src": "/users", "methods": ["POST"], "dest": "/users-api.js" },
    { "src": "/users/(?<id>[^/]*)", "dest": "/users-api.js?id=$id" },
    { "src": "/.*", "dest": "https://my-old-site.com" },
    { "src": "/legacy", "status": 404 },
    { "src": "/redirect", "status": 308, "headers": { "Location": "https://example.com/" } }
  ],

  "regions": ["sfo1", "bru"],

  // source view & logs view
  "public": true,

  // /about.html -> /about
  // /api/user.go -> /api/user
  "cleanUrls": true,

  // /about/ <-> /about
  "trailingSlash": false,

  "redirects": [
    { "source": "/me", "destination": "/profile.html" },
    // permanent = 308/307
    { "source": "/user", "destination": "/api/user", "permanent": false },
    { "source": "/view-source", "destination": "https://github.com/vercel/vercel" }
  ],

  // 最多 1024 个记录
  // src,dst 最长 4096
  "rewrites": [
    { "source": "/about", "destination": "/about-our-company.html" },
    { "source": "/resize/:width/:height", "destination": "/api/sharp" },
    { "source": "/user/:id", "destination": "/api/user" },
    { "source": "/proxy/:match*", "destination": "https://example.com/:match*" }
  ],

  // HTTP Header 控制
  "headers": [
    {
      "source": "/service-worker.js",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        }
      ]
    },
    {
      "source": "/api/feed",
      "headers": [
        {
          "key": "Content-Type",
          "value": "application/rss+xml"
        },
        {
          "key": "Cache-Control",
          "value": "public, max-age=3600"
        }
      ]
    },
    {
      "source": "/(.*)",
      "headers": [
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "X-Frame-Options",
          "value": "DENY"
        },
        {
          "key": "X-XSS-Protection",
          "value": "1; mode=block"
        }
      ]
    }
  ],

  "github": {
    "enabled": false,
    "autoAlias": false,
    "silent": true,
    "autoJobCancelation": false
  }
}
JavaScript
// 捕获所有路由
{ "src": "/blog/([^/]+)", "dest": "/blog?post=$1" }
// 等同于
{"rewrites": [{ "source": "/blog/:post", "destination": "/blog" }]}

//
{ "src": "/blog/(.*)", "dest": "/blog?post=$1" }
//
{"rewrites": [{ "source": "/blog/:post*", "destination": "/blog" }]}

Build

  • NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA

Turbo Next.JS

| Field | | --------------- | ---------------------------------------------------- | | Build Command | cd ../.. && npx turbo run build --filter=@wener/demo | | Install Command | npm install --prefix=../.. | | Root Directory | apps/demo |

关联信息

反向链接、本文链接的其他页面和外部资料。

References

GitHub2 条
其他外链9 条
最近更新commit ef1d424Edit

On this page