开发设置及构建、服务等命令
构建 officially supported on Linux-based environments and macOS. Other environments, such as DevContainers, are supported on a best-effort basis. For builds on Windows, you can follow steps similar to those for Linux using Windows Subsystem for Linux command line WSL.
以下说明将介绍如何设置此网站的开发环境。
云 IDE 设置
Gitpod
通过 Gitpod.io 进行操作
Fork 此仓库。有关帮助,请参阅 Fork a repository。
从 gitpod.io/workspaces 创建新工作区(仅需执行一次)或打开你 Fork 的现有工作区。你也可以访问类似以下的链接:
https://gitpod.io#https://github.com/YOUR_GITHUB_ID/opentelemetry.io。注意:如果你有权限在此仓库中进行操作,或者只是想浏览一下,请打开 https://gitpod.io/#https://github.com/open-telemetry/opentelemetry.io。
Gitpod 会自动为你安装特定于仓库的包。现在你可以进行 构建、服务以及修改网站文件了。有关如何提交更改的详细信息,请参阅 提交内容。
Codespaces
通过 GitHub Codespaces 进行操作
- Fork 网站仓库。
- 从你的 Fork 中打开一个 Codespace。
你的开发环境将通过 DevContainer 配置进行初始化。现在你可以进行 构建、服务以及修改网站文件了。有关如何提交更改的详细信息,请参阅 提交内容。
本地设置
Fork 并然后 clone 网站仓库:https://github.com/open-telemetry/opentelemetry.io。
进入仓库目录
cd opentelemetry.io安装或升级到 Node.js 的活动 LTS 版本。我们建议使用 nvm 来管理你的 Node 安装。在 Linux 上,运行以下命令,它将安装并升级到 .nvmrc 文件中指定的版本
nvm install要在 Windows 上安装,请使用 nvm-windows。我们建议使用
cmd而不是 Windows PowerShell 来运行以下命令nvm install lts && nvm use lts获取 npm 包和其他先决条件
npm install
启动你喜欢的 IDE。现在你可以进行 构建、服务以及修改网站文件了。有关如何提交更改的详细信息,请参阅 提交内容。
构建
要构建网站,请运行
npm run build
生成的网站文件位于 public 目录下。
服务
要服务网站,请运行
npm run serve
网站将在 localhost:1313 上提供服务。
如果你需要测试 Netlify 重定向,请使用以下命令并在 localhost:8888 上访问网站
npm run serve:netlify
serve 命令是从内存而不是从磁盘提供文件。
如果在 macOS 上遇到诸如 too many open files 或 pipe failed 之类的错误,你可能需要增加文件描述符限制。请参阅 Hugo issue #6109。
内容和子模块
网站由以下内容构建而成
content/、static/等目录下的文件,遵循 Hugo 默认配置。- 挂载点,由 Hugo 在
config/_default/module-template.yaml中的 config 定义。挂载点要么直接来自 content-modules 下的 git 子模块,要么来自content-modules的预处理内容(放在tmp/下),除此之外不在其他任何地方。
子模块更改
如果你更改了 content-modules 子模块中的任何内容,那么你首先需要向子模块的仓库提交一个 PR(包含子模块的更改)。只有在子模块 PR 被接受后,你才能更新子模块,使更改在此网站中生效。
管理 content-modules 的更改,最好是与相应的子模块链接到的仓库进行协作,而不是直接在子模块内部操作。
经验丰富的贡献者可以直接在子模块中工作。然后你就可以直接构建和提供(子模块)更改的服务了。默认情况下,CI 脚本在每次调用时都会获取子模块。为了在你操作子模块时阻止此行为,请设置环境变量 GET=no。在提交 PR 之前,你还需要运行 git fetch --unshallow 子模块。或者,设置 DEPTH=100 并重新获取子模块。
DevContainer 支持
此仓库已配置为用于 Development Containers,它们支持各种云和本地 IDE,例如(按字母顺序排列)