快速入门
开始使用 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
。