You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yarn 2 PNP环境下如何运行依赖包中的bin脚本?

在Yarn 2 PnP环境中运行已安装依赖的Bin脚本

问题背景

我有一个自定义依赖,其package.json中注册了如下bin脚本:

// package.json 中的 bin 配置
"bin": {
    "test123": "./scripts/testtest.js"
}

该脚本仅执行console.log输出。在依赖库内部,我可通过yarn run test123执行该脚本并得到输出。

现在我将这个依赖库引入项目,在package.json中注册了其最新版本。使用Yarn 2及Plug n Play(无node_modules目录),我想在项目终端中运行该脚本,但尝试yarn dlx @my/library test123时出现错误:
Binary not found (library) for root-workspace-0b6124(其中错误中的“library”是@my/library中/后的部分),同时执行yarn info @my/library可见该二进制脚本已暴露。

解决方法

方法1:直接调用脚本名

依赖已安装到项目后,直接在终端执行:

yarn test123

Yarn 2的PnP机制会自动定位到已安装依赖中暴露的test123脚本并执行。

方法2:使用yarn exec明确执行

如果需要避免脚本名冲突,或者要指定依赖来源,可使用yarn exec:

yarn exec test123

也可以显式指定依赖包:

yarn exec --package @my/library test123

关于yarn dlx的误区

yarn dlx的作用是临时安装指定包并执行其命令,不适用于已安装到项目中的依赖场景。且其正确用法是直接调用包的bin命令,而非包名加命令,所以你之前的写法会导致Yarn错误地查找包内名为library的二进制文件,从而报错。

内容的提问来源于stack exchange,提问作者Materno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:52:11