Rust CLI (v12): `pnpm run <TAB>` 不再完成 package.json 脚本 (完成服务器忽略 manifest)
作者: naborPM创建于 2026年9月17日更新于 2026年9月17日
标签type: bug
QQ 最后一个有效的 pnpm 版本
11.9.0 (节点CLI, `@pnpm/exe"). 直接核实;大概每个节点发布,因为 " pnpm run " 的脚本完成是#5426和#7964背后的行为(两者都已完成关闭)。
\ pnpm 版本
12.4.2 (Rust CLI,通过Homebrew安装,从 " v12.4.2 " 标签上搭建 " pnpm/crates/cli " )。 " 主要 " 来源相同(见下文)。
复制问题的代码
嘘 mkdir repro \ cd repro 打印出“{'名称” :“ repro” , “version” : “1. 0.0” , 标语 : { “你好” : “ echo hi” , “ building” : “echo b''' > package.json
这正是生成的鱼/bash/zsh完成脚本运行于'pnpm跑 `: SHELL=鱼 COMP LINE="pnpm跑" COMP POINT=9 pnpm 完成-服务器-pnpm跑".
- > 打印什么也没有, 出口 0 (与 SHELL=bash / SHELL=zsh 相同, 并与 COMP CWORD=2 set)
控制: 命令和选项补全仍然在同一目录中工作
SHELL=鱼 COMP LINE="pnpm" COMP POINT=5 pnpm 完成-服务器-pnpm" #访问,添加,. SHELL=鱼 COMP LINE="pnpm run --" COMP POINT=11 pnpm 完成-服务器 --pnpm run --# -- 如果是现在,......
与同一目录中的节点CLI( 由 pnpm 12 通过“ packageManager” 下载11. 9.0) 比较:
嘘
SHELL=鱼 COMP CWORD=2 COMP LINE="pnpm跑" COMP POINT=9 <pnpm-11.9.0> 完成-服务器 - pnpm跑".
建设
# 哈啰 #通过壳本身(鱼4.9.3,完成文件来自 " pnpm finish " ,12.4.2):
嘘 鱼 - c"完整 - C" pnpm 运行" # 空 fish -c"完整"-C"pnpm" #访问,添加,添加用户,.
预期行为
`pnpm 运行 <TAB>`(和`pnpm 运行 <prefix><TAB>`)'提供最近的`package.json'的脚本名称,如同节点CLI那样。
实际行为
`完成服务器 ' 没有返回脚本位置,所以空壳没有候选人。 生成的补全脚本使用"完成-f"/"-o默认"关闭,因此也没有回落.
补充资料
- 原因,就我所知:在`pnpm/crates/cli/src/cli args/inform.rs'中,`完整'字只取自 " Command " 树(`可见-子命令 ' 、`可见-选择 ' 、`可选-价值 ' 、`可见-可能-价值 ' )字。 模块中没有任何内容读取一个表或当前目录,因此无法动态完成(scription). 在这方面,档案在提交时的 " 主要 " 部分相同。
- 项目中的 Pinning `packageManager: [email protected]' 不恢复: " 完成-服务器 " 由安装的Rust二进制在任何代表团进入被绑定的版本(与#7959一致)之前回答,因此,一旦全球安装的pnpm为12,仍然在11.x上的项目就会丢失脚本完成。
- 相关: #14655( " pnpm exec " 任务完成,需要同样的清单/项目意识)。
- 环境:macOS 15 (Darwin 24. 6.0)、arm64、Homebrew的鱼 4.9.3、pnpm 12.4.2(`/opt/homebrew/Cellar/pnpm/12.4.2')。
- 我在用活活活活活活活活活
. . . . . . .内容来源: pnpm/pnpm