datasette-publish-vercel 由 simonw 提供

星标

README 源代码

datasette-publish-vercel

PyPI Changelog Tests License

用于使用 Vercel 发布 Datasette 数据的插件。

安装

将此插件安装在与 Datasette 相同的环境中。

$ datasette install datasette-publish-vercel

用法

首先,通过遵循他们的指示安装 Vercel CLI 工具。

运行 vercel login 登录(或创建)账户。

现在你可以使用 datasette publish vercel 来发布你的数据

datasette publish vercel my-database.db --project=my-database

--project 参数是必需的 - 它指定了用于部署的项目名称。这将作为部署 URL 的一部分。

其他选项

  • --no-prod 将项目部署,但不更新指向新部署的“生产”URL 别名。不使用此选项,所有部署都将直接进入生产环境。
  • --debug 启用 Vercel CLI 调试输出。
  • --token 允许你传入 Now 认证令牌,而无需首先运行 now login 来配置工具。令牌可以在 Vercel Web 控制台的“账户设置” -> “令牌”下创建。
  • --public 运行 vercel --public 来发布应用程序源代码到 /_src 例如 https://datasette-public.now.sh/_src 并使最近的日志可在 /_logs 例如 https://datasette-public.now.sh/_logs
  • --generate-dir - 默认情况下,此工具在临时目录中生成一个新的 Vercel 应用,部署后删除该目录。使用 --generate-dir=my-app 可以将生成的应用程序文件输出到你选择的新目录中。然后你可以在该目录中运行 vercel 来部署它。
  • --setting default_page_size 10 - 用于设置 Datasette 配置,如文档中所述。这是对不受支持的 --extra-options 选项的替代。

完整帮助

警告: 此插件尚未实现其中一些选项。特别是,以下选项尚不可用

  • --extra-options - 使用上面描述的 --setting 代替。
  • --plugin-secret
  • --version-note
$ datasette publish vercel --help

Usage: datasette publish vercel [OPTIONS] [FILES]...

  Publish to https://vercel.com/

Options:
  -m, --metadata FILENAME         Path to JSON/YAML file containing metadata to publish
  --extra-options TEXT            Extra options to pass to datasette serve
  --branch TEXT                   Install datasette from a GitHub branch e.g. main
  --template-dir DIRECTORY        Path to directory containing custom templates
  --plugins-dir DIRECTORY         Path to directory containing custom plugins
  --static MOUNT:DIRECTORY        Serve static files from this directory at /MOUNT/...
  --install TEXT                  Additional packages (e.g. plugins) to install
  --plugin-secret ...
                                  Secrets to pass to plugins, e.g. --plugin-secret
                                  datasette-auth-github client_id xxx
  --version-note TEXT             Additional note to show on /-/versions
  --secret TEXT                   Secret used for signing secure values, such as signed
                                  cookies
  --title TEXT                    Title for metadata
  --license TEXT                  License label for metadata
  --license_url TEXT              License URL for metadata
  --source TEXT                   Source label for metadata
  --source_url TEXT               Source URL for metadata
  --about TEXT                    About label for metadata
  --about_url TEXT                About URL for metadata
  --token TEXT                    Auth token to use for deploy
  --project PROJECT               Vercel project name to use  [required]
  --scope TEXT                    Optional Vercel scope (e.g. a team name)
  --no-prod                       Don't deploy directly to production
  --debug                         Enable Vercel CLI debug output
  --public                        Publish source with Vercel CLI --public
  --generate-dir DIRECTORY        Output generated application files and stop without
                                  deploying
  --generate-vercel-json          Output generated vercel.json file and stop without
                                  deploying
  --vercel-json FILENAME          Custom vercel.json file to use instead of generating
                                  one
  --setting SETTING...            Setting, see docs.datasette.io/en/stable/settings.html
  --crossdb                       Enable cross-database SQL queries
  --help                          Show this message and exit.

使用自定义的 vercel.json 文件

如果你想在 Vercel 配置中添加额外的重定向或类似设置,你可能需要提供一个自定义的 vercel.json 文件。

为此,首先使用 --generate-vercel-json 选项生成配置文件(不运行部署)

datasette publish vercel my-database.db \
  --project=my-database \
  --generate-vercel-json > vercel.json

现在你可以编辑生成的 vercel.json 文件,添加你的自定义选项。

然后使用以下命令运行部署:

datasette publish vercel my-database.db \
  --project=my-database \
  --vercel-json=vercel.json

设置 DATASETTE_SECRET

Datasette 使用一个秘密字符串用于签名认证 cookie 等目的。当服务器重新启动时,此秘密字符串会重置,这将导致使用签名 cookie 认证的用户被退出登录。

你可以通过生成一个 DATASETTE_SECRET 秘密字符串,并将其设置为一个Vercel 环境变量来避免这种情况。如果这样做,该秘密字符串将保持一致,你的用户也不会被退出登录。

与 GitHub Actions 一起使用

此插件可以与 GitHub Actions 一起使用,以便在推送到仓库时或按计划自动部署 Datasette 实例。

GitHub Actions 运行器已预装 Vercel 部署工具。你需要在 vercel.com/account/tokens 为你的账户创建一个 API 令牌,并将其作为名为 VERCEL_TOKEN 的秘密存储在你的 GitHub 仓库中。

确保你的工作流已使用 pip 安装了 datasettedatasette-publish-vercel,然后将以下步骤添加到你的 GitHub Actions 工作流中

    - name: Deploy Datasette using Vercel
      env:
        VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
      run: |-
        datasette publish vercel mydb.db \
          --token $VERCEL_TOKEN \
          --project my-vercel-project

你可以在 simonw/til 仓库中看到以这种方式使用 Vercel 的完整工作流示例。