mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
3.9 KiB
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 分支合并就行