
Cloudflare Computer ignore 模式详解4 条匹配规则快速判断哪些路径不参与同步【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computerCloudflare Computer 是运行在 Durable Object 之上的虚拟文件系统其 ignore 模式决定了哪些路径段不进入同步协议、不会跨线路传输。本文讲透 ignore 的匹配规则、默认值与覆盖逻辑帮你为工作区省下数十万个文件级别的同步开销 为什么需要 ignore一次 npm install 的代价在 Cloudflare Computer 中容器的文件变更会通过 RPC 同步线sync wire推送回 Durable Object下称 DO。问题在于node_modules、.next、target这类派生文件目录体积大、文件碎、变化频繁。官方设计文档指出没有 ignore一次npm install就会在下次 pull 时把数万个碎文件推过同步线。这正是 ignore 模式存在的意义——它把这些用得上但不值得同步的路径从同步流量中剔除。详见 02_sync_protocol.md。ignore 匹配规则整段匹配、路径任意位置生效核心实现只有 24 行位于 ignore.ts判断逻辑是一个isIgnored(path, patterns)函数。规则可以归纳为 4 条规则 1整段匹配不是子串路径按/拆分成段模式必须是完整的一段才命中node_modules✅ 命中node_modulesnode_modules❌ 不命中node_modules_old、my_node_modules规则 2路径任意位置生效只要路径中任何一段匹配整条路径即被忽略无论嵌套多深/a/b/node_modules、/packages/x/node_modules/y/index.js全部命中/a/.next/cache、/rust/target/debug/foo同样命中规则 3纯字符串不支持通配符当前实现不是 glob就是逐段精确比较源码注释明确预留了有真实需求再扩展 glob。所以别指望写*.log——直接写具体目录名更可靠。规则 4空列表 完全不忽略模式列表为空时isIgnored恒返回false即忽略机制被禁用。以上行为都有对应的测试用例覆盖可参考 ignore.test.ts 查看每个断言。默认值与覆盖规则注意是替换而非追加这是最容易踩坑的一点 ⚠️场景生效的 ignore 列表完全没传 ignore服务端回退到默认[node_modules]传了自定义列表如[.next, dist]整体替换默认值node_modules不再被忽略传[]彻底禁用忽略服务端回退逻辑见 server.ts优先用请求里的ignore否则用实例配置最后才落到 DEFAULT_IGNORE。最佳实践自定义列表时把node_modules显式带上例如[node_modules, .next, dist, __pycache__]。被忽略的路径会怎样两侧可见性完全不同被忽略的路径并非被删除它在两侧的行为截然不同维度容器侧DO 侧Workspace.fsAPI文件是否真实存在✅ 存在对 API 不可见exec/ 构建工具能否使用✅ 照常使用—readdir正常列出不出现stat/readFile正常返回ENOENT是否跨同步线传输❌ 不传输—也就是说容器里exec(node ...)、构建工具照样能用node_modules只是这些字节永远不会上线路DO 端也看不到它们。SQLite 里甚至没有专门的ignored列——忽略路径对存储层完全透明见 03_filesystem_schema.md。ignore 在同步链路中作用于哪里忽略发生在变更聚合阶段coalesceChanges在把变更条目送上线路之前对存活变更和删除墓碑两个扫描路径都调用isIgnored做过滤见 coalesce.ts。这意味着忽略路径的写入不会成为同步条目忽略路径的删除同样不会下发——对拉取方来说这些路径始终不存在避免墓碑条目污染接收端。拉取侧入口fetchChanges也接受同样的ignore选项fetch.ts。工作区级与挂载级 ignore 的叠加除了顶层工作区配置每个 mount 还可以单独传ignore默认[]与顶层列表按并集叠加工作区级 ignore 对所有挂载和顶层路径生效挂载级 ignore 只对当前挂载扩展。完整选项表见 06_mount_interface.md。常用 ignore 速查清单 针对不同技术栈推荐的路径段组合均为整段匹配技术栈建议忽略的路径段Node.js / 前端node_modules、.next、dist、buildPython__pycache__、.venvRust / Gotarget、vendor通用缓存.cache、.pytest_cache总结ignore 用整段精确匹配判断路径是否参与同步支持路径任意位置、不支持通配符默认忽略node_modules自定义列表是替换而非追加传[]可禁用被忽略的路径容器侧照常可用但对Workspace.fsAPI 完全不可见也不产生任何同步条目配置点有两层工作区ignore 每个 mount 的ignore并集叠加。想进一步了解同步协议的完整设计推荐阅读 docs/ 目录下的规格文档尤其是 02_sync_protocol.md 的 Ignore lists 章节。【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考