如何配置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
相关产品推荐
相关产品推荐

