范:Changesets 發(fā)布流程、版本策略與 @trigger.dev/core 子路徑導(dǎo)入指南)
AI Agent后端任務(wù)調(diào)度開發(fā)工具可觀測性AI 應(yīng)用【免費下載鏈接】trigger.devTrigger.dev – build and deploy durable AI agents and workflows項目地址https://gitcode.com/gh_mirrors/tr/trigger.dev點擊查看免費下載本篇指南圍繞倉庫內(nèi)的 .claude/rules/sdk-packages.md 規(guī)則展開它約束著 Trigger.dev 所有packages/目錄下公開 SDK 包的每次改動從何時必須寫 changeset、版本號默認(rèn)與升級邊界到trigger.dev/core必須使用子路徑導(dǎo)入、rules/與skills/目錄的治理邊界再到用hello-world項目驗證改動的實操流程。讀完本文你將掌握在 Trigger.dev monorepo 中安全修改并發(fā)布公共包的完整工作流以及這些規(guī)則背后的源碼與配置依據(jù)。規(guī)則適用范圍一切面向用戶的packages/**改動該規(guī)則通過 frontmatter 中的paths字段聲明了自己的作用域--- paths: - packages/** ---也就是說只要改動落在packages/目錄下規(guī)則就會在 Claude Code 等 Agent 工作流中自動加載。當(dāng)前倉庫中該目錄包含以下公開包見 packages/包目錄說明cli-v3trigger.devCLI開發(fā)、部署、環(huán)境變量、登錄等命令core橫跨 SDK 與平臺的核心代碼trigger.dev/coreplugins插件包trigger.dev/plugins已加入 changesets 的 ignore 列表pythonPython SDK 相關(guān)工具包react-hooksReact Hooks 包redis-workerRedis Worker 包內(nèi)部消費不獨立發(fā)布rsc、schema-to-json、trigger-sdk其他公開/輔助包這些包會發(fā)布到 npm 并被用戶直接npm install引用因此規(guī)則的第一句話就點明了核心立場Changes topackages/are customer-facing面向客戶。任何改動都可能影響線上用戶的 SDK 行為所以不能用內(nèi)部重構(gòu)的心態(tài)對待。強(qiáng)制 Changesetpnpm run changeset:add規(guī)則要求對packages/的任何改動都必須添加 changeset命令為pnpm run changeset:add該命令是倉庫根 package.json 中對changesetCLI 的腳本封裝changeset:add: changeset運行后會以交互方式引導(dǎo)你選擇受影響的包、確定版本升級類型并撰寫發(fā)布說明。關(guān)于什么時候加 changeset倉庫的 CHANGESETS.md 給出了更細(xì)的補(bǔ)充changeset 是面向用戶的發(fā)布說明user-facing release notes而不是每一次改動的流水賬。僅當(dāng)改動是用戶能感知、會據(jù)此行動的變化時才需要添加純內(nèi)部重構(gòu)refactors、事務(wù)性改動chores以及不被獨立消費的包例如trigger.dev/redis-worker可以跳過。想查看精確歷史的人應(yīng)該去讀 commit。配套的配置.changeset/config.json根目錄的 .changeset/config.json 定義了整個發(fā)布機(jī)制的骨架幾個關(guān)鍵字段值得注意fixed: [[trigger.dev/*, trigger.dev]]所有trigger.dev/*包與trigger.devCLI 被固定為一組版本號必須同步升級避免 SDK 內(nèi)部互相依賴時出現(xiàn)版本錯位access: public發(fā)布到公開 npm registrybaseBranch: main基于main分支計算版本與生成發(fā)布 PRignore: [webapp, supervisor, trigger.dev/plugins]apps/下的服務(wù)端應(yīng)用不參與 changesets 版本管理trigger.dev/plugins也被顯式忽略changelog使用remix-run/changelog-github生成 changelog 并關(guān)聯(lián)到triggerdotdev/trigger.dev倉庫。發(fā)布流水線如何被觸發(fā)按照 CHANGESETS.md 的說明整個發(fā)布鏈路是自動化的在main分支的提交中新增 changeset 后changesets-pr.ymlworkflow 會自動運行創(chuàng)建一個執(zhí)行pnpm run changeset:version的版本發(fā)布 PR該發(fā)布 PR 的正文會被自動增強(qiáng)合并去重后的包變更與.server-changes/條目摘要版本 PR 合并進(jìn)main后release.ymlworkflow 會自動構(gòu)建、把包發(fā)布到 npm并生成統(tǒng)一的 GitHub Release。因此規(guī)則強(qiáng)調(diào)在包含改動的同一個 commit 里就加上 changeset這是讓 CI 流水線正常工作的最佳實踐。版本號策略默認(rèn) patch升級必須走審批規(guī)則的版本邊界非常清晰默認(rèn)選patch修復(fù)性變更如 bugfixminor新增向后兼容功能必須獲得 maintainer 批準(zhǔn)major破壞性變更絕不可以在沒有明確批準(zhǔn)的情況下選擇。這背后的原因不難從 changesets 的機(jī)制理解由于fixed配置把所有trigger.dev/*包綁定在一起任何一個包選擇major都會讓整個 SDK 家族發(fā)生一次破壞性大版本跳躍直接影響所有下游用戶。所以版本號選擇本質(zhì)上是影響面審批改動雖小但發(fā)布邊界必須由維護(hù)者把關(guān)。在運行pnpm run changeset:add時若不確定該選哪個等級先向維護(hù)者確認(rèn)而不是自行決定。trigger.dev/core永遠(yuǎn)不要導(dǎo)入根入口規(guī)則中最具技術(shù)含量的一條是trigger.dev/coreNever import the root. Always use subpath imports (e.g.,trigger.dev/core/v3).也就是說在 SDK 或平臺代碼中禁止寫// ? 禁止導(dǎo)入根入口 import { something } from trigger.dev/core;必須寫成子路徑形式// ? 正確子路徑導(dǎo)入 import { task } from trigger.dev/core/v3; import { tracer } from trigger.dev/core/v3/tracer; import { retry } from trigger.dev/core/v3/utils/retries;為什么exports 映射給出了答案看 packages/core/package.json 的exports字段即可理解trigger.dev/core根入口只導(dǎo)出極少的內(nèi)容——src/index.ts 僅轉(zhuǎn)發(fā)types.js、utils.js、schemas/json.js與version.js四個模塊而真正的 SDK 能力全部以具名子路徑形式暴露trigger.dev/core/v3→src/v3/index.tsSDK 主入口trigger.dev/core/v3/tracer→src/v3/tracer.tstrigger.dev/core/v3/build、trigger.dev/core/v3/appstrigger.dev/core/v3/errors、trigger.dev/core/v3/logger-apitrigger.dev/core/v3/otel、trigger.dev/core/v3/schemastrigger.dev/core/v3/utils/durations、trigger.dev/core/v3/utils/retries、trigger.dev/core/v3/utils/gitBranch、trigger.dev/core/v3/utils/ioSerialization等工具子路徑trigger.dev/core/v3/workers、trigger.dev/core/v3/machines、trigger.dev/core/v3/runEngineWorker、trigger.dev/core/v3/serverOnly、trigger.dev/core/v3/isomorphictrigger.dev/core/v3/test測試輔助同一份清單也以typesVersions形式為 TypeScript 提供了對應(yīng)的類型映射。這種根最小化 子路徑具名化的設(shè)計至少帶來三個收益按需加載、減小打包體積使用方只打包自己真正 import 的模塊避免把整個 core 拖進(jìn) bundle顯式的環(huán)境邊界/v3/serverOnly與/v3/isomorphic等子路徑明確區(qū)分了只能在服務(wù)端使用與可在多端復(fù)用的代碼混用根入口容易破壞這一邊界面向未來的穩(wěn)定契約子路徑是包對外承諾的公共 API改動它們會被exports與typesVersions雙重約束防止隱式破壞。因此在修改trigger.dev/core時新增或調(diào)整功能應(yīng)當(dāng)落在對應(yīng)的src/v3/...子模塊中并通過在package.json的tshy.exports中登記新子路徑來正式公開它。受保護(hù)區(qū)rules/與.claude/skills/trigger-dev-tasks/規(guī)則還劃定了兩塊禁區(qū)Do NOT updaterules/or.claude/skills/trigger-dev-tasks/unless explicitly asked. These are maintained in separate dedicated passes.這兩處目錄根目錄的 rules/ 與 .claude/skills/trigger-dev-tasks/分別承載著 SDK 的版本化遷移規(guī)則和 Agent 開發(fā)任務(wù)技能庫屬于由專門流程單獨維護(hù)的資產(chǎn)。即使你的 PR 涉及 packages 改動也不應(yīng)順手修改這些文件——除非任務(wù)被明確要求。這保證了規(guī)則與技能庫的變更可審計、可追溯不會因為日常開發(fā)被悄悄改動。用 hello-world 項目驗證每次改動規(guī)則對測試給出了明確指令Test changes using thehello-worldproject in thetriggerdotdev/referencesrepo.即任何對 SDK 包的行為改動最終都要在一個獨立的references倉庫中的hello-world項目上做真實驗證。這與倉庫內(nèi)使用測試項目驗證的做法一致例如根目錄的 internal-test-projects.mts。實操建議在本地 monorepo 完成包修改后通過pnpmworkspace 或file:依賴把改動指向hello-world項目運行trigger.dev dev或直接執(zhí)行任務(wù)確認(rèn) SDK 在真實運行時環(huán)境含構(gòu)建、打包、任務(wù)注冊與執(zhí)行下行為正確尤其要關(guān)注trigger.dev/core子路徑改動是否影響現(xiàn)有 import 方。從源碼結(jié)構(gòu)看這種方式能覆蓋單測難以觸達(dá)的發(fā)布后集成場景——因為包的 exports 契約、打包產(chǎn)物與運行時行為只有通過外部消費項目才能得到完整驗證。相關(guān)約定純服務(wù)端改動走.server-changes/這條 SDK 規(guī)則還有一條重要的姊妹約定。當(dāng) PR只改服務(wù)端apps/webapp/、apps/supervisor/等且不涉及需要 changeset 的包改動時按 .claude/rules/server-apps.md 的說明應(yīng)添加一個.server-changes/文件而非 changesetcat .server-changes/descriptive-name.md EOF --- area: webapp type: fix --- Fix pages occasionally loading unstyled during deploys. The dashboard now recovers automatically. EOF其中area只能是webapp或supervisortype只能是feature、fix、improvement、breaking。而對于同時改動包與服務(wù)端的混合 PR規(guī)則約定只要包改動需要 changeset就由 changeset 一并覆蓋無需再寫.server-changes/反之若包改動是內(nèi)部性的、不需要 changeset而服務(wù)端改動面向用戶則仍要補(bǔ)一個.server-changes/文件。完整決策可參考 CHANGESETS.md 中的對照表??偨Y(jié)一條規(guī)則三層保障.claude/rules/sdk-packages.md雖然只有六行卻把 Trigger.dev 公共 SDK 的開發(fā)紀(jì)律壓縮成了三層保障發(fā)布紀(jì)律packages/的任何改動都強(qiáng)制寫 changeset配合fixed版本組與 CI 流水線保證 npm 發(fā)布可追溯、版本一致版本邊界默認(rèn) patch、minor 需批準(zhǔn)、major 絕不擅自動把破壞性變更的決策權(quán)收回到維護(hù)者手中工程約束trigger.dev/core只允許子路徑導(dǎo)入、rules/與skills/受保護(hù)、改動必須經(jīng)hello-world項目實測從代碼邊界到測試驗證全方位保護(hù)消費者。對希望在 Trigger.dev monorepo 中貢獻(xiàn)代碼的開發(fā)者而言遵守這條規(guī)則就是對自己改動的用戶影響面負(fù)責(zé)。贊分享AI Agent后端任務(wù)調(diào)度開發(fā)工具可觀測性AI 應(yīng)用【免費下載鏈接】trigger.devTrigger.dev – build and deploy durable AI agents and workflows項目地址https://gitcode.com/gh_mirrors/tr/trigger.dev點擊查看免費下載相關(guān)推薦Perfetto SDK 發(fā)布流程全解版本策略、發(fā)布分支、Tag 規(guī)范與預(yù)編譯產(chǎn)物打包Perfetto SDK 發(fā)布流程全解版本策略、發(fā)布分支、Tag 規(guī)范與預(yù)編譯產(chǎn)物打包 本文基于 Perfetto 倉庫中的官方貢獻(xiàn)指南 docs/contr可觀測性后端開發(fā)工具前端數(shù)據(jù)可視化Open edX 平臺 sys.path 修改移除決策導(dǎo)入路徑規(guī)范化與舊式導(dǎo)入遷移指南Open edX 平臺 sys.path 修改移除決策導(dǎo)入路徑規(guī)范化與舊式導(dǎo)入遷移指南 導(dǎo)讀 本篇文章圍繞 Open edX 核心倉庫 openedx pla后端教育BFS-Best-Face-Swap版本對比V1到V5哪個最適合你的換臉需求BFS Best Face Swap版本對比V1到V5哪個最適合你的換臉需求 BFSBest Face Swap是一系列專為Qwen Image Edi計算機(jī)視覺AI 應(yīng)用大模型上一篇終極指南Weaviate向量數(shù)據(jù)庫的數(shù)據(jù)序列化與反序列化技術(shù)下一篇ZLUDA指令選擇目標(biāo)架構(gòu)適配創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考