SuperAPI AI 工具集

npm-deps-cleanup

编程与开发

查看项目

更新于 10-16 08:26

技能介绍

npm-deps-cleanup 是一个用于精简 JavaScript 依赖占用的技能,目标是在 npm、pnpm、Yarn 和 Bun 项目中审计并减少依赖体积。它要求保留现有的包管理器、锁文件、workspace 布局和依赖版本范围风格,除非有具体理由才改动。

主要能力与工作流:

  1. 建立基线:收集所有 package.json 与 workspace 边界、当前包管理器与锁文件、各清单区段的直接依赖名称以及现有验证命令,并记录基线指标。
  2. 移除未使用的直接依赖:以静态分析器(如 knip、depcheck 或仓库已配置的原生工具)作为起点而非证据,逐个检查代码、配置、脚本、测试、文档、发布清单、peer 契约、插件加载器、CLI 与动态导入后再移除。
  3. 在 monorepo 中统一直接依赖版本:优先使用现有策略(精确锁定、caret 范围、catalog/protocol、workspace protocol 或集中约束),可用 syncpack list-mismatches 等工具发现不一致,先做清单级一致性再考虑 overrides/resolutions。
  4. 按传递锁文件闭包排序:对重要直接依赖估算其可达的传递条目集合,报告总闭包与独占闭包,并优先使用确定性测量而非猜测。
  5. 寻找低风险高影响升级:针对更新次要/补丁版本可减少传递依赖的直接依赖,逐个或按小簇升级,重新安装并比较闭包指标,运行测试与构建/类型检查。避免大版本升级,除非用户明确接受迁移风险。
  6. 内联简单用法:仅当用量很小且易完整描述、等价代码更短更清晰、有测试覆盖且不涉及跨平台、安全、解析、Unicode、locale 或规范合规边缘情况时,才内联依赖。
  7. 应用 e18e 指引:可运行 <runner> @e18e/cli analyze 和 <runner> @e18e/cli migrate --dry-run,并查阅 e18e 模块替换列表。

包管理器检测:优先读取根 package.json 中的 packageManager 或 devEngines.packageManager.name,其次根据 package-lock.json/npm-shrinkwrap.json(npm)、pnpm-lock.yaml(pnpm)、yarn.lock(Yarn)、bun.lock/bun.lockb(Bun)推断,并使用对应的命令族。

安全规则:小批量修改以保证锁文件 diff 可审查;不盲信未使用依赖工具;可编写脚本验证依赖账目;对 peerDependencies、optionalDependencies、package bin 用法、测试夹具和已发布清单保持更高风险意识;不得移除或内联用于安全、解析、加密、Unicode、URL 处理、日期时间、i18n 或平台兼容的依赖,除非替换被证明等价;不得更改包管理器、删除锁文件或重写 workspace 结构;包管理器去重命令可能改变行为,需检查锁文件 diff 并验证。

报告:总结移除或移动的直接依赖、去重的直接版本、锁文件行/条目减少量、估算的包或 node_modules 减少量、被推迟的高影响候选及原因、运行的验证命令与结果,并在移除依赖仅依赖静态分析而非运行时覆盖时明确说明风险。

适用场景:需要清理 JavaScript 项目依赖、减少锁文件体积、统一 monorepo 依赖版本或按闭包评估依赖影响时使用。限制:具体支持的命令和工具效果取决于项目环境,资料未提供具体性能数字或平台兼容性细节。