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

Posted

技术标签:

【中文标题】yarn berry run 如何运行已安装的包【英文标题】:yarn berry run how to run installed packages 【发布时间】:2020-12-03 17:17:22 【问题描述】:

我看到使用 yarn berry 我得到了即插即用功能,而不是 node_modules/

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

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

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

全局安装的 webpack 可能不是同一个版本。更糟糕的是,在 Docker 部署期间,我得到了本地安装的东西,唯一的节点和 npm 在全球范围内可用。我以为我可以做一个 preinstall 脚本来执行 npm install -g yarn; yarn set version berry 但我不知道该怎么做 webpackjestbabel 等,并且认为我应该必须全部安装它们在同一preinstall hackaround 期间在全球范围内似乎倒退了几步。

有什么方法可以从我缺少的本地安装的包中运行吗?

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

但那里的答案似乎有点离题 - 我没有运行任何 js,我正在尝试输入 package.json 脚本,即可以从 shell 运行的东西。

【问题讨论】:

好的,谢谢@josh-wilson 【参考方案1】:

为什么不直接使用yarn run <bin>(或简单的yarn <bin>)?如果你在一个设置为使用 yarn berry 的存储库中,它将运行任何包 bin 文件。

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

【讨论】:

谢谢你是对的,我依赖的 cli 帮助并没有很好地帮助我【参考方案2】:

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

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

我最终发现这是因为提供 some-bin 的软件包安装在工作空间内,而不是我项目的根目录。所以我不得不运行:

yarn workspace my-workspace some-bin

这奏效了。

【讨论】:

以上是关于yarn berry run 如何运行已安装的包的主要内容,如果未能解决你的问题,请参考以下文章

我如何直接将“node_modules”与“yarn berry”一起使用

在 Yarn 2 (berry) 中审计依赖项的最佳方法是啥?

为啥 Mocha 不与 Yarn Berry 合作?

$ yarn install 导致找不到模块 yarn-berry.js

使用 yarn berry 时将 .yarn 目录提交到 git

使用 Yarn 2 (Berry) 在 Docker 镜像中打包应用程序