部署
要为生产环境构建网站的静态文件,请运行:
- 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
中,下面这些参数是必填的,让 Docusaurus 能够优化路由,并从正确的位置加载文件:
参数 | 描述 |
---|---|
url | 站点 URL。 如果网站部署在 https://my-org.com/my-project/ , url 就是 https://my-org.com/ |
baseUrl | 站点的 base 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
配置,允许你自定义 URL 链接和输出的文件名格式。
你一般不需要修改默认值。 遗憾的是,每家静态托管商的行为都不一样,而把同一网站部署到不同服务商的结果可能大相径庭。 根据你的托管商的不同,你可能需要修改此配置。
要更好地了解你的托管商的行为,可以参见 slorber/trailing-slash-guide,并依此配置 trailingSlash
选项。
使用环境变量
把可能敏感的信息放在环境变量中的做法很常见。 然而,在典型的 Docusaurus 网站中, docusauurus.config.js
文件是唯一一个可以接触到 Node.js 环境的地方(参见我们的架构概述)。除此之外的所有东西(MDX 页面,React 组件等等),都处于客户端中,不能直接访问 process
全局变量。 在这种情况下,你可以考虑使用 customFields
将环境变量传递给客户端。
// 如果你正在使用 dotenv (https://www.npmjs.com/package/dotenv)
import 'dotenv/config';
export default {
title: '...',
url: process.env.URL, // 你也可以通过环境变量来控制站点细节
customFields: {
// 把你的自定义环境放在这里
teamEmail: process.env.EMAIL,
},
};
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
export default function Home() {
const {
siteConfig: {customFields},
} = useDocusaurusContext();
return <div>通过 {customFields.teamEmail} 联系我们!</div>;
}
选择托管服务商
有几种常见的托管选择:
- 自行托管,借助 HTTP 服务器,例如 Apache2 和 Nginx。
- Jamstack 提供商(例如,Netlify 和 Vercel)。 我们会以它们为参考,但同样的道理也可以适用于其他提供商。
- GitHub Pages(就定义而言,它也算是 Jamstack,但我们单独列出它来进行对比)。
如果你不清楚选择哪一个,问自己下面几个问题:
我愿意为其投资多少资源(金钱、个人时间,或是其他)?
- 🔴 自行托管要求网络以及 Linux 和 web 服务器管理方面的经验。 这是最困难的选项,需要最多的时间来成功管理。 就费用而言,云服务几乎永远不会是免费的,而购买/部署本地服务器的费用甚至可能更高。
- 🟢 Jamstack 提供商可以几乎瞬间帮你建立一个运作的网站,并且提供易于配置的功能,像是服务端重定向。 许多提供商提供了非常慷慨的构建时间配额,甚至免费套餐也够用,你基本不会超过限额。 但是,免费计划也存在一些限制,一旦达到这些限制,你就需要付费了。 要了解详情,请查看你的提供商的定价页面。
- 🟡 GitHub Pages 部署的工作流程设置起来可能很麻烦。 (不信的话,可以看看部署到 GitHub Pages 部分的长度!) 但是,这项服务(包括构建和部署)对所有公共仓库都永久免费,并且我们也有详细教程,帮助你正确运行它。