当前位置: 首页 > news >正文

Asimov支持的开发依赖类型详解:从Node.js到Python、Go、Rust全覆盖

Asimov支持的开发依赖类型详解:从Node.js到Python、Go、Rust全覆盖

【免费下载链接】asimovAutomatically exclude development dependencies from Apple Time Machine backups项目地址: https://gitcode.com/gh_mirrors/as/asimov

Asimov是一款能够自动将开发依赖从Apple Time Machine备份中排除的实用工具,通过识别不同编程语言的项目结构和依赖管理文件,智能排除可轻松恢复的依赖目录,帮助开发者节省备份空间和时间。

📚 核心支持的开发依赖类型

Node.js项目依赖

对于Node.js项目,Asimov会识别node_modules目录,当同级目录存在package.json文件时自动将其排除。这是JavaScript/TypeScript项目最常见的依赖管理方式,通常包含数千个第三方包,排除后可显著减少备份体积。

Python开发环境

Python开发者会受益于多种依赖目录的支持:

  • .venvvenv虚拟环境目录(配合requirements.txt或pyproject.toml)
  • .tox测试环境目录(对应tox.ini配置文件)
  • .nox自动化测试环境(匹配noxfile.py)
  • builddist构建产物目录(当存在setup.py时)

Go模块依赖

Go项目中,Asimov会检测vendor目录,当发现同级的go.mod文件时自动排除该目录。Go Modules机制下的依赖缓存通常体积较大,且可通过go mod download快速恢复。

Rust编译产物

Rust项目的target目录会被自动排除,该目录包含Cargo构建的所有中间产物和最终二进制文件。识别依据是同级目录存在Cargo.toml配置文件,这能有效避免备份GB级别的编译缓存。

🔍 更多编程语言支持

除上述核心语言外,Asimov还支持:

  • PHP:通过composer.json识别vendor目录
  • Ruby:基于Gemfile排除vendor目录
  • Java:识别Maven/Gradle项目的target目录
  • Scala:排除sbt构建的target目录
  • Swift:识别Package.swift对应的.build目录
  • Dart/Flutter:排除.dart_tool和build目录(配合pubspec.yaml)
  • Elixir:基于mix.exs排除deps和.build目录

完整的依赖类型配置可查看项目核心文件asimov中的ASIMOV_VENDOR_DIR_SENTINELS数组定义,其中包含了30+种开发依赖目录与对应哨兵文件的映射关系。

🚀 工作原理

Asimov通过以下流程实现依赖排除:

  1. 从用户根目录开始递归搜索
  2. 跳过系统目录(如~/.Trash和~/Library)提升效率
  3. 对每个目录检查是否匹配"依赖目录+哨兵文件"组合
  4. 使用tmutil addexclusion命令将匹配目录加入Time Machine排除列表
  5. 输出排除结果及节省的存储空间

通过这种设计,Asimov既保证了排除的准确性(仅在存在配置文件时排除依赖目录),又避免了误操作系统文件的风险。

💡 使用建议

  1. 安装完成后Asimov会自动运行,无需额外配置
  2. 可通过sudo mdfind "com_apple_backup_excludeItem = 'com.apple.backupd'"查看所有被排除的文件
  3. 如需手动运行,可直接执行项目根目录下的asimov脚本
  4. 对于自定义依赖目录,可修改配置文件扩展支持类型

Asimov通过精准识别各类开发依赖,为Apple用户打造更高效的备份体验,让Time Machine专注于真正需要保护的代码和文档,而非可复现的依赖文件。

【免费下载链接】asimovAutomatically exclude development dependencies from Apple Time Machine backups项目地址: https://gitcode.com/gh_mirrors/as/asimov

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/863878/

相关文章:

  • 为什么高端外墙砖更值得投入?以国龙为例,揭秘一线品牌在安全、设计与工艺上的深层价值 - 品牌评测官
  • Bilibili-Evolved界面美化终极指南:打造个性化B站浏览体验
  • 如何解决黑苹果USB端口识别问题:USBInjectAll内核扩展完整指南
  • 工业厂区无感化安防,无感定位替代UWB实现无人值守
  • Airflow Maintenance Dags:7个关键维护工作流彻底解决Airflow运维难题
  • 数字人行业核心误区:动态形象≠真正智能交互
  • 中文聊天语料库:一站式解决对话AI训练数据难题
  • 如何用ESP32制作你的专属开源智能手表:DIY终极指南
  • 如何用N_m3u8DL-CLI-SimpleG轻松下载加密M3U8视频:免费图形界面完整教程
  • 终极指南:3分钟搞定Windows系统Apple USB网络共享驱动安装
  • OptScale 成本分析报告:如何解读和利用优化建议实现38%云成本节省
  • Windows 11 LTSC版终极解决方案:三分钟恢复完整Microsoft Store体验
  • 3个12位ADC+17个定时器+摄像头接口:STM32F207IGT6的电机控制与机器视觉资源
  • AI 工具规模化滥用下钓鱼攻击演化机理与闭环防御研究
  • 实战OpenAI API认证:深度解析API密钥与OAuth2.0的最佳实践方案
  • cpulimit在容器环境中的应用:Docker与Kubernetes资源限制替代方案
  • 如何快速搭建实验室数字化转型平台:eLabFTW开源电子实验笔记本完整指南
  • 如何快速下载Steam游戏清单?Onekey工具完整使用指南
  • CANN/asc-devkit:half到uint8类型转换API
  • Octopress社区贡献指南:从fork到pull request的完整流程
  • benchmark-ips深度解析:如何精准测量Ruby代码性能
  • 强力中文聊天语料库:一站式解决AI对话系统数据难题
  • 深度解析:WinDiskWriter如何破解macOS制作Windows启动盘的技术壁垒
  • 基于浏览器锁定的 CypherLoc 恐吓软件攻击机理与防御研究
  • 长沙写真推荐,按这4个标准选不会踩坑 - 麦克杰
  • 智能音频文本同步:3步实现专业级时间轴对齐方案
  • eLabFTW终极指南:如何快速搭建开源电子实验笔记本系统
  • 终极虚拟手柄驱动方案:5分钟快速部署ViGEmBus完整指南
  • Sub高级用法:如何实现命令组合与脚本复用
  • 当AI成为黑客的“军师”:我们该如何反制智能化的网络钓鱼?