部署
要为生产环境构建网站的静态文件,请运行:
- npm
- Yarn
- pnpm
npm run build
yarn build
pnpm run build
完成后,静态文件将在build目录中生成。
Docusaurus的唯一职责是构建您的站点并在build中生成静态文件。
现在由您选择如何托管这些静态文件。
您可以将您的站点部署到静态站点托管服务,例如 Vercel, GitHub Pages, Netlify, Render, 和 Surge.
Docusaurus 网站是静态渲染的,通常可以在没有 JavaScript 的情况下工作!
配置
以下参数在docusaurus.config.js中是必需的,以优化路由并从正确的位置提供文件:
| Name | Description |
|---|---|
url | URL for your site. For a site deployed at https://my-org.com/my-project/, url is https://my-org.com/. |
baseUrl | Base URL for your project, with a trailing slash. For a site deployed at https://my-org.com/my-project/, baseUrl is /my-project/. |
本地测试你的构建
在部署到生产环境之前,本地测试您的构建非常重要。Docusaurus 提供了一个 docusaurus serve 命令来实现这一点:
- npm
- Yarn
- pnpm
npm run serve
yarn serve
pnpm run serve
默认情况下,这将在http://localhost:3000/加载您的站点。
尾部斜杠配置
Docusaurus 有一个 trailingSlash 配置,允许自定义 URL/链接和生成的文件名模式。
默认值通常工作良好。不幸的是,每个静态托管提供商都有不同的行为,将完全相同的站点部署到不同的主机可能会导致不同的结果。根据您的主机,更改此配置可能是有用的。
使用 slorber/trailing-slash-guide 来更好地理解您的主机行为,并适当配置 trailingSlash。
使用环境变量
将潜在的敏感信息放入环境中是常见的做法。然而,在典型的Docusaurus网站中,docusaurus.config.js文件是唯一与Node.js环境交互的接口(参见我们的架构概述),而其他所有内容(MDX页面、React组件等)都是客户端,无法直接访问process全局变量。在这种情况下,您可以考虑使用customFields将环境变量传递到客户端。
// If you are using dotenv (https://www.npmjs.com/package/dotenv)
import 'dotenv/config';
export default {
title: '...',
url: process.env.URL, // You can use environment variables to control site specifics as well
customFields: {
// Put your custom environment here
teamEmail: process.env.EMAIL,
},
};
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
export default function Home() {
const {
siteConfig: {customFields},
} = useDocusaurusContext();
return <div>Contact us through {customFields.teamEmail}!</div>;
}
选择托管服务提供商
有几种常见的托管选项:
- 自托管 使用像 Apache2 或 Nginx 这样的 HTTP 服务器。
- Jamstack 提供商(例如 Netlify 和 Vercel)。我们将以它们为参考,但同样的推理也适用于其他提供商。
- GitHub Pages(根据定义,它也是Jamstack,但我们单独进行比较)。
如果你不确定选择哪一个,可以问以下问题:
我愿意在这上面投入多少资源(金钱、工时等)?
- 🔴 自托管需要具备网络、Linux 和 Web 服务器管理方面的经验。这是最困难的选择,成功管理需要最多的时间。从费用角度来看,云服务几乎从不免费,而购买/部署现场服务器可能更加昂贵。
- 🟢 Jamstack 提供商可以帮助您在几乎不需要时间的情况下建立一个可工作的网站,并提供易于配置的功能,如服务器端重定向。许多提供商甚至为免费计划提供慷慨的构建时间配额,您几乎不会超过这些配额。然而,免费计划有限制,一旦达到这些限制,您就需要支付费用。请查看您提供商的定价页面以获取详细信息。
- 🟡 GitHub Pages 的部署工作流程设置起来可能很繁琐。(证据:请参阅部署到 GitHub Pages 的长度!)然而,对于公共仓库,此服务(包括构建和部署)始终是免费的,并且我们提供了详细的说明来帮助您使其正常工作。
How much server-side customization do I need?
- 🟢 通过自托管,您可以访问整个服务器的配置。您可以配置虚拟主机以根据请求的URL提供不同的内容,您可以进行复杂的服务器端重定向,您可以实现身份验证等。如果您需要大量的服务器端功能,请自托管您的网站。
- 🟡 Jamstack 通常提供一些服务器端配置(例如 URL 格式化(尾部斜杠)、服务器端重定向等)。
- 🔴 GitHub Pages 除了强制使用 HTTPS 和设置 CNAME 记录外,不暴露服务器端配置。
Do I need collaboration-friendly deployment workflows?
- 🟡 自托管服务可以利用像Netlify这样的持续部署功能,但需要更多的手动操作。通常,您会指定一个特定的人员来管理部署,与其他两个选项相比,工作流程不会非常基于git。
- 🟢 Netlify 和 Vercel 为每个拉取请求提供部署预览,这对于团队在合并到生产环境之前审查工作非常有用。您还可以管理一个团队,为不同成员分配不同的部署访问权限。
- 🟡 GitHub Pages 无法以不复杂的方式进行部署预览。一个仓库只能与一个站点部署相关联。另一方面,您可以控制谁具有对站点部署的写权限。
没有银弹。在做出选择之前,你需要权衡你的需求和资源。
自托管
Docusaurus 可以使用 docusaurus serve 进行自托管。使用 --port 更改端口,使用 --host 更改主机。
- npm
- Yarn
- pnpm
npm run serve -- --build --port 80 --host 0.0.0.0
yarn serve --build --port 80 --host 0.0.0.0
pnpm run serve --build --port 80 --host 0.0.0.0
与静态托管提供商/CDN相比,这不是最佳选择。
在接下来的部分中,我们将介绍一些常见的托管提供商以及如何配置它们以最有效地部署Docusaurus站点。Docusaurus与这些服务没有任何关联,此信息仅为了方便提供。一些文章由第三方提供,最近的API更改可能未在我们这边反映。如果您看到过时的内容,欢迎提交PR。
因为我们只能尽力提供此内容,所以我们已停止接受添加新托管选项的PR。但是,您可以在单独的网站(例如您的博客或提供商的官方网站)上发布您的文章,并要求我们包含指向您文章的链接。
部署到 Netlify
要将您的Docusaurus站点部署到Netlify,首先请确保以下选项已正确配置:
export default {
url: 'https://docusaurus-2.netlify.app', // Url to your site with no trailing slash
baseUrl: '/', // Base directory of your site relative to your repo
// ...
};
然后,使用Netlify创建您的站点。
在设置站点时,请按如下方式指定构建命令和目录:
- 构建命令:
npm run build - 发布目录:
build
如果您没有配置这些构建选项,您仍然可以在站点创建后前往“站点设置” -> “构建与部署”。
一旦正确配置了上述选项,您的站点应该会在合并到您的部署分支(默认为main)时自动部署和重新部署。
一些Docusaurus站点将docs文件夹放在website之外(很可能是以前的Docusaurus v1站点):
repo # git根目录
├── docs # MD文件
└── website # Docusaurus根目录
如果你决定使用website文件夹作为Netlify的基础目录,Netlify在你更新docs文件夹时不会触发构建,你需要配置一个自定义ignore命令:
[build]
ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../docs/"
默认情况下,Netlify 会在 Docusaurus URL 后添加斜杠。
建议禁用 Netlify 设置 Post Processing > Asset Optimization > Pretty Urls 以防止 URL 变为小写、不必要的重定向和 404 错误。
请非常小心:Disable asset optimization 全局复选框已损坏,实际上并不会禁用 Pretty URLs 设置。请确保单独取消勾选。
如果您想保留 Netlify 的 Pretty Urls 设置,请适当调整 Docusaurus 配置中的 trailingSlash。
更多信息请参考 slorber/trailing-slash-guide。
部署到 Vercel
将您的Docusaurus项目部署到Vercel将为您提供各种好处,包括性能和易用性方面的优势。
要使用Vercel for Git Integration部署您的Docusaurus项目,请确保它已被推送到Git仓库。
使用导入流程将项目导入Vercel。在导入过程中,您会发现所有相关选项都已为您预先配置;但是,您可以选择更改这些选项中的任何一个。
在您的项目被导入后,所有后续推送到分支的操作都会生成预览部署,并且所有对生产分支(通常是“main”或“master”)的更改都会导致生产部署。
部署到GitHub Pages
Docusaurus 提供了一种简单的方法来发布到 GitHub Pages,每个 GitHub 仓库都免费提供此服务。
概述
通常,发布过程中会涉及两个仓库(至少两个分支):包含源文件的分支,以及包含要通过GitHub Pages提供的构建输出的分支。在以下教程中,它们将分别被称为"source"和"deployment"。
每个 GitHub 仓库都与一个 GitHub Pages 服务相关联。如果部署仓库名为 my-org/my-project(其中 my-org 是组织名称或用户名),部署的站点将出现在 https://my-org.github.io/my-project/。如果部署仓库名为 my-org/my-org.github.io(即组织 GitHub Pages 仓库),站点将出现在 https://my-org.github.io/。
如果你想为GitHub Pages使用自定义域名,请在static目录中创建一个CNAME文件。static目录中的任何内容都将被复制到build目录的根目录以进行部署。使用自定义域名时,你应该能够从baseUrl: '/projectName/'切换回baseUrl: '/',并将url设置为你的自定义域名。
你可以参考GitHub Pages的文档用户、组织和项目页面以获取更多详细信息。
GitHub Pages 从默认分支(通常是 master / main)或 gh-pages 分支中获取可部署的文件(docusaurus build 的输出),这些文件可以来自根目录或 /docs 文件夹。你可以通过仓库中的 Settings > Pages 进行配置。这个分支将被称为“部署分支”。
我们提供了一个docusaurus deploy命令,帮助您通过一个命令从源分支部署站点到部署分支:克隆、构建和提交。
docusaurus.config.js 设置
首先,修改您的docusaurus.config.js并添加以下参数:
| Name | Description |
|---|---|
organizationName | The GitHub user or organization that owns the deployment repository. |
projectName | The name of the deployment repository. |
deploymentBranch | The name of the deployment branch. It defaults to 'gh-pages' for non-organization GitHub Pages repos (projectName not ending in .github.io). Otherwise, it needs to be explicit as a config field or environment variable. |
这些字段也有它们的环境变量对应项,这些环境变量具有更高的优先级:ORGANIZATION_NAME、PROJECT_NAME 和 DEPLOYMENT_BRANCH。
GitHub Pages 默认会在 Docusaurus 的 URL 后添加一个斜杠。建议设置一个 trailingSlash 配置(true 或 false,而不是 undefined)。
示例:
export default {
// ...
url: 'https://endiliey.github.io', // Your website URL
baseUrl: '/',
projectName: 'endiliey.github.io',
organizationName: 'endiliey',
trailingSlash: false,
// ...
};
默认情况下,GitHub Pages 使用 Jekyll 处理发布的文件。由于 Jekyll 会丢弃任何以 _ 开头的文件,建议您通过在 static 目录中添加一个名为 .nojekyll 的空文件来禁用 Jekyll。
环境设置
| Name | Description |
|---|---|
USE_SSH | Set to true to use SSH instead of the default HTTPS for the connection to the GitHub repo. If the source repo URL is an SSH URL (e.g. [email protected]:facebook/docusaurus.git), USE_SSH is inferred to be true. |
GIT_USER | The username for a GitHub account that has push access to the deployment repo. For your own repositories, this will usually be your GitHub username. Required if not using SSH, and ignored otherwise. |
GIT_PASS | Personal access token of the git user (specified by GIT_USER), to facilitate non-interactive deployment (e.g. continuous deployment) |
CURRENT_BRANCH | The source branch. Usually, the branch will be main or master, but it could be any branch except for gh-pages. If nothing is set for this variable, then the current branch from which docusaurus deploy is invoked will be used. |
GIT_USER_NAME | The git config user.name value to use when pushing to the deployment repo |
GIT_USER_EMAIL | The git config user.email value to use when pushing to the deployment repo |
GitHub 企业版安装应与 github.com 相同;您只需将组织的 GitHub Enterprise 主机设置为环境变量:
| Name | Description |
|---|---|
GITHUB_HOST | The domain name of your GitHub enterprise site. |
GITHUB_PORT | The port of your GitHub enterprise site. |
部署
最后,要将您的站点部署到GitHub Pages,请运行:
- Bash
- Windows
- PowerShell
GIT_USER=<GITHUB_USERNAME> yarn deploy
cmd /C "set "GIT_USER=<GITHUB_USERNAME>" && yarn deploy"
cmd /C 'set "GIT_USER=<GITHUB_USERNAME>" && yarn deploy'
从2021年8月开始,GitHub要求每次命令行登录使用个人访问令牌而不是密码。当GitHub提示输入密码时,请输入PAT。更多信息请参阅GitHub文档。
或者,您可以使用SSH(USE_SSH=true)登录。
使用 GitHub Actions 触发部署
GitHub Actions 允许您在您的仓库中自动化、定制和执行您的软件开发工作流程。
以下工作流示例假设您的网站源代码位于存储库的main分支中(源分支为main),并且您的发布源已配置为使用自定义GitHub Actions工作流发布。
我们的目标是:
- 当向
main提交新的拉取请求时,有一个操作确保站点成功构建,而无需实际部署。此任务将被称为test-deploy。 - 当拉取请求合并到
main分支或有人直接推送到main分支时,它将构建并部署到GitHub Pages。此作业将被称为deploy。
以下是使用GitHub Actions部署文档的两种方法。根据您的部署仓库的位置,选择下面的相关选项卡:
- 源仓库和部署仓库是同一个仓库。
- 部署仓库是一个远程仓库,与源代码不同。此场景的说明假设发布源是
gh-pages分支。
- 相同
- 远程
虽然你可以在同一个工作流文件中定义这两个任务,但原始的 添加这两个工作流文件: 这些文件假设你使用的是 Yarn。如果你使用 npm,请将 如果你的 Docusaurus 项目不在仓库的根目录下,你可能需要配置一个 默认工作目录,并相应地调整路径。deploy 工作流在 PR 检查套件状态中总是会被列为跳过,这并不能反映实际状态,并且对审查过程没有价值。因此,我们建议将它们作为单独的工作流来管理。GitHub action 文件
cache: yarn, yarn install --frozen-lockfile, yarn build 改为 cache: npm, npm ci, npm run build。name: 部署到 GitHub Pages
on:
push:
branches:
- main
# 如果你想进一步定义触发器、路径等,请查看 GitHub Actions 文档
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on
jobs:
build:
name: 构建 Docusaurus
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 18
cache: yarn
- name: 安装依赖
run: yarn install --frozen-lockfile
- name: 构建网站
run: yarn build
- name: 上传构建产物
uses: actions/upload-pages-artifact@v3
with:
path: build
deploy:
name: 部署到 GitHub Pages
needs: build
# 授予 GITHUB_TOKEN 进行 Pages 部署所需的权限
permissions:
pages: write # 用于部署到 Pages
id-token: write # 用于验证部署是否来自适当的来源
# 部署到 github-pages 环境
environment:
<span class="token-line" style
跨仓库发布设置起来更加困难,因为你需要推送到另一个仓库并进行权限检查。我们将使用SSH进行身份验证。
- 生成一个新的SSH密钥。由于此SSH密钥将用于CI,请确保不要输入任何密码。
- 默认情况下,你的公钥应该已经在
~/.ssh/id_rsa.pub中创建;否则,使用你在上一步中提供的名称将你的密钥添加到GitHub部署密钥中。 - 使用
pbcopy < ~/.ssh/id_rsa.pub将密钥复制到剪贴板,并将其作为部署密钥粘贴到部署仓库中。如果命令行对你不起作用,请复制文件内容。在保存部署密钥之前,勾选Allow write access。 - 你需要将你的私钥作为GitHub secret,以允许Docusaurus为你运行部署。
- 使用
pbcopy < ~/.ssh/id_rsa复制你的私钥,并在你的源仓库中粘贴一个名为GH_PAGES_DEPLOY的GitHub secret。如果命令行对你不起作用,请复制文件内容。保存你的secret。 - 在
.github/workflows/目录中创建你的文档工作流。在这个例子中,它是deploy.yml文件。
此时,你应该有:
- 源仓库中设置了GitHub工作流,并将私钥作为GitHub Secret,以及
- 你的部署仓库中设置了GitHub部署密钥中的公钥。
GitHub action文件
请确保你将[email protected]替换为你的GitHub邮箱,并将gh-actions替换为你的名字。
此文件假设你使用的是Yarn。如果你使用npm,请将cache: yarn、yarn install --frozen-lockfile、yarn build更改为cache: npm、npm ci、npm run build。
name: 部署到GitHub Pages
on:
pull_request:
branches: [main]
push:
branches: [main]
permissions:
contents: write
jobs:
test-deploy:
if: github.event_name != 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 18
cache: yarn
- name: 安装依赖
run: yarn install --frozen-lockfile
- name: 测试构建网站
run: yarn build
deploy:
if: github.event_name != 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
<span class="token-line" style="color:#Site not deployed properly?
推送到主分支后,如果您没有看到您的网站在预期位置发布(例如,显示“这里没有GitHub Pages网站”,或者显示您的仓库的README.md文件),请尝试以下操作:
- 等待大约三分钟并刷新。GitHub页面可能需要几分钟来获取新文件。
- 检查您的仓库的登陆页面,查看最后一次提交标题旁边的小绿勾,表示CI已通过。如果您看到一个叉号,意味着构建或部署失败,您应该检查日志以获取更多调试信息。
- 点击勾号,确保您看到一个“部署到GitHub Pages”的工作流。像“页面构建和部署/部署”这样的名称是GitHub的默认工作流,表示您的自定义部署工作流根本没有被触发。确保YAML文件放置在
.github/workflows文件夹下,并且触发条件设置正确(例如,如果您的默认分支是“master”而不是“main”,您需要更改on.push属性)。 - 在您的仓库的设置 > 页面下,确保“源”(这是部署文件的源,而不是我们术语中的“源”)设置为“gh-pages” + “/(根)”,因为我们使用
gh-pages作为部署分支。
如果您使用的是自定义域名:
- 如果您使用的是自定义域名,请验证您是否设置了正确的DNS记录。请参阅GitHub页面关于配置自定义域名的文档。此外,请注意,DNS更改可能需要长达24小时才能在整个互联网上传播。
使用 Travis CI 触发部署
持续集成(CI)服务通常用于在将新提交检入源代码控制时执行例行任务。这些任务可以是运行单元测试和集成测试、自动化构建、将包发布到npm以及将更改部署到您的网站的任何组合。要自动化网站的部署,您只需在网站更新时调用yarn deploy脚本。以下部分介绍了如何使用Travis CI(一个流行的持续集成服务提供商)来实现这一点。
- 前往 https://github.com/settings/tokens 并生成一个新的 个人访问令牌。在创建令牌时,授予它
repo范围,以便它拥有所需的权限。 - 使用您的GitHub账户,添加Travis CI应用到您想要激活的仓库。
- 打开您的Travis CI仪表板。URL看起来像
https://travis-ci.com/USERNAME/REPO,并导航到您仓库的更多选项 > 设置 > 环境变量部分。 - 创建一个名为
GH_TOKEN的新环境变量,其值为新生成的令牌,然后是GH_EMAIL(您的电子邮件地址)和GH_NAME(您的GitHub用户名)。 - 在您的仓库根目录下创建一个
.travis.yml文件,内容如下:
language: node_js
node_js:
- 18
branches:
only:
- main
cache:
yarn: true
script:
- git config --global user.name "${GH_NAME}"
- git config --global user.email "${GH_EMAIL}"
- echo "machine github.com login ${GH_NAME} password ${GH_TOKEN}" > ~/.netrc
- yarn install
- GIT_USER="${GH_NAME}" yarn deploy
现在,每当有新的提交进入main时,Travis CI 将运行您的测试套件,如果一切通过,您的网站将通过yarn deploy脚本进行部署。
使用Buddy触发部署
Buddy 是一个易于使用的 CI/CD 工具,允许您将门户的部署自动化到不同的环境,包括 GitHub Pages。
按照以下步骤创建一个管道,每当您将更改推送到项目的选定分支时,该管道会自动部署新版本的网站:
- 前往 https://github.com/settings/tokens 并生成一个新的 个人访问令牌。创建令牌时,授予它
repo范围,以便它拥有所需的权限。 - 登录您的Buddy账户并创建一个新项目。
- 选择 GitHub 作为您的 git 托管提供商,并选择包含您网站代码的存储库。
- 使用左侧导航面板,切换到
Pipelines视图。 - 创建一个新的流水线。定义其名称,将触发模式设置为
On push,并选择触发流水线执行的分支。 - 添加一个
Node.js操作。 - 在操作的终端中添加这些命令:
GIT_USER=<GH_PERSONAL_ACCESS_TOKEN>
git config --global user.email "<YOUR_GH_EMAIL>"
git config --global user.name "<YOUR_GH_USERNAME>"
yarn deploy
创建这个简单的流水线后,每次推送到您选择的分支的新提交都会使用yarn deploy将您的网站部署到GitHub Pages。阅读本指南以了解更多关于为Docusaurus设置CI/CD流水线的信息。
使用 Azure Pipelines
- 如果您还没有注册,请在Azure Pipelines注册。
- 创建一个组织。在组织内,创建一个项目并从GitHub连接您的仓库。
- 前往 https://github.com/settings/tokens 并生成一个新的 个人访问令牌,带有
repo范围。 - 在项目页面(看起来像
https://dev.azure.com/ORG_NAME/REPO_NAME/_build),使用以下文本创建一个新的管道。同时,点击编辑并添加一个名为GH_TOKEN的新环境变量,其值为你新生成的令牌,然后添加GH_EMAIL(你的电子邮件地址)和GH_NAME(你的GitHub用户名)。确保将它们标记为秘密。或者,你也可以在仓库根目录下添加一个名为azure-pipelines.yml的文件。
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
persistCredentials: true
- task: NodeTool@0
inputs:
versionSpec: '18'
displayName: Install Node.js
- script: |
git config --global user.name "${GH_NAME}"
git config --global user.email "${GH_EMAIL}"
git checkout -b main
echo "machine github.com login ${GH_NAME} password ${GH_TOKEN}" > ~/.netrc
yarn install
GIT_USER="${GH_NAME}" yarn deploy
env:
GH_NAME: $(GH_NAME)
GH_EMAIL: $(GH_EMAIL)
GH_TOKEN: $(GH_TOKEN)
displayName: Install and build
使用无人机
- 创建一个新的SSH密钥,它将作为您项目的部署密钥。
- 为您的私钥和公钥命名,使其具体且不会覆盖您的其他SSH密钥。
- 前往
https://github.com/USERNAME/REPO/settings/keys并通过粘贴您刚刚生成的公钥来添加一个新的部署密钥。 - 打开您的 Drone.io 仪表板并登录。URL 看起来像
https://cloud.drone.io/USERNAME/REPO。 - 点击仓库,点击激活仓库,并添加一个名为
git_deploy_private_key的密钥,其值为你刚刚生成的私钥。 - 在您的仓库根目录下创建一个
.drone.yml文件,并填入以下文本。
kind: pipeline
type: docker
trigger:
event:
- tag
- name: Website
image: node
commands:
- mkdir -p $HOME/.ssh
- ssh-keyscan -t rsa github.com >> $HOME/.ssh/known_hosts
- echo "$GITHUB_PRIVATE_KEY" > "$HOME/.ssh/id_rsa"
- chmod 0600 $HOME/.ssh/id_rsa
- cd website
- yarn install
- yarn deploy
environment:
USE_SSH: true
GITHUB_PRIVATE_KEY:
from_secret: git_deploy_private_key
现在,每当你向GitHub推送一个新标签时,这个触发器将启动drone CI作业来发布你的网站。
部署到Flightcontrol
Flightcontrol 是一项服务,它可以直接从您的 Git 仓库自动构建并将您的 Web 应用程序部署到 AWS Fargate。它为您提供了完全访问权限,以检查和进行基础设施更改,而无需传统 PaaS 的限制。
通过遵循Flightcontrol的逐步Docusaurus指南开始。
部署到 Koyeb
Koyeb 是一个对开发者友好的无服务器平台,用于全球部署应用程序。该平台允许您无缝运行 Docker 容器、Web 应用程序和 API,支持基于 git 的部署、原生自动扩展、全球边缘网络以及内置的服务网格和发现功能。查看 Koyeb 的 Docusaurus 部署指南 以开始使用。
部署到Render
Render 提供 免费的静态网站托管,包括完全托管的SSL、自定义域名、全球CDN以及从您的Git仓库自动持续部署。只需几分钟即可开始,按照 Render的Docusaurus部署指南 操作即可。
部署到 Qovery
Qovery 是一个完全托管的云平台,运行在您的 AWS、Digital Ocean 和 Scaleway 账户上,您可以在一个地方托管静态网站、后端 API、数据库、定时任务以及所有其他应用程序。
- 创建一个Qovery账户。如果您还没有账户,请访问Qovery仪表板来创建一个账户。
- 创建一个项目。
- 点击创建项目并为您的项目命名。
- 点击下一步。
- 创建一个新环境。
- 点击创建环境并为其命名(例如:staging, production)。
- 添加一个应用程序。
- 点击创建应用程序,命名并选择您的GitHub或GitLab仓库,其中包含您的Docusaurus应用程序。
- 定义主分支名称和根应用程序路径。
- 点击创建。应用程序创建后:
- 导航到您的应用程序设置
- 选择端口
- 添加您的Docusaurus应用程序使用的端口
- 部署
- 你现在需要做的就是导航到你的应用程序并点击部署。

就这样。观察状态并等待应用程序部署完成。要在浏览器中打开应用程序,请在应用程序概览中点击操作和打开。
部署到 Hostman
Hostman 允许您免费托管静态网站。Hostman 自动化了一切,您只需要连接您的仓库并按照以下简单步骤操作:
-
创建一个服务。
- To deploy a Docusaurus static website, click Create in the top-left corner of your Dashboard and choose Front-end app or static website.
-
选择要部署的项目。
-
如果您使用GitHub、GitLab或Bitbucket账户登录Hostman,您将看到包含您项目的仓库,包括私有项目。
-
选择您想要部署的项目。它必须包含项目的文件目录(例如
website)。 -
要访问不同的仓库,请点击连接另一个仓库。
-
如果您没有使用您的Git账户凭据登录,您现在将能够访问必要的账户,然后选择项目。
-
-
配置构建设置。
-
接下来,将出现网站定制窗口。从框架列表中选择静态网站选项。
-
包含应用程序的目录指向构建后将包含项目文件的目录。如果您在步骤2中选择了包含网站内容(或
my_website)目录的存储库,您可以将其留空。 -
Docusaurus 的标准构建命令是:
- npm
- Yarn
- pnpm
npm run buildyarn buildpnpm run build -
如果需要,您可以修改构建命令。您可以输入多个命令,用
&&分隔。
-
-
部署。
-
点击部署以开始构建过程。
-
一旦开始,您将进入部署日志。如果代码有任何问题,您将在日志中收到警告或错误消息,指明问题的原因。通常,日志包含您所需的所有调试数据。
-
部署完成后,您将收到一封电子邮件通知,并看到一个日志条目。全部完成!您的项目已启动并准备就绪。
-
部署到Surge
Surge 是一个 静态网页托管平台,您可以使用它从命令行在几秒钟内部署您的 Docusaurus 项目。将您的项目部署到 Surge 既简单又免费(包括自定义域名和 SSL 证书)。
使用Surge在几秒钟内部署您的应用程序,步骤如下:
- 首先,使用 npm 安装 Surge,运行以下命令:
- npm
- Yarn
- pnpm
npm install -g surgeyarn global add surgepnpm add -g surge - 要在项目的根目录中为生产环境构建站点的静态文件,请运行:
- npm
- Yarn
- pnpm
npm run buildyarn buildpnpm run build - 然后,在项目的根目录中运行以下命令:
surge build/
首次使用Surge的用户将会被提示从命令行创建一个账户(这只会发生一次)。
确认您要发布的站点位于build目录中。系统会始终提供一个随机生成的子域名*.surge.sh subdomain(可以编辑)。
使用您的域名
如果您有一个域名,您可以使用以下命令部署您的站点:
surge build/ your-domain.com
您的网站现已免费部署在 subdomain.surge.sh 或 your-domain.com,具体取决于您选择的方法。
设置CNAME文件
将您的域名存储在CNAME文件中,以便将来使用以下命令进行部署:
echo subdomain.surge.sh > CNAME
您可以在将来使用命令surge部署任何其他更改。
部署到Stormkit
您可以将您的Docusaurus项目部署到Stormkit,这是一个用于静态网站、单页应用程序(SPAs)和无服务器功能的部署平台。有关详细说明,请参阅此指南。
部署到 QuantCDN
请参阅文档和博客以获取更多关于部署到QuantCDN的示例和用例。
部署到Layer0
Layer0 是一个一体化平台,用于开发、部署、预览、实验、监控和运行您的无头前端。它专注于大型动态网站,并通过EdgeJS(基于JavaScript的内容分发网络)、预测性预取和性能监控提供一流的性能。Layer0 提供免费层级。只需几分钟即可开始,按照Layer0的Docusaurus部署指南进行操作。
部署到 Cloudflare Pages
Cloudflare Pages 是一个面向前端开发者的 Jamstack 平台,用于协作和部署网站。通过遵循 这篇文章,您可以在几分钟内开始使用。
部署到 Azure 静态 Web 应用
Azure Static Web Apps 是一项服务,它直接从代码库自动构建和部署全栈Web应用程序到Azure,简化了CI/CD的开发者体验。Static Web Apps将Web应用程序的静态资源与其动态(API)端点分开。静态资源从全球分布的内容服务器提供,使客户端能够使用附近的服务器更快地检索文件。动态API通过使用基于事件驱动的函数方法进行无服务器架构扩展,这种方法更具成本效益,并且按需扩展。通过遵循这个逐步指南,您可以在几分钟内开始使用。
部署到Kinsta
Kinsta Static Site Hosting 允许您免费部署多达100个静态站点,支持自定义域名和SSL,每月100 GB的带宽,以及260多个Cloudflare CDN位置。
只需点击几下即可开始,按照我们的Docusaurus on Kinsta文章操作。