开发快速入门¶
本页介绍如何运行、测试和开发 ZJUI-Learn。确保您已经安装了 ZJUI-Learn:
- 本地,按照本地运行 指南
- 通过 Docker,遵循 通过 Docker 运行 指南
开发服务器¶
在开发模式下运行服务器,以便在检测到更改时自动重新启动:
make dev
在网络浏览器中转到 http://localhost:3000.
要停止服务器,请使用 Ctrl+C。
生产构建¶
您还可以使用服务器代码的预编译版本进行构建和运行,以更接近地模拟生产环境中将发生的情况。查看在生产环境中运行设置说明 了解更多信息。
make build
make start
工作空间¶
如果您需要 workspaces 的支持,请确保 Docker 已安装并运行,然后在单独的终端中运行:
sudo make dev-workspace-host # or sudo make start-workspace-host
# Make sure to run ZJUI-Learn as root
sudo make dev
在 macOS 本机安装中,您应该在 config.json 中设置以下内容:
{
"workspaceDevContainerHostname": "localhost",
"workspaceJobsDirectoryOwnerUid": 1001,
"workspaceJobsDirectoryOwnerGid": 1001
}
更多信息可以在 config.json 文档中找到。
???注意“工作区故障排除”
You can list the active hosts with:
```sql
SELECT * FROM workspace_hosts;
```
If you see no hosts, the workspace host is not running. If the `ready_at` column is an older date, the workspace host may also not be running.
Since ZJUI-Learn manages the workspace files, you need to also run ZJUI-Learn as root.
文档¶
如果您想预览文档,请运行:
make dev-docs
测试¶
如果您向 ZJUI-Learn 贡献代码,则必须确保您的更改有效并通过我们的风格指南。有关调试和测试的更多信息可以在开发者指南 中找到。贡献信息可参见贡献指南。
运行测试套件(Docker 必须安装并运行):
make test-all
或者,仅运行测试的特定子集:
make test-js # Javascript tests (both packages and applications)
make test-prairielearn # ZJUI-Learn application tests
make test-python # Python tests
make test-e2e # E2E tests (run `make e2e-deps` first)
JavaScript 测试¶
主要的 JavaScript 测试套件的运行时间可能需要 10 多分钟,因此您在开发时只能运行特定的测试文件。要运行特定的测试文件,首先需要运行make start-support启动数据库和其他服务,然后才能运行特定的测试文件。
make start-support
cd apps/prairielearn
pnpm vitest src/tests/getHomepage.test.ts
封装测试¶
要测试特定包,您可以从包的目录运行 pnpm test。
cd packages/csv
pnpm test
棉绒¶
对 ZJUI-Learn 的所有更改都必须在合并之前通过我们的 linter。
make lint
或者,仅检查特定类型的文件:
make lint-js # JavaScript only
make lint-python # Python only
make lint-all # Additional linters
格式化¶
您可以使用以下方法格式化 + 自动修复 lint 错误:
make fix-js
make fix-python
与 HEAD 相比,格式化所有已更改的文件(暂存 + 未暂存 + 未跟踪):
make format-changed
这比格式化整个代码库要快,因为它只处理您修改过的文件。
如果您使用 VSCode 开发代码,则不需要运行这些代码,因为我们提供了一组推荐的扩展和默认配置,这些扩展和默认配置将在保存时格式化文件。
更新依赖项¶
如果您切换分支、拉取新代码或编辑 Python 依赖项,则需要更新依赖项。
make deps
处理包¶
在处理 packages/ 目录中的某些内容时,您需要重建包,然后任何更改才会对其他包或使用该包的应用程序可见。您可以使用 make build 构建所有内容,也可以在包中运行 dev 脚本,以便在发生更改时自动重建它。
# From the root of the repository:
pnpm --filter @prairielearn/postgres dev
# From a specific package directory, e.g. `packages/postgres`:
pnpm dev
更多信息¶
大多数有关开发的信息可以在开发者指南 中找到。它概述了调试和测试技巧、最佳实践和编码风格,以及有关 ZJUI-Learn 各个方面的详细信息(问题呈现、数据库模式等)。