Jiaoyc224/dsh-plugin-dedupe
Jiaoyc224★ 0JavaScript最后同步: 2026-08-17
—
README 摘要
dsh-plugin-dedupe English · 简体中文 DSH 插件去重守护 — 防止在 DSH profile 中重复安装同一插件。 运行效果 功能 1. 启动时扫描 :作为 DSH 插件加载时,自动扫描当前 profile 的 package.json 依赖和 node modules 实际安装,检测: - 同名插件在 package.json 中多次声明(不同来源:npm / github / file / link) - node modules 中同名包出现多次(不同版本/来源并存) - 未声明但已安装的 dsh- 残留插件 - dsh.profile.bundles 与 dependencies 重复声明(正常情况不报错) 2. preinstall 钩子 :作为 pnpm install 的 preinstall 钩子,安装前自动检查,发现错误时返回非零退出码, 阻断安装 ,防止重复插件被下载。 安装 1. 通过 GitHub 安装(推荐) 在 DSH profile 目录下: 或使用 dsh plugin 命令: 2. 启用 preinstall 钩子(推荐) 编辑 profile 的 package.json ,在 scripts 中添加 preinstall 钩子: 这样每次运行 pnpm install 前,都会自动运行去重检查,发现重复插件会返回非零退出码, 阻断安装 。 使用示例 独立运行检查 作为 preinstall 钩子 然后运行 pnpm install ,如果有重复插件会报错并阻断: 配置选项 插件支持通过环境变量配置: 环境变量 说明 默认值 DSH DEDUPE WARN ORPHANS 设为 true 时也警告非插件类的未声明依赖 false DSH PROFILE DIR 手动指定 profile 根目录 自动向上查找 检测规则 类型 行为 说明 package.json 同名依赖重复 ❌ 错误 同一包名在 package.json 中出现多个不同来源 node modules 同名包多次 ⚠️ 警告 同名包在 node modules 中出现多次(不同版本/来源) 未声明但已安装的 dsh- 插件 ⚠️ 警告 可能是旧残留或手动复制 dsh.bundles 与 dependencies 重复 信息 正常情况,不报错 核心文件 详细示例 更多完整示例请查看 examples/README.md。 原理 1. Cordis 插件 : lib/index.js 作为 DSH bundle 加载,在 apply 阶段扫描当前 profile,输出警告/错误到 logger。 2. preinstall 钩子 : scripts/check-duplicates.mjs 可独立运行,返回非零码阻断 pnpm in…
在 GitHub 查看完整 README →