本页内容
贡献与支持
我们欢迎并感谢所有对 Deno 的贡献。
此页面旨在帮助您开始贡献代码。
项目 跳转到标题
denoland
组织中有许多仓库是 Deno 生态系统的一部分。
仓库有不同的范围,使用不同的编程语言,并且在贡献方面有不同的难度级别。
为了帮助您决定哪个仓库可能是开始贡献的最佳选择(和/或符合您的兴趣),这里有一个简短的比较(代码库主要包含粗体显示的语言)
deno 跳转到标题
这是提供 deno
CLI 的主仓库。
如果您想修复 deno
的错误或添加新功能,这是您要贡献的仓库。
包括 Node.js 兼容层的大部分系统都是用 JavaScript 和 TypeScript 模块实现的。如果您希望做出您的首次贡献,这些是很好的起点。
在迭代此类模块时,建议在您的 cargo
标志中包含 --features hmr
。这是一种特殊的开发模式,其中 JS/TS 源代码不包含在二进制文件中,而是在运行时读取,这意味着如果它们发生更改,则无需重建二进制文件。
要使用以下命令,您需要首先在您的系统上安装必要的工具,如此处 所述。
# cargo build
cargo build --features hmr
# cargo run -- run hello.ts
cargo run --features hmr -- run hello.ts
# cargo test integration::node_unit_tests::os_test
cargo test --features hmr integration::node_unit_tests::os_test
另请记住在您的编辑器设置中引用此功能标志。对于 VSCode 用户,请将以下内容合并到您的工作区文件中
{
"settings": {
"rust-analyzer.cargo.features": ["hmr"],
// Adds support for resolving internal `ext:*` modules
"deno.importMap": "tools/core_import_map.json"
}
}
要在 VSCode 中使用开发版本的 LSP
- 安装并启用 Deno VSCode 扩展
- 更新您的 VSCode 设置并将
deno.path
指向您的开发二进制文件
// .vscode/settings.json
{
"deno.path": "/path/to/your/deno/target/debug/deno"
}
语言:Rust、JavaScript、TypeScript
deno_std 跳转到标题
Deno 的标准库。
语言:TypeScript、WebAssembly
fresh 跳转到标题
下一代 Web 框架。
语言:TypeScript、TSX
deno_lint 跳转到标题
为 deno lint
子命令提供支持的代码检查器。
语言:Rust
deno_doc 跳转到标题
为 deno doc
子命令提供支持的文档生成器,以及 https://docs.deno.org.cn/api 和 https://jsr.deno.org.cn 上的参考文档。
语言:Rust
rusty_v8 跳转到标题
V8 JavaScript 引擎的 Rust 绑定。技术性很强且底层。
语言:Rust
serde_v8 跳转到标题
在 V8 和 Rust 对象之间提供双射层的库。基于 serde
库。技术性很强且底层。
语言:Rust
deno_docker 跳转到标题
Deno 的官方 Docker 镜像。
通用说明 跳转到标题
-
阅读风格指南。
-
请不要使基准测试变得更糟。
-
在社区聊天室中寻求帮助。
-
如果您要处理某个问题,请在开始处理该问题之前在问题的评论中提及。
-
如果您要开发新功能,请在开始开发该功能之前创建问题并与其他贡献者讨论;我们感谢所有贡献,但并非所有提出的功能都会被接受。我们不希望您花费数小时开发可能不被接受的代码。
-
请在论坛中保持专业。我们遵循Rust 的行为准则 (CoC)。遇到问题?发送电子邮件至 ry@tinyclouds.org。
提交 Pull Request 跳转到标题
在向任何仓库提交 PR 之前,请确保完成以下操作
- 为 PR 提供描述性标题。
良好 PR 标题的示例
- fix(std/http): 修复服务器中的竞争条件
- docs(console): 更新文档字符串
- feat(doc): 处理嵌套的重新导出
不良 PR 标题的示例
- fix #7123
- update docs
- fix bugs
- 确保存在相关问题,并在 PR 文本中引用该问题。
- 确保存在涵盖更改的测试。
向 deno
提交 PR 跳转到标题
除了以上内容,还要确保
要使用以下命令,您需要首先在您的系统上安装必要的工具,如此处 所述。
-
cargo test
通过 - 这将为deno
运行完整的测试套件,包括单元测试、集成测试和 Web 平台测试 -
运行
./tools/format.js
- 这将格式化所有代码,以符合仓库中的一致风格 -
运行
./tools/lint.js
- 这将使用clippy
(对于 Rust)和dlint
(对于 JavaScript)检查 Rust 和 JavaScript 代码中常见的错误和错误
向 deno_std
提交 PR 跳转到标题
除了以上内容,还要确保
-
您编写的所有代码都在
TypeScript
中(即,不要使用JavaScript
) -
deno test --unstable --allow-all
通过 - 这将为标准库运行完整的测试套件 -
在仓库的根目录中运行
deno fmt
- 这将格式化所有代码,以符合仓库中的一致风格。 -
运行
deno lint
- 这将检查 TypeScript 代码中常见的错误和错误。
向 fresh
提交 PR 跳转到标题
首先,请务必安装 Puppeteer。然后,请确保运行 deno task ok
并成功通过。
为 API 编写文档 跳转到标题
记录所有公共 API 非常重要,我们希望在代码中内联完成此操作。这有助于确保代码和文档紧密耦合在一起。
JavaScript 和 TypeScript 跳转到标题
所有公开的 API 和类型,无论是通过 deno
模块还是全局/window
命名空间,都应具有 JSDoc 文档。此文档将被解析并提供给 TypeScript 编译器,因此易于进一步向下游提供。JSDoc 块位于它们适用的语句之前,并以 /**
开头,以 */
结尾。例如
/** A simple JSDoc comment */
export const FOO = "foo";
更多信息请访问:https://jsdoc.node.org.cn/
Rust 跳转到标题
使用本指南在 Rust 代码中编写文档注释。