用途:在 RedisInsight 仓库中识别并安全删除未使用的(“死”)npm 依赖。这是一个本地、交互式的工作流;定时报告只能猜测,确认依赖已死需要 grep 真实用法并运行构建。
为何手动而非 knip/depcheck:静态工具在此仓库中误报严重,不可盲信。根 package.json 是包含 UI、桌面、构建、测试、storybook、electron 的巨型清单,扫描单一区域的工具会把其他地方使用的东西标记为“未使用”。许多依赖没有 import 引用:webpack loader、eslint/jest/babel 插件以字符串形式出现在配置中,package.json 脚本调用的工具,运行时 -r 预加载,动态 require,以及环境 @types/*。webpack→Vite 迁移留下了真正死掉的构建工具,与误报混在一起。可靠信号是:grep 用法 → 确认是叶子 → 移除并运行构建门禁。
配方(每个候选):1. 全仓库 grep 真实用法,查找 import、require、动态 import 和裸引用,忽略无关子串命中。2. 排除无 import 用法:配置字符串引用(.eslintrc.js、webpack 配置、vite.config.mjs、jest.config.cjs、babel.config.cjs、electron-builder.json、.mocharc* 等)、package.json 脚本、运行时预加载/动态加载。3. 叶子检查:npm ls "$PKG"。4. 行动前分类:零引用普通依赖删除;@types/x 若基础包自带类型则删除;环境/全局 @types 保留;多工作区声明仅一处使用则去重;遮蔽 Node 内置模块保留;仅配置/脚本引用保留。5. 门禁:移除后重装并验证受影响区域构建:npm uninstall "$PKG"、npm run type-check、npm run test、npm run build。全绿即安全,提交 package.json 与 package-lock.json 变更;变红则恢复。
可选:枚举候选进行清扫,列出声明依赖并逐个 grep import,零命中者再走步骤 2–5,仅作初筛,切勿直接删除。
限制:需在声明该依赖的工作区操作,遵循仓库依赖规则,不手改 package.json/lockfile,不用 --ignore-scripts。资料未提供具体收费、平台或效果信息。