2023-10-05 rollup 正式发布 4.x 版本
重大变更
- 所需的最低Node 版本现在是 18.0.0
- 浏览器版本现在依赖于还需要提供的 WASM 二进制文件
- NodeJS 构建现在依赖于可选的原生二进制文件;对于不支持的平台,用户可以使用与rollup具有相同接口但依赖于 WASM 二进制文件的
@rollup/wasm-node
包 - 导入属性的“with”语法尚不受支持,正在等待 SWC 中的支持
INVALID_IMPORT_ASSERTION
错误代码已替换为INVALID_IMPORT_ATTRIBUTE
- Rollup 现在将警告无效位置的 @__PURE__ 和 @__NO_SIDE_EFFECTS__ 注释
- 如果 输入/入口 模块以 #!...注释开头,则此注释
#!...
将附加到输出 和es
cjs
格式前面 - 文件哈希(file hashes)现在将使用 url-safe 的 base64 编码哈希
- 最大哈希长度已减少到 22 个字符
RollupWarning
该类型已被删除,取而代之的是该RollupLog
类型
Rollup Options 的变动
- 不再支持 Acorn 插件,该
acornInjectPlugins
选项已被删除 acorn
选项已被删除output.externalImportAssertions
已被弃用,取而代之的是output.externalImportAttributes
inlineDynamicImports
,manualChunks
并且preserveModules
已在输入选项中删除:请使用同名的相应输出选项- 已删除输出选项
output.experimentalDeepDynamicChunkOptimization
:不再需要此选项,因为Rollup现在始终运行完整的分块算法( full chunking algorithm)·output.dynamicImportFunction
:改用renderDynamicImport
插件钩子output.namespaceToStringTag
:改用output.generatedCode.symbols
output.preferConst
:改用output.generatedCode.constBindings
Plugin 插件接口变动
- 对于
this.resolve
,该skipSelf
选项的默认值现在为true
this.parse
现在仅支持该allowReturnOutsideFunction
选项- 导入断言现在使用新的导入属性 AST 结构
- 插件接口不同位置的“assertions”已替换为“attributes”
- 如果模块ID的导入由插件的加载钩子处理,则如果模块ID对应于实际路径,rollup.watch将不再监视实际文件;如果这是预期的,则插件负责为任何依赖文件调用this.addWatchFile。
- buildStart和其他钩子提供的标准化输入选项不再包含onwarn处理程序;插件应使用onLog代替。
this.moduleIds
已从插件上下文中删除:改用this.getModuleIds()
- 该标志已从返回的 中删除
ModuleInfo
thi s.getModuleInfo()
:hasModuleSideEffects
ModuleInfo
代替使用moduleSideEffects
特性
- 通过切换到基于 SWC 的本机解析器来提高解析速度
- Rollup 现在将警告无效位置的 @__PURE__ 和 @__NO_SIDE_EFFECTS__ 注释
- 解析器现在作为单独的导出
parseAst
公开
Bug 修复
- 如果虚拟文件的名称与实际文件名相对应,则Rollup不再尝试监视虚拟文件;相反,插件通过
this.addWatchFile()
处理监视