You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Rollup将库暴露为全局变量,实现Webpack的output.library.type=var效果

你当前列出的amd和commonjs格式都无法实现需求,正确配置需要使用iife格式配合name字段。

具体修改方案

将你配置中output数组内对应需要生成全局变量的配置项修改为如下内容:

{
  format: 'iife',
  name: 'moduleName', // 此处填写你要暴露的全局变量名,等效Webpack配置中的library.name
  entryFileNames,
  // 如果配置了外部依赖(externals),需要额外添加globals字段指定依赖对应的全局变量名,示例如下:
  // globals: {
  //   react: 'React',
  //   'react-dom': 'ReactDOM'
  // }
}

注意:如果你当前是多入口打包场景,需要为每个入口单独配置对应iife类型的output条目,且每个条目的name不能重复,避免全局变量覆盖。

原理解释

Rollup的iife格式会将打包产物包裹在立即执行函数中,通过name配置项指定的变量名挂载到全局作用域,生成的代码结构和你示例中的var libName=function(e){...}()完全一致,等效Webpack的output.library.type = 'var'配置。

你之前尝试的两种格式均不匹配需求:

  • amd格式是异步模块规范产物,仅可在符合AMD规范的加载器(如RequireJS)环境下使用,不会生成全局变量
  • commonjs格式是Node.js环境的模块规范产物,用于服务端场景,也不会生成全局挂载的var变量

内容的提问来源于stack exchange,提问作者Szopinski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:06:08