重要说明:本说明文档涵盖 Yarn 1(经典版)。
有关 Yarn 2+ 文档和迁移指南,请访问yarnpkg官方网站:yarnpkg.com。

快速入门

开始使用 Plug’n’Play 并不难 - 其基础只是涉及启用 package.json 文件中的一个微小设置:installConfig.pnp

{
  "installConfig": {
    "pnp": true
  }
}

从现在开始,每次运行 yarn install Yarn 都会创建一个名为 .pnp.js 的单一文件,而不是 node_modules 超级文件包。你可以在项目中运行 yarn --pnp 立即试用,这将在同一通过中启用设置并运行安装!

.pnp.* 也应添加到 .gitignore 中。(参见 应该忽略哪些文件

因此,启用 PnP 一点都不复杂 - 问题可能是重新实现自身节点解析的第三方包。存在三种主要的实现,其他实现也可能对另一个项目隐藏

  • resolve 是主要实现,并且得益于 Jordan Harband 的帮助,开箱即用得到支持。每一个使用 resolve 的包(包括你可能听说过如 Babel 或 Gulp 等)现在都可以顺利运行,无需进一步配置。

  • enhanced-resolve 是第二大主要实现。你可能使用过它,但可能从未听说过它:它是 Webpack 使用的解析器。我们通过 pnp-webpack-plugin 插件支持此解析器。

  • TypeScript 也使用自己的解析器。在这种情况下,情况有点复杂 - TS 团队对在 tsc 编译器中 允许第三方挂钩 有些担心,这意味着我们目前无法使用它。话虽如此,TypeScript 不仅是 tsc,因此我们已经能够为流行的 ts-loader 添加 PnP 支持 - 这意味着只要你通过 Webpack 编译 TypeScript,一切都运行良好!有关更多信息,请参考专用的 部分

如果你发现某些内容无法运行,请咨询故障排除部分获取一些提示,然后如果事情仍然有问题,请提出一个问题。我们真的希望 PnP 成为 JavaScript 软件包的实际安装策略,并最终一次性彻底淘汰 node_modules