Skip to content

v4.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 05 Oct 15:15
· 221 commits to master since this release

4.0.0

2023-10-05

BREAKING CHANGES

General Changes

  • The minimal required Node version is now 18.0.0 (#5142)
  • The browser build now relies on a WASM artifact that needs to be provided as well (#5073)
  • The NodeJS build now relies on an optional native binary; for unsupported platforms, users can use the @rollup/wasm-node package that has the same interface as Rollup but relies on WASM artifacts (#5073)
  • The "with" syntax for import attributes is not yet supported, awaiting support in SWC (#5073)
  • The INVALID_IMPORT_ASSERTION error code has been replaced with INVALID_IMPORT_ATTRIBUTE (#5073)
  • Rollup will now warn for @__PURE__ and @__NO_SIDE_EFFECTS__ annotations in invalid locations (#5165)
  • If an entry module starts with a shebang comment #!..., this comment will be prepended to the output for es and cjs formats (#5163)
  • File hashes will now use url-safe base64 encoded hashes (#5155)
  • The maximum hash length has been reduced to 22 characters (#5155)
  • The RollupWarning type has been removed in favor of the RollupLog type (#5147)

Changes to Rollup Options

  • Acorn plugins are no longer supported, the acornInjectPlugins option has been removed (#5073)
  • The acorn option has been removed (#5073)
  • output.externalImportAssertions has been deprecated in favor of output.externalImportAttributes (#5073)
  • inlineDynamicImports, manualChunks and preserveModules have been removed on input option level: Please use the corresponding output options of the same names (#5143)
  • Removed output options (#5143):
    • output.experimentalDeepDynamicChunkOptimization: This option is no longer needed as Rollup now always runs the full chunking algorithm
    • output.dynamicImportFunction: Use the renderDynamicImport plugin hook instead
    • output.namespaceToStringTag: Use output.generatedCode.symbols instead
    • output.preferConst: Use output.generatedCode.constBindings instead

Plugin API Changes

  • For this.resolve, the default of the skipSelf option is now true (#5142)
  • this.parse now only supports the allowReturnOutsideFunction option for now (#5073)
  • Import assertions now use the new import attribute AST structure (#5073)
  • "assertions" have been replaced with "attributes" in various places of the plugin interface (#5073)
  • If the import of a module id is handled by the load hook of a plugin, rollup.watch no longer watches the actual file if the module id corresponds to a real path; if this is intended, then the plugin is responsible for calling this.addWatchFile for any dependency files (#5150)
  • The normalized input options provided by buildStart and other hooks no longer contain an onwarn handler; plugins should use onLog instead (#5147)
  • this.moduleIds has been removed from the plugin context: Use this.getModuleIds() instead (#5143)
  • The hasModuleSideEffects flag has been removed from the ModuleInfo returned by thi s.getModuleInfo(): Use moduleSideEffects on the ModuleInfo instead (#5143)

Features

  • Improve parsing speed by switching to a native SWC-based parser (#5073)
  • Rollup will now warn for @__PURE__ and @__NO_SIDE_EFFECTS__ annotations in invalid locations (#5165)
  • The parser is now exposed as a separate export parseAst (#5169)

Bug Fixes

  • Rollup no longer tries to watch virtual files if their name corresponds to an actual file name; instead, plugins handle watching via this.addWatchFile() (#5150)

Pull Requests