如何在 Yarn PnP 模式下使用 Rollup+Babel 转译依赖项的 js 文件?

问题描述

我使用的是启用了即插即用 (PnP) 的 Yarn v2。我想使用 Babel 转译我的一些依赖项的 js 文件并使用 Rollup 捆绑它们。

但是,rollup 会发出以下警告并且输出不正确:

(!) Unresolved dependencies
https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
core-js-pure/features/url/index.js (imported by ../../.yarn/cache/systemjs-npm-6.10.1-130dfe2f84-0f27c4c97c.zip/node_modules/systemjs/dist/system.min.js)

我认为这是由以下行为引起的:

  1. Babel 注入 import flatmap from 'core-js-pure/features/array/flat-map.js'
  2. Rollup 无法解析导入,因为 core-js-pure 不是包的列出依赖项,并将导入视为外部依赖项。

在 Yarn PnP 模式下,有没有什么方法可以使转译依赖的 js 文件使用 Rollup+Babel 工作?

以下是我尝试过的一些解决方法

  1. pnpMode 设置为 loose,以便 Rollup 可以解析 core-js-pure,即使它不是文件所属包的列出依赖项。
  2. 添加带有 resolveId 挂钩的自定义汇总插件解决core-js-pure 的任何导入。钩子将包含类似 require.resolve(source)内容。这是有效的,因为我在我的代码中解析 core-js-pure,其中 core-js-pure 是列出的依赖项。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)