Skip to content

开发者指南

感谢您对 Beszel 开发的兴趣!

我们欢迎您的贡献,如果您计划进行任何重大更改,最好先在讨论或问题中与我们联系。

先决条件

  • Go 1.25.1+(用于修改 Go 代码)
  • Bun 1.1+ 或 Node 18+(用于修改 Web 用户界面)

如果您还没有,请 fork 仓库 并克隆您的 fork 到本地工作:

bash
git clone https://github.com/your_username/beszel.git

为不同的更改创建单独的分支

建议为每个错误修复和功能创建一个新的分支。 如果您计划提交多个 PR 以便在最终合并之前单独进行审查,则这是必需的。

开发环境

为了进行项目开发,需要启动三个进程:

  1. 中心 (Go)
  2. 代理程序 (Go)
  3. Web UI (TypeScript / Vite)

每个作业都有一个 make 命令启动。

bash
# 启动中心
make dev-hub
# 启动代理程序
make dev-agent KEY="..." TOKEN="..." HUB_URL="..."
# 启动 Web UI
make dev-server

或者,您可以一次启动所有进程并结合输出:

bash
make -j dev KEY="..." TOKEN="..." HUB_URL="..."

导航到 http://localhost:8090 查看 Web UI。

提示

如果安装了 entr,则当您保存代码更改时,中心/代理程序会自动重建。

排除生成的语言文件

如果您使用 build 命令构建 Web UI,locales 目录中的许多语言文件可能会被更新。

请在 .git/info/exclude 中排除此目录,以避免提交这些更改。

bash
echo "locales/" >> .git/info/exclude

VSCode 配置

您可以尝试以下 VSCode 配置,以便更轻松地处理项目。欢迎推荐您认为有用的任何更改。

.vscode/settings.json

json
{
  "go.buildFlags": [
    "-tags=testing,development"
  ],
  "go.testEnvVars": {
    "GOEXPERIMENT": "synctest"
  },
  "go.toolsEnvVars": {
    "GOEXPERIMENT": "synctest"
  },
  "biome.configurationPath": "./internal/site/biome.json",
  "biome.lsp.bin": "./internal/site/node_modules/@biomejs/biome/bin/biome"
}

.vscode/launch.json

json
{
	"version": "0.2.0",
	"configurations": [
		{
			"name": "Start hub",
			"type": "go",
			"request": "launch",
			"mode": "auto",
			"cwd": "${workspaceFolder}/internal/cmd/hub",
			"program": "${workspaceFolder}/internal/cmd/hub/hub.go",
			"args": ["serve"]
		},
		{
			"name": "Start agent",
			"type": "go",
			"request": "launch",
			"mode": "auto",
			"cwd": "${workspaceFolder}/internal/cmd/agent",
			"env": {
				"KEY": "<key>",
				"TOKEN": "<token>",
				"HUB_URL": "http://localhost:8090"
			},
			"program": "${workspaceFolder}/internal/cmd/agent/agent.go"
		}
	]
}

基于 MIT 许可发布