Bitwarden 贡献文档
⮐ Bitwarden Contributing Documentation我的博客联系我
  • 关于
  • 入门
    • 概述
    • 工具
    • 服务器
      • 设置指南
      • 高级服务器设置
      • 数据库
        • MSSQL
        • 实体框架
      • 事件日志
      • Ingress 隧道
      • SCIM
      • 自托管指南
      • 系统管理门户
      • 单点登录 (SSO)
        • 本地 IdP
        • Okta
      • 故障排除
      • 用户机密
      • 公共 API
    • 网页客户端
      • 网页密码库
        • WebAuthn
      • 浏览器端
        • 生物识别解锁
        • Firefox 隐私模式
      • 桌面端
        • Mac App Store Dev
        • Microsoft Store
        • Native Messaging Test Runner
        • 更新测试
      • CLI
      • 故障排除
    • 移动端
      • Android
        • F-Droid
      • iOS
      • .NET MAUI (legacy)
        • Android
        • iOS
        • watchOS
    • SDK
      • 内部 SDK
      • Secrets Manager
        • Integrations
          • Kubernetes
    • 业务 App
      • 目录连接器
        • JumpCloud
        • OpenLDAP Docker 服务器
      • Key Connector
      • Splunk App
  • 贡献
    • 贡献
    • 代码样式
      • =Android & Kotlin
      • Angular & TypeScript
      • C#
      • =Rust
      • T-SQL
      • =Swift
      • Tailwind
    • 数据库迁移
      • 进化数据库设计
    • 提交签名
    • 拉取请求
      • =贡献审查程序
      • 分支
      • 代码审查
      • UI 审查 - Chromatic
    • 无障碍
    • 依赖管理
    • 功能标记
    • 模板存储库
    • 测试
      • =数据库集成测试
      • 负载测试
      • 单元测试
        • 命名约定
        • 测试结构
    • 修改用户机密
  • 架构
    • 架构
    • 架构决策记录 (ADR)
      • 0001 - Angular Reactive Forms
      • 0002 - Public API for modules
      • 0003 - Adopt Observable Data Services for Angular
      • 0004 - Refactor State Service
      • 0005 - Refactor Api Service
      • 0006 - Clients: Use Jest Mocks
      • 0007 - Manifest V3 sync Observables
      • 0008 - Server: Adopt CQRS
      • 0009 - Composition over inheritance
      • 0010 - Angular Modules
      • 0011 - Scalable Angular Clients folder structure
      • 0012 - Angular Filename convention
      • 0013 - Avoid layered folder structure for request/response models
      • 0014 - Adopt Typescript Strict flag
      • 0015 - Short Lived Browser Services
      • 0016 - Move Decryption and Encryption to Views
      • 0017 - Use Swift to build watchOS app
      • 0018 - Feature management
      • 0019 - Adoption of Web Push
      • 0020 - Observability with OpenTelemetry
      • 0021 - Logging to Standard Output
      • =0022 - Authorization
      • =0023 - Identifying Integrated Clients
    • 移动客户端架构
      • =Android
      • =iOS
        • =推送通知故障排除提示
      • =.NET MAUI (legacy)
        • =概述
        • watchOS
    • =SDK 架构
      • =数据模型
      • =依赖
      • Password Manager
        • Web
          • =互操作性
      • =Secrets Manager
      • =服务器绑定
      • =版本控制和破坏性更改
    • 网络客户端架构
      • 概述
      • 数据模型
      • 表示层
        • Angular
        • CLI
      • =依赖注入
      • 服务层
        • Vision
        • 实现
    • 服务器架构
    • 深度剖析
      • 身份验证
        • 双重身份验证
      • =授权
      • =浏览器自动填充
        • 收集页面详细信息
        • 生成并执行填充脚本
        • 表单提交检测
        • Shadow DOM
        • =内联自动填充菜单
      • Captcha
      • =只读数据库副本
      • 事件日志
      • =FIDO2 和通行密钥
        • =凭据
        • =操作
        • =命名惯例
        • =实现
          • =提供程序
            • =浏览器扩展
          • =依赖方
            • =用于解密的通行密钥
        • =术语表
      • 推送通知
        • 移动端推送通知
        • 其他客户端推送通知
      • =SSH 密钥和代理
        • =SSH 代理
      • =状态提供程序框架
        • =派生状态
    • =安全
      • =定义
      • =原则
        • =P01 - 锁定的密码库是安全的
        • =P02 - 半受损设备密码库的有限安全性
        • =P03 - 完全损坏的系统没有安全性
        • =P04 - 控制密码库数据的访问权限
        • =P05 - 将安全漏洞的影响降至最低
      • =要求
由 GitBook 提供支持
在本页
  • 位置和用途​
  • 内容和许可​
  • 编辑器配置​
  • 本地 linting
  • 依赖管理​
  • 议题模板​
  • 代码所有权​
  1. 贡献

模板存储库

上一页功能标记下一页测试

最后更新于3个月前

对应的

位置和用途​

私有模板库是新项目的基础文件集和整体设置,可在 GitHub 仓库创建界面中选择。它包含了拉取请求模板、inting、持续集成入门等所需的内容。一般适用于所有版本库的核心概念都应在这里创建和审查,然后再发布。该模板代表了整个公司的最佳实践,但也应被视为根据版本库需求进一步设置的起点;在许多情况下,都需要进行定制,详见下文。

内容和许可​

文本许可证文件声明了 GPL 和 Bitwarden 专有许可证的使用途。带有 README 的 bitwarden_license 目录将用于放置 Bitwarden 许可的代码和内容,否则将指定使用 GPL。这些文件及其位置/结构不得修改。

安全和贡献文件阐明了公司的政策和方法。如果有特殊情况,可以对这些文件进行修改,但极有可能保持原样。

根目录下的 README 预期可以定制,但没有明确的内容规定。由于文档可以保存在其他地方,如本网站!因此建议简短地写上标题和几句话的简单描述。

编辑器配置​

有一组文件为 Git 定义了预期属性和忽略属性。后者有望根据版本库的需求进行扩展,但在可能的情况下,模板本身也应针对其他用例进行扩展。流行的操作系统和 IDE 特定的忽略项已经存在。

编辑器配置为文件格式设置了规则。与上述忽略类似,模板也应根据新语言和公司标准进行更新。Linters 在执行规则时将遵从编辑器配置。

本地 linting

和通过 NPM 进行的 用于本地 lint 和格式化已更改的文件。运行:

npm install

克隆您的新存储库以安装必要的 Git hook 后。

"*.cs": "dotnet format --include"

或 TypeScript:

"*.ts": "eslint --cache --cache-strategy content --fix"

上面使用的编辑器配置可由许多 linter 访问,以驱动结果。

依赖管理​

为可管理依赖更新配置。它:

  • 每个包管理器将次要更改和补丁更改合并到一个汇总拉取请求中。

  • 使用依赖性仪表板,我们可以看到哪些拉取请求尚未创建,但仍然可以管理工作负载。

  • 通过重建、语义版本控制和锁定文件更新来管理更新。

  • 以较小的拉取请求限制作为起点。

  • 包括了作为单独拉取请求的主要更新(最新)。

  • 将计划安排在周末,此时组织可能有更多的 Actions 工作人员。

如果存储库随着时间的推移而扩展以包含新的包管理器,建议将所有包管理器保持启用状态。更新计划以及单个存储库有多少拉取请求。可能需要例外、其他包管理器和特定于依赖项的配置。

议题模板​

针对集中和相关链接议题的配置,以及用于创建拉取请求的模板,该模板使用几乎所有更改所需的公共部分。说明存在于拉取请求模板中,但一般来说:

  • 预期会有跟踪链接,例如 GitHub 或 Jira 议题。

  • 如果存储库没有用户界面,则可以移除「Screenshots」部分。

  • 根据存储库上下文的需要调整提醒。

您不太可能需要在目标存储库中对模板进行大量修改,并且此处的原始模板始终可以通过组织内的其他改进进行扩展。

代码所有权​

要定义的 CODEOWNERS 条目指示「拥有」相关路径上的代码的团队。

在的 lint-staged 部分中,存在针对特定文件类型的 linter 配置,并使用 作为所有文件的默认格式化程序。扩展这些文件类型,以使其适用于具有可用格式化程序的相关文件类型,例如使用 .NET 应用程序:

考虑固定依赖项的(尤其是在 root),就像上面用于本地 linting 的最佳实践一样。开发依赖项(例如格式化程序和 linter)需要在所有团队之间进行沟通和协调部署,以便代码风格根据我们的标准和模板存储库本身中看到的编辑器配置保持一致。

官方页面地址
Husky
lint-staged
包配置
Prettier
最佳实践