问题
pnpm 11 的全局安装真实布局是:
<PNPM_HOME>/store/v11/links/@/<pkg>/<ver>/<hash>/node_modules/<pkg>
detectGlobalInstallManager(src/utils/global-install.ts)和 #1122 内联进 postinstall-bin.mjs 的 locationSaysGlobal 都要求路径里含字面量 /pnpm/store/(或 /pnpm/global/)。默认 PNPM_HOME=~/.local/share/pnpm 时路径恰好含 /pnpm/,能识别;但用户改过 PNPM_HOME(如 ~/.pnpm-bin)后:
/root/.pnpm-bin/store/v11/links/@/botmux/3.18.9/x/node_modules/botmux
两边都判 unknown / false → postinstall 不写 launcher → 用户没有 botmux 命令。
实测(喂真实路径给两边):
| PNPM_HOME |
内联判据 |
分类器 |
~/.local/share/pnpm(默认) |
true |
pnpm |
~/.pnpm-bin(自定义) |
false |
unknown |
/data/pnpm-global(自定义) |
false |
unknown |
影响面
不建议现在就加模式
直接匹配 store/v\d+/links/@/botmux/(去掉 pnpm 前缀)会放宽到任何含此片段的路径,安全边界需要先想清楚。建议与 #1123(win32 兜底误判)一起收,统一设计「不依赖字面量路径前缀的 pnpm 识别」。
相关
问题
pnpm 11 的全局安装真实布局是:
detectGlobalInstallManager(src/utils/global-install.ts)和 #1122 内联进postinstall-bin.mjs的locationSaysGlobal都要求路径里含字面量/pnpm/store/(或/pnpm/global/)。默认PNPM_HOME=~/.local/share/pnpm时路径恰好含/pnpm/,能识别;但用户改过PNPM_HOME(如~/.pnpm-bin)后:两边都判
unknown/false→ postinstall 不写 launcher → 用户没有botmux命令。实测(喂真实路径给两边):
~/.local/share/pnpm(默认)truepnpm~/.pnpm-bin(自定义)falseunknown/data/pnpm-global(自定义)falseunknown影响面
detectGlobalInstallManager返回unknown→ plan=null → 无法自动更新。不建议现在就加模式
直接匹配
store/v\d+/links/@/botmux/(去掉pnpm前缀)会放宽到任何含此片段的路径,安全边界需要先想清楚。建议与 #1123(win32 兜底误判)一起收,统一设计「不依赖字面量路径前缀的 pnpm 识别」。相关