下載器開(kāi)發(fā):構(gòu)建模式、測(cè)試與 maintain 腳本完整指南)
如何參與番茄小說(shuō)下載器開(kāi)發(fā)構(gòu)建模式、測(cè)試與 maintain 腳本完整指南【免費(fèi)下載鏈接】Tomato-Novel-Downloader番茄小說(shuō)下載器不精簡(jiǎn)版項(xiàng)目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader本文是面向新手的番茄小說(shuō)下載器Tomato-Novel-Downloader開(kāi)發(fā)貢獻(xiàn)指南。項(xiàng)目已用 Rust 完整重寫(xiě)提供 EPUB 下載、斷點(diǎn)續(xù)傳、Web UI、TTS 有聲小說(shuō)等功能支持官方 API 與 No-Official-API 兩種互斥構(gòu)建模式。下面帶你從克隆倉(cāng)庫(kù)、本地構(gòu)建到運(yùn)行 maintain 測(cè)試腳本、提交前檢查一步步完成你的第一次開(kāi)發(fā)貢獻(xiàn)。獲取代碼并了解項(xiàng)目結(jié)構(gòu)在項(xiàng)目頁(yè)面點(diǎn)擊克隆按鈕在終端執(zhí)行g(shù)it clone https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader建議先通讀根目錄的 README 與維護(hù)文檔 MAINTAINING.mdMAINTAINING.md再進(jìn)入src/了解核心模塊劃分目錄職責(zé)src/base_system/配置、日志、書(shū)籍路徑、斷點(diǎn)續(xù)傳等基礎(chǔ)設(shè)施src/download/下載計(jì)劃、分段池、進(jìn)度與第三方接口src/book_parser/EPUB/PDF 生成、TTS 有聲書(shū)、段評(píng)處理src/network_parser/網(wǎng)頁(yè)解析No-Official-API 模式的目錄來(lái)源src/ui/TUI、無(wú)界面 CLI 與 Web UI 三種入口維護(hù)文檔還記錄了已知的依賴體積問(wèn)題如 PDF 依賴鏈、TTS 依賴較重貢獻(xiàn)前建議先讀一遍避免重復(fù)踩坑。理解兩種互斥的構(gòu)建模式番茄小說(shuō)下載器的核心機(jī)制是Cargo.toml中兩個(gè)互斥featureofficial-api與no-official-api兩者不能同時(shí)啟用也禁止使用--all-features。默認(rèn)模式official-apicargo build --release啟用搜索、段評(píng)等功能正文可在官方/第三方之間切換依賴路徑依賴tomato-novel-official-api指向倉(cāng)庫(kù)外的同級(jí)目錄Cargo.toml第 63 行若你本地沒(méi)有該依賴倉(cāng)庫(kù)請(qǐng)改用下面的模式無(wú)官方 API 模式no-official-api倉(cāng)庫(kù)根目錄提供了Cargo_no_official.toml完全不引用官方 API crate# Linux/macOS cp Cargo_no_official.toml Cargo.toml cargo build --release # Windows copy /Y Cargo_no_official.toml Cargo.toml cargo build --release此模式下目錄走網(wǎng)頁(yè)解析src/network_parser/正文強(qiáng)制使用第三方地址池搜索與段評(píng)不可用。修改共享代碼時(shí)務(wù)必保證兩種模式都能編譯通過(guò)。一鍵本地驗(yàn)證maintain 腳本這是貢獻(xiàn)者最重要的工具。兩個(gè)腳本封裝了正確的 feature 組合避免誤用--all-featuresLinux/macOSscripts/maintain.shWindowsscripts/maintain.ps1bash ./scripts/maintain.shpowershell -ExecutionPolicy Bypass -File .\scripts\maintain.ps1腳本會(huì)依次執(zhí)行 6 項(xiàng)檢查格式檢查cargo fmt --all -- --check默認(rèn) feature 測(cè)試cargo test默認(rèn) feature 靜態(tài)檢查cargo clippy --all-targets -- -D warnings無(wú)官方 API 模式測(cè)試cargo test --no-default-features --features no-official-api無(wú)官方 API 模式 clippy重復(fù)依賴檢查cargo tree -d只想快速驗(yàn)證默認(rèn)路徑時(shí)可加跳過(guò)參數(shù)--skip-no-official --skip-tree或-SkipNoOfficial -SkipTree。腳本支持--help查看用法其頭部注釋也明確寫(xiě)明了互斥 feature 的設(shè)計(jì)約定。CI 質(zhì)量門禁你的 PR 會(huì)被自動(dòng)檢查質(zhì)量工作流定義在.github/workflows/quality.yml當(dāng) PR 觸碰src/、Cargo.toml、Cargo.lock、scripts/等路徑并指向main/dev分支時(shí)自動(dòng)觸發(fā)跑兩套 jobDefault featurescheckout 主倉(cāng)庫(kù) 官方 API 依賴倉(cāng)庫(kù)、建立路徑鏈接執(zhí)行 fmt、test、clippyno-official-api僅官方 API 無(wú)關(guān)環(huán)境執(zhí)行對(duì)應(yīng) feature 的 test 與 clippy因此本地跑通 maintain 腳本基本等價(jià)于 CI 通過(guò)。發(fā)布構(gòu)建則由.github/workflows/build-rust.yml覆蓋 linux-amd64/musl/arm64、Android、Windows、macOS 等平臺(tái)其中 musl 與 Android 目標(biāo)使用--no-default-features --features official-api,tts-native,clipboard關(guān)閉較重的tts依賴。涉及 feature 變更時(shí)請(qǐng)同步確認(rèn)發(fā)布工作流的目標(biāo)平臺(tái)仍被覆蓋。在哪里添加測(cè)試項(xiàng)目的單元測(cè)試直接內(nèi)嵌在各源碼文件底部例如src/base_system/book_id.rs、src/download/downloader.rs、src/book_parser/segment_utils.rs等均已有#[cfg(test)]測(cè)試模塊。貢獻(xiàn)時(shí)遵循業(yè)務(wù)行為變更優(yōu)先補(bǔ)充對(duì)應(yīng)模塊的單元測(cè)試依賴變更運(yùn)行cargo tree -d檢查是否引入重復(fù)或過(guò)重的包feature 變更同步更新 MAINTAINING.md、Cargo.toml的 feature 注釋與 CIUI 相關(guān)改動(dòng)Web UI 與 TUI 都是用戶入口建議同時(shí)驗(yàn)證兩邊行為提交前檢查清單bash ./scripts/maintain.sh或 PowerShell 版全部通過(guò)兩種 feature 模式均編譯、測(cè)試通過(guò)單元測(cè)試已補(bǔ)充依賴樹(shù)無(wú)異常重復(fù)feature 或發(fā)布配置變更已同步文檔與 CI提交信息清晰說(shuō)明動(dòng)機(jī)與影響范圍遵循以上流程你的第一份番茄小說(shuō)下載器貢獻(xiàn)就能順利跑通本地驗(yàn)證與 CI 檢查快速合入項(xiàng)目?!久赓M(fèi)下載鏈接】Tomato-Novel-Downloader番茄小說(shuō)下載器不精簡(jiǎn)版項(xiàng)目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考