yarn berry run如何运行已安装的软件包

问题描述

我看到长毛莓得到的是即插即用功能,而不是node_modules /

我找不到任何建议可以支持它从已安装的程序包运行。

例如对于npm,工作流可能是运行已安装的webpack版本:

$ npm install --save-dev webpack
$ node node_modules/webpack/bin/webpack ...

全局安装的Webpack可能不是同一版本。更糟糕的是,在Docker部署期间,我得到了本地安装的东西,唯一的节点和npm在全球可用。我以为可以做一个preinstall的{​​{1}}脚本,但是我不确定如何做npm install -g yarn; yarn set version Berrywebpackjest等,并且我认为必须在相同的babel hackhack中将它们全部全局安装,这似乎是倒退了几步。

有什么方法可以从我丢失的本地安装软件包中运行吗?

我看到了这个可能相关的问题-Yarn Berry - Run a Node Script Directly

但是答案似乎有点不对头-我没有运行任何js,而是试图输入package.json脚本,即可以在shell中运行的脚本。

解决方法

为什么不仅仅使用yarn run <bin>(或者简单地使用yarn <bin>)?如果您位于要使用yarn berry的存储库中,那么它将运行任何程序包bin文件。

yarn node <file>将运行设置了即插即用功能的任何.js文件。无需全局安装这些依赖项,除了也许yarn经典。

,

我试图做 yarn some-bin 并不断得到:

Couldn't find a script named "some-bin".

我最终发现这是因为提供 some-bin 的包安装在工作区中,而不是安装在我的项目的根目录中。所以我不得不跑:

yarn workspace my-workspace some-bin

这奏效了。