部署
要构建用于生产的网站的静态文件,请运行:
- npm
- Yarn
- pnpm
npm run build
yarn build
pnpm run build
一旦完成,静态文件将在build
目录中生成。
Docusaurus 的唯一职责是构建您的站点并在构建
中生成静态文件。
现在由您来选择如何托管这些静态文件。
你可以将你的站点部署到静态站点托管服务,如Vercel, GitHub Pages, Netlify, Render和Surge。
Docusaurus 站点是静态呈现的,它通常可以在没有 JavaScript 的情况下工作!
配置
以下参数需要在docusaurus.config.js
中优化路由并从正确的位置提供文件:
名字 | 描述 |
---|---|
url | 您网站的 URL。对于部署在https://my-org.com/my-project/ 的站点,url 是https://my-org.com/ 。 |
baseUrl | 项目的基本 URL,带尾斜杠。对于部署在https://my-org.com/my-project/ 的站点,baseUrl 是/my-project/ 。 |
本地测试构建
在将构建部署到生产环境之前,对其进行本地测试非常重要。Docusaurus 提供了一个Docusaurus serve
命令:
- npm
- Yarn
- pnpm
npm run serve
yarn serve
pnpm run serve
默认情况下,这将加载您的网站http://localhost:3000/
.
尾斜线结构
Docusaurus 有一个trailingSlash
配置来允许自定义 URLs/links 和发出的文件名模式。
默认值通常可以正常使用。不幸的是,每个静态托管提供商都有不同的行为,将完全相同的站点部署到不同的主机上可能会导致不同的结果。根据您的主机,更改此配置可能很有用。
使用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)
require("dotenv").config();
module.exports = {
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 提供者 (e.g. Netlify 和 Vercel). 我们将使用它们作为引用,但同样的推理也适用于其他提供者。
- GitHub Pages (根据定义,它也是 Jamstack,但我 们分别对其进行比较).
如果你不确定选择哪一个,问以下问题:
我愿意为此投入多少资源(金钱、人力、时间等)?
- 🔴 自托管需要网络以及 Linux 和 web 服务器管理方面的经验。这是最困难的选择,需要花费最多的时间来成功管理。在费用方面,云服务几乎从来不是免费的,购买/部署本地服务器可能会更加昂贵。
- 🟢 Jamstack 提供商可以帮助你在几乎没有时间的情况下建立一个工作的网站,并提供像服务器端重定向这样的功能,这些功能很容易配置。许多提供商提供慷慨的构建时间配额,即使是免费计划,您也几乎永远不会超过。然而,免费计划是有限制的,一旦达到这些限制,你就需要付费。请查看供应商的定价页面以了解详细信息。
- 🟡 GitHub Pages 部署工作流程的设置可能很繁琐。 (证据: 看部署到 GitHub Pages的长度!) 但是,此服务(包括构建和部署)对于公共存储库始终是免费的,并且我们有详细的说明来帮助您使用它。
我需要多少服务器端定制?
- 🟢 使用自托管,您可以访问整个服务器的配置。您可以将虚拟主机配置为根据请求 URL 提供不同的内容,您可以进行复杂的服务器端重定向,您可以实现身份验证,等等。如果你需要很多服务器端功能,自己托管你的网站。
- 🟡 Jamstack 通常提供一些服务器端配置(例如 URL 格式化(尾斜杠),服务器端重定向等)。
- 🔴 GitHub 页面不暴露服务器端配置除了强制 HTTPS 和设置 CNAME 记录。
我需要协作友好型部署工作流吗?
- 🟡 自托管服务可以利用像 Netlify 这样的持续部署功能,但涉及到更多的繁重工作。通常,您会指定一个特定的人来管理部署,并且与其他两个选项相反,工作流不会非常基于礼品。
- 🟢 Netlify 和 Vercel 对每个 pull 请求都有部署预览,这对于团队在合并到生产环境之前检查工作很有用。您还可以管理对部署具有不同成员访问权限的团队。
- 🟡 GitHub Pages 无法以非复杂的方式进行部署预览。一个 repo 只能与一个站点部署相关联。另一方面,您可以控制谁拥有对站点部署的写访问权。
没有什么灵丹妙药。在做出选择之前,你需要权衡你的需求和资源。
自托管
Docusaurus 可以使用Docusaurus server
自托管。使用--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 添加新的托管选项。但是,您可以在单独的网站(例如您的博客或提供商的官方网站)上发布您的书面陈述,并要求我们提供指向您的书面陈述的链接。