rollup可以动态加载模块嘛?

我需要动态加载一个npm库
当我使用webpack时,无需配置额外的插件它就达到了我的预期

我需要动态加载的代码如下:

export const dynamicReact = function () {
  import('react').then(
    obj => console.log,
    err => console.log
  );
}

但是我使用rollup时,不知道如何解决动态加载的问题。
首先如果不配置任何插件,最终只会出现一个文件设若为dist/index.js
它将不会对import()语句进行任何处理,显然单包是不可能动态加载的

如果配置了@rollup/plugin-dynamic-import-vars,则报错:

[!] (plugin rollup-plugin-dynamic-import-variables) Error: invalid import "import(`@hg/hg-web-${monitor}`)". Variable bare imports are not supported, imports must start with ./ in the static part of the import. For example: import(`./foo/${bar}.js`).

可以看到这个插件时不支持npm包的动态加载,它只能加载路径文件


如果我预期在rollup中动态加载npm文件是否有解决方案?

阅读 4.3k
1 个回答

来自中文文档上的一些回答
https://www.rollupjs.com/guid...

Rollup 是用来构建库还是应用程序?(Is Rollup meant for building libraries or applications?)
Rollup 已被许多主流的 JavaScript 库使用,也可用于构建绝大多数应用程序。但是 Rollup 还不支持一些特定的高级功能,尤其是用在构建一些应用程序的时候,特别是代码拆分和运行时态的动态导入 dynamic imports at runtime. 如果你的项目中更需要这些功能,那使用 Webpack可能更符合你的需求。

当然如果你使用最新的ES module 那是可以解决的
https://rollupjs.org/guide/en...
https://rollupjs.org/guide/en...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题