Bilibili-Evolved/CONTRIBUTING.md
2020-10-05 14:50:36 +08:00

3.9 KiB

代码贡献指南 Pull Request Guide

环境需求

下载项目代码

将项目 Fork 至自己账户

然后克隆至本地

git clone --single-branch -b preview https://github.com/{{your-name}}/Bilibili-Evolved.git
cd Bilibili-Evolved

安装依赖

yarn

修改代码

待补充:

  • 修改现有功能
  • 添加新功能

修改现有功能

  • 启动监视模式
  • 确认功能对应的代码文件, 通常根据目录结构就可以找到, 实在找不到可以在设置中可以通过检查元素查看到某项功能对应的 data-key, 这个 key 对应的是 src/client/resource-manifest.js 中的 key, 从而可以得知相应的代码文件名称 (path 属性)
  • 修改代码, 保存后会自动编译

添加新功能

  • src/client/settings.js 中的 settings 对象上添加新的 key, 作为新功能的默认值
  • @types/global/index.d.ts 添加对应的类型声明
  • src 下对应的文件夹分类中创建代码文件, 如果只有一个 .js / .ts 文件, 可以不建子文件夹, 带有样式等建议放在同名的子文件夹

⚠️ 由于历史原因, 即便是分在不同的文件夹, 这些功能组件的文件名也不能重名

  • src/client/resource-manifest.js 中添加声明, 类型大致如下:
// 大部分可以参考文件里上方类似的写法
// 早期组件可能还会有一些这里没列出来的已弃用属性, 不建议使用
interface ResourceDefinition {
  [key: string]: {
    /** 代码文件的 js 文件名, 中间要插入一个 `.min.` 例如 abc.ts -> abc.min.js */
    path: string
    /** 在设置面板中的展示名称, 包括子选项 */
    displayNames: {
      [key: string]: string
    },
    /** 样式定义
     * true 会自动取同目录下同名的 `.css` / `.scss` 生成资源定义, 代码中可以用 `${key}Style` 作为样式的 key 导入
     * important 会自动注入到 body 末尾, 不需要再在代码里导入
     * instant 会优先于代码运行前注入到 head 里, 不需要再在代码里导入
    */
    style?: boolean | 'important' | 'instant'
    /** HTML 定义, 为 true 时类似 style, 可以在代码中作为字符串导入, 生成的 key 为 `${key}Html` */
    html? boolean
    /** 为 true 时表示可实时重载, 无需刷新生效, 会调用相应的 unload / reload 方法, 下述 */
    reloadable?: boolean
    /** 定义下拉框数据 */
    dropdown?: {
      /** 需要下拉框的选项 key */
      key: string
      /** 下拉框数据列表 */
      items: string[]
    }
  }
}
  • 写好代码后可以进行编译, 调试时需要多次改动代码也可以使用监视模式
  • src/utils/gui-settings/gui-settings.html 中添加对应的设置项, 可以使用 <checkbox><dropdown> 元素, 子选项需要增加 indent 值, 并在 dependencies 中指定父级的 key.

构建/监视

编译代码 (有时候要跑两次才能真正编译完成, 玄学bug)

(VSCode 对应任务: 重新编译 rebuild)

dotnet builder/dotnet/publish/build.dll

监视代码改动 (Vue构建偶尔会出bug假死, 关掉重启下就行)

(VSCode 对应任务: 监视 watch)

dotnet builder/dotnet/publish/build.dll watch

提交 commit

  • 调试过程中会产生编译后的文件(min文件夹里的东西和根目录的4个脚本主文件), 建议提交前放弃这些文件的更改, 只提交对源代码的修改, 防止冲突
  • commit message 只需写明改动点, 中英文随意, 也不强求类似 commit-lint 的格式

发起合并请求

将 preview 分支往主仓库的 preview 分支合并就行