2

我正在使用 Yarn 2 的“零安装”作为一个小工具来解决我老板的一个随机过敏问题。npm i(他对必须在克隆的 repo 上运行以使其工作的期望感到不满,并坚持认为进行node_modules版本控制并不是一个可怕的想法;所以我想以此为借口潜入 Yarn 并阻止他通过供电。)

据我了解,“零安装”基本上意味着 Yarn 试图使将依赖项安装状态放入 VCS 中实际上是可行的。但是,要运行实际的应用程序,Yarn 需要用其 PnP 机制替换 Node 的依赖解析。对于从 Yarn 脚本运行的 Node 实例,这会自动发生,但运行 Yarn 脚本需要 Yarn 可用。(请记住,我们正在努力解决有人在安装东西时任意固执的问题。)

我所拥有的最好的就是让我的start脚本成为npx yarn node app.js,但这感觉不必要地令人费解;毕竟,使用 Yarn 2,工具本身存储在.yarn/releases其中,全局yarn命令使用它,但这是一些捆绑器输出的一个巨大的缩小 blob,我不知道我将如何开始调用它。

4

1 回答 1

4

要注册由 Yarn 生成的 PnP 运行时,只需.pnp.js从命令行要求就足够了,因此您可以app.js通过以下方式运行:

node -r ./.pnp app.js

还有另一种方法可以做到这一点:您可以.pnp.js在应用程序中请求,但是当您不是从命令行执行时,您还必须setup在返回的 PnP API 实例上调用函数,只需将此行添加到顶部app.js

require('./.pnp').setup();

于 2020-12-03T08:44:08.480 回答