2023-09-28
- Fix static analysis when an exported function uses callbacks (#5158)
- #5158: Deoptimize all parameters when losing track of a function ( @lukastaegert)
2023-09-24
- Fix a bug where code was wrongly tree-shaken after mutating function parameters (#5153)
- #5145: docs: improve the docs repl appearance in the light mode ( @TrickyPi)
- #5148: chore(deps): update dependency @vue/eslint-config-typescript to v12 (@renovate[bot])
- #5149: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5153: Fully deoptimize first level path when deoptimizing nested parameter paths (@lukastaegert)
2023-09-15
- Export
TreeshakingPresettype (#5131)
- #5131: fix: exports
TreeshakingPreset(@moltar) - #5134: docs: steps to enable symlinks on windows (@thebanjomatic)
- #5137: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
2023-09-10
- Fix time measurement of plugin hooks in watch mode (#5114)
- Ensure accessing document.currentScript in import.meta.url returns correct results (#5118)
- #5114: fix(perf): avoid superfluous timer wrappings in watch mode ( @ZhengLiu2825)
- #5118: fix: access document.currentScript at the top level (@TrickyPi)
- #5125: chore(deps): update actions/checkout action to v4 ( @renovate[bot])
- #5126: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5129: re-enbale repl-artefacts workflow for rollup-swc branch ( @TrickyPi)
2023-09-06
- Add output.sourcemapFileNames option (#5105)
- Add generic type parameter for
apito Plugin type (#5112)
- Ensure mutations of CustomEvent details are tracked (#5123)
- #5105: Added option to name sourcemap files, i.e. a output.sourcemapFileName… (@atti187)
- #5108: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5109: Docs: load full path of rollup.browser.js for Rollup V4 ( @TrickyPi)
- #5112: feat(types): add generic type for plugin api (@sxzz)
- #5115: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5123: Deoptimize custom event detail (@lukastaegert)
2023-08-22
- Ensure external files with relative import paths outside the target are rendered correctly (#5099)
- #5093: chore(deps): update dependency eslint-config-prettier to v9 ( @renovate[bot])
- #5094: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5099: Fix resolution of relative external files outside target directory (@lukastaegert)
- #5101: chore(deps): update dependency lint-staged to v14 ( @renovate[bot])
- #5102: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
2023-08-09
- Add a new property
preliminaryFileNameto generated chunks containing the file name placeholder (#5086) - Improve performance of sourcemap generation by lazily decoding mappings (#5087)
- Make the
codeproperty of rendered modules in the output readonly (#5091)
- #5086: feat: add
preliminaryFileNametoOutputChunk(@lsdsjy) - #5087: perf(sourcemaps): add back lazy sourcemap decode and handling nullish mappings (@thebanjomatic)
- #5091: fix: the type of RenderedModule.code is readonly (@TrickyPi)
2023-08-04
- Revert sourcemap performance improvement for now as it causes issues with Vite (#5075)
- #5075: Revert perf(sourcemap): lazy compute decoded mappings ( @thebanjomatic)
2023-08-03
- Improve performance when generating sourcemaps (#5075)
- #5075: perf(sourcemap): lazy compute decoded mappings (@thebanjomatic)
2023-07-28
- Mark
Object.valuesandObject.entriesas pure if their argument does not contain getters (#5072)
- #5070: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5071: docs(tutorial): change the .js extension to .mjs (@TrickyPi)
- #5072: Add known globals (@sapphi-red)
- #5078: chore(deps): update dependency @vue/eslint-config-prettier to v8 (@renovate[bot])
- #5079: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
2023-07-17
- Do not pass external modules to
manualChunksto avoid breaking existing configs (#5068)
- #5056: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5059: chore(config): migrate renovate config (@renovate[bot])
- #5064: chore(deps): update dependency prettier to v3 (@renovate[bot])
- #5065: chore(deps): update typescript-eslint monorepo to v6 (major) ( @renovate[bot])
- #5068: fix: don't pass external modules to the manualChunks function ( @TrickyPi)
2023-07-06
- Improve error handling when manual chunks would contain external modules (#5050)
- #5050: fix: improve error for manualChunks' modules that are resolved as an external module (@TrickyPi)
2023-07-05
- Support
hasOwnPropertyas exported name in CommonJS (#5010) - Properly reference browser types in package file (#5051)
- #5010: safe hasOwnProperty call (@LongTengDao)
- #5051: @rollup/browser: fix types export map entry (@developit)
2023-06-30
- Add
--filterLogsCLI flag andROLLUP_FILTER_LOGSenvironment variable for log filtering (#5035)
- #5035: Add ability to filter logs via CLI option or environment variable (@lukastaegert)
- #5049: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
2023-06-26
- Fix error when inlining dynamic imports that contain unused reexported variables (#5047)
- #5047: Do not add tree-shaken variables to namespaces when inlining dynamic imports (@lukastaegert)
2023-06-24
- Handle plugin errors where
codeis not a string (#5042) - Use current transformed source when generating code frames with positions in transform hooks (#5045)
- #5038: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5040: Fix typo in index.md (@vHeemstra)
- #5042: fix: a plugin error can contains numeric code (@TrickyPi)
- #5045: Fix
this.errorwithposintransformhook (@sapphi-red) - #5046: chore(deps): update dependency locate-character to v3 ( @renovate[bot])
2023-06-12
- Respect
__NO_SIDE_EFFECTS__for async functions (#5031)
- #5031: fix:
__NO_SIDE_EFFECTS__annotation for async function (@antfu)
2023-06-11
- Add
this.infoandthis.debugplugin context logging functions (#5026) - Add
onLogoption to read, map and filter logs (#5026) - Add
logLeveloption to fully suppress logs by level (#5026) - Support function logs in
this.warn,this.infoandthis.debugto avoid heavy computations based on log level ( #5026) - Add
onLogplugin hook to read, filter and map logs from plugins (#5026)
- #5026: Add Logging API (@lukastaegert)
2023-06-10
- Fix an issue where bundles with
@rollup/plugin-commonjswere missing internal dependencies when code-splitting ( #5029) - Do not use
process.exit(0)in watch mode to avoid issues in embedded scenarios (#5027)
- #5027: fix turborepo with rollup --watch (@plumber-dhaval)
- #5028: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5029: fix: get right sideEffectModules (@TrickyPi)
2023-06-07
- Add new annotation
/* #__NO_SIDE_EFFECTS__ */to mark function declarations as side effect free (#5024)
- #5024: feat: support
#__NO_SIDE_EFFECTS__annotation for function declaration (@antfu)
2023-06-04
- Ensure the last segment of sourcemapBaseUrl is never omitted (#5022)
- #5006: Better workflow caching (@lukastaegert)
- #5012: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5022: fix: add a trailing slash automatically for sourcemapBaseUrl ( @TrickyPi)
- #5023: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
2023-05-22
- Support emitting "prebuilt chunks" from plugins (#4990)
- Mark Sets and Maps as pure when they receive an array literal as argument (#5005)
- #4990: feat: this.emitFile support prebuilt-chunk type (@TrickyPi)
- #5005: feat: mark Set, Map, WeakSet and WeakMap with array arguments as pure (@TrickyPi)
2023-05-21
- Remove force quit again as it caused some issues (#5004)
- #5001: chore(deps): update dependency @rollup/plugin-commonjs to v25 ( @renovate[bot])
- #5002: chore(deps): update dependency eslint-plugin-unicorn to v47 ( @renovate[bot])
- #5003: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5004: Do not force quit Rollup or close stdout (@lukastaegert)
2023-05-17
- Prevent empty non-facade chunks by merging them into other suitable chunks (#4989)
- Avoid facade chunks in some situations involving reexports (#4989)
- Improve algorithm for best merge target when using
experimentalMinChunkSizeto take tree-shaking into account ( #4989)
- Take side effects of external dependencies into account when merging chunks for
experimentalMinChunkSize(#4989)
- #4989: Prevent empty chunks and thoroughly improve experimentalMinChunkSize (@lukastaegert)
2023-05-16
- Allow a namespace to properly contain itself as a named export (#4991)
- #4991: Handle self-referencing namespaces (@lukastaegert)
2023-05-13
- Show correct error on uncaught exceptions in watch mode (#4987)
- #4987: Properly quit on uncaught exceptions (@lukastaegert)
- #4988: test: add options type for function tests (@TrickyPi)
2023-05-09
- Ensure Rollup CLI prints everything to stdout before exiting (#4980)
- #4980: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #4983: Prevent exit before stdout is drained (@lukastaegert)
2023-05-05
- Keep all consecutive lines at the top of each module that start with a comment (#4975)
- Ensure that declarations inside switch cases do not use the same scope as the discriminator (#4979)
- #4975: Keep leading comments on consecutive lines (@lukastaegert)
- #4979: Use correct scope in switch statements (@lukastaegert)
2023-05-03
- Resolve crash when shimming a missing export in an otherwise non-included module when preserving modules (#4971)
- #4971: Handle shimming missing exports when preserving modules ( @lukastaegert)
- #4972: Configure Renovate (@renovate[bot])
2023-05-02
- Run
process.exit()when Rollup CLI finishes successfully to solve issues on some systems (#4969)
- #4954: test: enable typecheck for _config files (@antfu)
- #4969: Automatically force close Rollup when done (@lukastaegert)
2023-04-30
- Mark global functions that trigger iterators as impure for now (#4955)
- #4955: fix: mark some known globals or their functions as impure ( @TrickyPi)
2023-04-29
- Make sure call arguments are properly deoptimized when a function uses the
argumentsvariable (#4965)
- #4957: Update dependencies (@lukastaegert)
- #4964: Fix REPL in dev (@lukastaegert)
- #4965: Ensure arguments are deoptimized when arguments variable is used (@lukastaegert)
- #4967: Log REPL output to console (@lukastaegert)
2023-04-23
- Support tree-shaking of named exports in dynamic imports when using destructuring and similar patterns (#4952)
- #4952: feat: tree-shake deterministic dynamic imports (@antfu)
2023-04-21
- Properly track array element mutations when iterating with a for-of loop (#4949)
- Handle default exporting an anonymous class that extends another class (#4950)
- #4943: Add a test for reserved keywords used as import/export specifiers (@Andarist)
- #4949: Deoptimize right side in for-of loops (@lukastaegert)
- #4950: Support default exported classes that extend other classes ( @lukastaegert)
2023-04-18
- Revert handling of non-JS import and export names due to regressions (#4914)
2023-04-18
- Handle import and export names that are not valid JavaScript identifiers (#4939)
- #4939: Fixed imports/exports that are illegal identifiers in the es output (@Andarist)
- #4941: Reinstate global styles (@lukastaegert)
2023-04-17
- Do not remove breaks statements after switch statements with conditional breaks (#4937)
- #4937: fix: handle conditional breaks in nested switch statement cases ( @TrickyPi and @lukastaegert)
2023-04-16
- Reduce memory consumption for function call parameter analysis (#4938)
- Fix types for
shouldTransformCachedModule(#4932)
- #4925: chore: repl style add scoped (@btea)
- #4926: docs: Update the x_google_ignorelist url (@jecfish)
- #4932: Allow shouldTransformCachedModule to return null (@bluwy)
- #4935: Bump peter-evans/create-or-update-comment from 2 to 3 ( @dependabot[bot])
- #4936: Disable puppeteer sandbox to fix Vercel deployment ( @lukastaegert)
- #4938: Improve memory usage for parameter deoptimizations ( @lukastaegert)
2023-03-24
- Fix a crash when using a manual chunk entry that is not already included in the module graph (#4921)
- Fix a crash when reporting a warning with incorrect sourcemap information (#4922)
- #4921: Handle manual chunks where the entry is not part of the module graph (@lukastaegert)
- #4922: Do not fail if the location of a warning is outside the original source (@lukastaegert)
2023-03-23
- Fix returned file name from this.getFileName when assets are deduplicated (#4919)
- #4919: Only set asset names when finalizing (@lukastaegert)
2023-03-20
- Allow dynamically imported files to have synthetic named exports when preserving modules (#4913)
- Use deterministic file name when emitting several files with same source (#4912)
- Fix a crash when dynamically importing a file with synthetic named exports when preserving modules (#4913)
- #4912: fix: make file name deterministic in parallel emits (fix #4909) ( @sun0day)
- #4913: Provide synthetic namespace for dynamic imports when perserving modules (@lukastaegert)
2023-03-10
- Produce valid code when the first statement in aclass static block is tree-shaken (#4898)
- #4898: fix: set a correct node location for static blocks (@TrickyPi)
- #4900: docs: fix table at
output.sanitizeFileNamesection (@0x009922)
2023-03-09
- Make reassignment tracking of call parameters more specific to no lose information when an object is passed to a function (#4892)
- #4890: Fix
npm run dev(@lukastaegert) - #4892: Only selectively deoptimize call parameters (@lukastaegert)
- #4897: Pre-render mermaid graphs on website (@lukastaegert)
2023-03-01
- Add
experimentalLogSideEffectsto log the first detected side effect in every module (#4871) - Ignore-list sourcemaps of files inside node_modules by default (#4877)
- #4871: Add experimental logging for side effects (@lukastaegert)
- #4877: feat: mark files in a
node_modulesas ignore-listed by default (@bmeurer) - #4880: build: use @rollup/plugin-replace to replace chokidar fsevents ( @dnalborczyk)
- #4887: Refactor (@dnalborczyk)
2023-02-25
- Handle non-URL-safe characters when poly-filling import.meta.url (#4875)
- #4870: fix: style optimization in dark mode (@huodoushigemi)
- #4875: Fix transformation of
import.meta.urlin CommonJS (@fasttime) - #4876: fix: wrong params of the transform hook (@ZzqiZQute)
- #4878: Improve test stability (@lukastaegert)
2023-02-20
- Do not omit code if a file that only re-exports a used variable has
moduleSideEffectsset totrue(#4867) - Add missing
needsCodeReferenceproperty in TypeScript for asset tree-shaking (#4868) - Add correct side effect configuration for additional Object and Promise methods (#4323)
- #4323: feat: add known globals (@dnalborczyk)
- #4867: Include side effects of re-exporters unless they have moduleSideEffects: false (@lukastaegert)
- #4868: Add
needsCodeReferenceproperty toEmittedAsset(@sapphi-red)
2023-02-18
- Add TypeScript types for
loadConfigFile(#4853) - Fix an issue that could include unused classes in the bundle if their super class was in a file with
moduleSideEffects: false(#4866)
- #4853: feat: export loadConfigFile type (@TrickyPi)
- #4866: Do not mark variable access in files without side effects as TDZ (@lukastaegert)
2023-02-18
- Deprecate
experimentalDeepDynamicChunkOptimizationand always run the full chunk generation algorithm (#4862)
- Fix an issue that caused very slow builds for projects with over 1000 dynamic imports when
experimentalDeepDynamicChunkOptimizationwas enabled (#4862)
- #4862: Improve chunking performance (@lukastaegert)
2023-02-17
- Support
output.sourcemapIgnoreListoption to mark file sources as ignored in thex_google_ignoreListattribute of the resulting sourcemap (#4848) - Support sourcemaps where
sourcesContentcontainsnullentries (#4846) - Allow explicitly passing
truefor thecacheoption to override Vite's default (#4859)
- Fix an issue where unrelated side effects spilled into other chunks when using the
experimentalMinChunkSizeoption ( #4851)
- #4846: Update magic-string and adjust types. (@bmeurer)
- #4848: Introduce
sourcemapIgnoreListpredicate. (@bmeurer) - #4851: Fix chunk graph update when merging chunks for minChunkSize ( @lukastaegert)
- #4852: docs: make api params more readable (@cunzaizhuyi)
- #4856: simplify code in includeStatements (@TrickyPi)
- #4859: Allow to pass "true" to InputOptions.cache (@danielrentz)
2023-02-10
- Do not consider instantiating a constructor a side effect if it adds properties to "this" and is instantiated elsewhere (#4842)
- Improve side effect detection in constructors (#4842)
- #4842: fix: add this option to context.ignore (@TrickyPi)
- #4843: fixed the logo link (@oMatheuss)
- #4844: Update index.md (@cunzaizhuyi)
- #4845: docs: fix style (@TrickyPi)
2023-02-05
- Add
experimentalDeepDynamicChunkOptimizationoption to produce fewer chunks from dynamic imports (#4837)
- #4837: Add flag to re-enable deep dynamic chunk optimization ( @lukastaegert)
- #4839: fix: correct incorrect assertions (@TrickyPi)
2023-02-03
- Prevent chunk cycles when using
experimentalMinChunkSize(#4723)
- #4723: Improve minChunkSize algorithm (@lukastaegert)
- #4833: docs: Fix typo (@mturoci)
- #4835: Tables in docs (@lukastaegert)
2023-02-01
- Handle self-references in class static blocks and construtors when the class is renamed (#4827)
- Improve warnings when creating circular chunks taht reexport variables (#4829)
- #4827: fix: use the original class name in the class body (@TrickyPi)
- #4829: Improve and fix cross-chunk-reexport warning (@lukastaegert)
- #4830: Add Algolia doc search (@lukastaegert)
- #4831: Add warning not to add assets directly to the bundle ( @lukastaegert)
2023-01-28
- Change generated external namespace reexport helper code for CommonJS to better work with NodeJS named export detection (#4826)
- #4825: Add and use anchors for nested options (@lukastaegert)
- #4826: Use old namespace reexport code pattern for better Node support ( @lukastaegert)
2023-01-26
- Support opt-in tree-shaking for emitted assets based on code references (#4805)
- Adapt documentation references in Rollup to new website (#4807)
- #4805: feat: add needsCodeReference field to EmittedAsset (@TrickyPi)
- #4807: Rewrite website in Vitepress and merge it into the main repository (@lukastaegert)
- #4816: web-publisher: Update docs/faqs/index.md (@PuruVJ)
- #4819: Replace fs-extra with built-ins (@dnalborczyk)
- #4820: Introduce timeout-minutes in Github actions ci (@dnalborczyk)
- #4822: Tweak document landing page (@sapphi-red)
- #4823: Minor migration guide improvements (@sapphi-red)
- #4824: Add most options to the REPL (@lukastaegert)
2023-01-20
- Fix some crashes when using optional chaining with namespaces and improve tree-shaking (#4812)
- Avoid wrongly removed code when using optional chaining (#4812)
- #4809: fix: rollup bin file is in dist folder (@saibotsivad)
- #4812: Rework tree-shaking support for optional chaining (@lukastaegert)
2023-01-12
- Add information about the resolving plugin to resolved ids (#4789)
- Improve treeshaking for optional chaining when the root is nullish (#4797)
- Remove unnecessary internal defaults for acorn options (#4786)
- #4785: Use @jridgewell/sourcemap-codec (@bluwy)
- #4786: Remove default acorn options + other fixes (@dnalborczyk)
- #4789: feat: add
resolvedByfield toResolvedId(@TrickyPi) - #4794: fix: import can be shortened (@cunzaizhuyi)
- #4796: Update dependencies (@lukastaegert)
- #4797: feat: treeshake for optional chaining (@antfu)
2023-01-02
- Sort keys in generated dynamic namespace objects (#4780)
- Do not consider Array.group to be side effect free as the specs have changed (#4779)
- #4777: Import from node:fs/promises (@dnalborczyk)
- #4778: Bump deps (@dnalborczyk)
- #4779: Remove array grouping (web compat issue) (@dnalborczyk)
- #4780: Sort namespace object keys (@dnalborczyk)
- #4781: Use Set and builtin-modules package (@dnalborczyk)
- #4782: Use more restrictive types (@dnalborczyk)
2022-12-28
- Support ES2022 arbitrary module namespace identifiers (#4770)
- Add optional
versionproperty to plugin type (#4771)
- #4768: Fix small typo in 999-big-list-of-options.md (@ericmutta)
- #4769: docs: add a instruction about how to run one test on your local computer (@TrickyPi)
- #4770: Add support for arbitrary module namespace identifiers ( @lukastaegert)
- #4771: Add
versionproperty to Plugin type (@Septh)
2022-12-23
- Reduce memory footprint when explicitly passing
cache: false(#4762) - Fix a crash when preserving modules and reexporting namespaces (#4766)
- #4762: Improve AST garbage collection (@bluwy)
- #4766: Fix handling of namespace reexports when preserving modules ( @lukastaegert)
2022-12-22
- Deduplicate ESM exports and reexports when preserving modules (#4759)
- Handle files that are emitted as a side effect of the manualChunks option (#4759)
- #4759: feat: deduplicate reexports and renderedExports to simplify output (@TrickyPi)
- #4761: Support emitting files via manualChunks in output (@lukastaegert)
- #4763: docs: update outdated info (@TrickyPi)
2022-12-17
- Avoid name shadowing when default exporting a class that matches the name of another class (#4756)
- Do not display the error message both in a separate line and in the stack trace in rollup CLI (#4749)
- Make type of
RollupWarning.causecompatible withError.cause(#4757) - Do not swallow side effects when interacting with modules namespaces nested in another object (#4758)
- #4749: feat: simplify
stackinfo in cli error (@TrickyPi) - #4756: Avoid name conflicts for default exported classes (@lukastaegert)
- #4757: fix: RollupLog cause allow unknown (@Shinigami92)
- #4758: Correctly handle side effects when a namespace is nested in an object (@lukastaegert)
2022-12-13
- Do not remove calls to
.execand.testfor included stateful regular expressions (#4742)
- #4742: fix: check whether RegExp have the global or sticky flags set ( @TrickyPi)
2022-12-11
- Ensure
this.getFileNameno longer returns a placeholder as soon as hash placeholders have been resolved (#4747)
- #4747: provide hashed file name when using this.getFileName in generateBundle (@lukastaegert)
2022-12-10
- Improve chunk generation performance when one module is dynamically imported by many other modules (#4736)
- #4736: Improve chunk assignment performance (@lukastaegert)
2022-12-09
- Ad a hint to use @rollup/plugin-json when imports from a JSON file are not found (#4741)
- #4741: fix: provide json hint when importing a no export json file ( @TrickyPi)
2022-12-08
- Do not treat
.testand.execon regular expressions as side effects (#4737)
- #4737: feat: add sutiable RegExp prototype methods (@TrickyPi)
2022-12-05
- extend
this.getModuleInfowith information about exports (#4731)
- #4731: feat: add
exportsandexportedBindingstoModuleclass ( @TrickyPi)
2022-12-01
- Accept functions returning a config in defineConfig (#4728)
- #4728: Overload defineConfig to accept a RollupOptionsFunction parameter (@Septh)
2022-11-27
- Add
treeshake.manualPureFunctionsto override static analysis for explicit function names (#4718)
- Do not throw when a plugin uses
this.loadwithout awaiting its result (#4725)
- #4718: Add simple way to manually declare pure functions (@lukastaegert)
- #4725: Fix isIncluded error when using rollup-plugin-typescript2 ( @lukastaegert)
2022-11-22
- Do not keep unused
Object.freezecalls on object literals (#4720)
- #4720: Only consider Object.freeze a side effect if the argument is used (@lukastaegert)
2022-11-12
- Add "experimentalMinChunkSize" option to merge smaller chunks into larger ones (#4705)
- Automatically deduplicate assets again when the source is a
Buffer(#4712) - Deduplicate
Bufferwithstringassets (#4712)
- Support plugins with object hooks when using
perf: true(#4707)
- #4702: docs: add additional tips for heap out of memory (@benmccann)
- #4705: Allow to define minimum chunk size limit (@lukastaegert)
- #4707: Fix perf timers for object hooks (@lukastaegert)
- #4710: Update terser docs (@nikolas)
- #4712: feat: deduplicate assets with buffer source (@patak-dev)
2022-11-01
- We deconflicting classes, ensure the original class name still does not shadow variables (#4697)
- #4697: Prevent class ids from shadowing other variables (@lukastaegert)
2022-10-31
- Always use forward slashes in chunk ids when preserving modules, even on Windows (#4693)
- Escape problematic characters in ids when rewriting
import.meta.url(#4693)
- #4685: update package-lock version (@jerry-lllman)
- #4689: Update 07-tools.md (@cokert)
- #4693: Use correct import.meta.url slashes on Windows (@lukastaegert)
2022-10-18
- Fix an issue whre Rollup confused
new.targetwithimport.meta(#4679) - Ensure that Rollup does not make assumptions about the value of unknown namespace import members (#4684)
- #4679: Do not rewrite new.target (@lukastaegert)
- #4683: Remove typo in resolveId documentation (@ChrispyChris)
- #4684: Return correct values for unknown namespace members ( @lukastaegert)
2022-10-16
- Do not hang/crash on hashbang comments in input modules (#4676)
2022-10-16
- Rewrite class declarations to preserve their .name property if necessary (#4674)
- #4674: Preserve rendered class names (@lukastaegert)
2022-10-15
- Support providing Promises as plugins like Vite (#4671)
- #4666: Add unicorn plugin (@lukastaegert)
- #4667: refactor: improve types (@sxzz)
- #4668: fix: nested plugin in options stage (@sxzz)
- #4669: refactor: merge duplicate imports (@c0dedance)
- #4670: docs: fix minor typo in migration documentation (@ThisIsMissEm)
- #4671: feat: support async plugins (@sxzz)
2022-10-12
- Support using arrays of plugins as plugins like Vite (#4657)
- #4657: feat: support nested plugin (@sxzz)
2022-10-12
- Fix installation on Windows (#4662)
- Avoid missing parameters that are only used in a destructuring initializer (#4663)
- #4661: Enforce type imports (@lukastaegert)
- #4662: fix: missing "node" causes run script error (@c0dedance)
- #4663: Ensure the initializer of a destructuring declaration is always included if the id is included (@lukastaegert)
- #4664: fix: remove lint:js:nofix script redundancy options (@c0dedance)
2022-10-11
- Rollup now requires at least Node 14.18.0 to run (#4548 and #4596)
- The browser build has been split into a separate package
@rollup/browser(#4593) - The node build uses the
node:prefix for imports of builtin modules (#4596) - Some previously deprecated features have been removed (#4552):
- Some plugin context functions have been removed:
this.emitAsset(): usethis.emitFile()this.emitChunk(): usethis.emitFile()this.getAssetFileName(): usethis.getFileName()this.getChunkFileName(): usethis.getFileName()this.isExternal(): usethis.resolve()this.resolveId(): usethis.resolve()
- The
resolveAssetUrlplugin hook has been removed: useresolveFileUrl - Rollup no longer passes
assetReferenceIdorchunkReferenceIdparameters toresolveFileUrl - The
treeshake.pureExternalModulesoption has been removed: usetreeshake.moduleSideEffects: 'no-external' - You may no longer use
trueorfalseforoutput.interop. As a replacement fortrue, you can use "compat" - Emitted assets no longer have an
isAssetflag in the bundle - Rollup will no longer fix assets added directly to the bundle by adding the
type: "asset"field
- Some plugin context functions have been removed:
- Some features that were previously marked for deprecation now show warnings when used (#4552):
- Some options have been deprecated:
inlineDynamicImportsas part of the input options: useoutput. inlineDynamicImportsmanualChunksas part of the input options: useoutput. manualChunksmaxParallelFileReads: use `maxParallelFileOpsoutput.preferConst: useoutput.generatedCode.constBindingsoutput.dynamicImportFunction: use therenderDynamicImportplugin hookoutput.namespaceToStringTag: useoutput.generatedCode.symbolspreserveModulesas part of the input options: useoutput. preserveModules
- You should no longer access
this.moduleIdsin plugins: usethis.getModuleIds() - You should no longer access
this.getModuleInfo(...).hasModuleSideEffectsin plugins: usethis.getModuleInfo(...).moduleSideEffects
- Some options have been deprecated:
- Configuration files are only bundled if either the
--configPluginor the--bundleConfigAsCjsoptions are used. The configuration is bundled to an ES module unless the--bundleConfigAsCjsoption is used. In all other cases, configuration is now loaded using Node's native mechanisms (#4574 and #4621) - The properties attached to some errors have been changed so that there are fewer different possible properties with consistent types (#4579)
- Some errors have been replaced by others (ILLEGAL_NAMESPACE_REASSIGNMENT -> ILLEGAL_REASSIGNMENT, NON_EXISTENT_EXPORT -> MISSING_EXPORT) (#4579)
- Files in
rollup/dist/*can only be required using their file extension (#4581) - The
loadConfigFilehelper now has a named export of the same name instead of a default export (#4581) - When using the API and sourcemaps, sourcemap comments are contained in the emitted files and sourcemaps are emitted as regular assets (#4605)
- Watch mode no longer uses Node's EventEmitter but a custom implementation that awaits Promises returned from event handlers (#4609)
- Assets may only be deduplicated with previously emitted assets if their source is a
string(#4644) - By default, Rollup will keep external dynamic imports as
import(…)in commonjs output unlessoutput.dynamicImportInCjsis set to false (#4647)
- As functions passed to
output.banner/footer/intro/outroare now called per-chunk, they should be careful to avoid performance-heavy operations (#4543) entryFileNames/chunkFileNamesfunctions now longer have access to the rendered module information viamodules, only to a list of includedmoduleIds(#4543)- The path of a module is no longer prepended to the corresponding chunk when preserving modules (#4565)
- When preserving modules, the
[name]placeholder (as well as thechunkInfo.nameproperty when using a function) now includes the relative path of the chunk as well as optionally the file extension if the extension is not one of.js,.jsx,.mjs,.cjs,.ts,.tsx,.mts, or.cts(#4565) - The
[ext],[extName]and[assetExtName]placeholders are no longer supported when preserving modules (#4565) - The
perfoption no longer collects timings for the asynchronous part of plugin hooks as the readings were wildly inaccurate and very misleading, and timings are adapted to the new hashing algorithm (#4566) - Change the default value of
makeAbsoluteExternalsRelativeto "ifRelativeSource" so that absolute external imports will no longer become relative imports in the output, while relative external imports will still be renormalized ( #4567) - Change the default for
output.generatedCode.reservedNamesAsPropsto no longer quote properties likedefaultby default (#4568) - Change the default for
preserveEntrySignaturesto "exports-only" so that by default, empty facades for entry chunks are no longer created (#4576) - Change the default for
output.interopto "default" to better align with NodeJS interop (#4611) - Change the default for
output.esModuleto "if-default-prop", which only adds __esModule when the default export would be a property (#4611) - Change the default for
output.systemNullSetterstotrue, which requires at least SystemJS 6.3.3 (#4649)
- Plugins that add/change/remove imports or exports in
renderChunkshould make sure to updateChunkInfo.imports/importedBindings/exportsaccordingly (#4543) - The order of plugin hooks when generating output has changed (#4543)
- Chunk information passed to
renderChunknow contains names with hash placeholders instead of final names, which will be replaced when used in the returned code orChunkInfo.imports/importedBindings/exports(#4543 and #4631) - Hooks defined in output plugins will now run after hooks defined in input plugins (used to be the other way around) ( #3846)
- Functions passed to
output.banner/footer/intro/outroare now called per-chunk with some chunk information (#4543) - Plugins can access the entire chunk graph via an additional parameter in
renderChunk(#4543) - Chunk hashes only depend on the actual content of the chunk and are otherwise stable against things like renamed/moved source files or changed module resolution order (#4543)
- The length of generated file hashes can be customized both globally and per-chunk (#4543)
- When preserving modules, the regular
entryFileNameslogic is used and the path is included in the[name]property. This finally gives full control over file names when preserving modules (#4565) output.entryFileNamesnow also supports the[hash]placeholder when preserving modules (#4565)- The
perfoption will now collect (synchronous) timings for all plugin hooks, not just a small selection (#4566) - All errors thrown by Rollup have
name: RollupErrornow to make clearer that those are custom error types (#4579) - Error properties that reference modules (such as id and ids) will now always contain the full ids. Only the error message will use shortened ids (#4579)
- Errors that are thrown in response to other errors (e.g. parse errors thrown by acorn) will now use the standardized cause property to reference the original error (#4579)
- If sourcemaps are enabled, files will contain the appropriate sourcemap comment in
generateBundleand sourcemap files are available as regular assets (#4605) - Returning a Promise from an event handler attached to a RollupWatcher instance will make Rollup wait for the Promise to resolve (#4609)
- There is a new value "compat" for output.interop that is similar to "auto" but uses duck-typing to determine if there is a default export (#4611)
- There is a new value "if-default-prop" for esModule that only adds an
__esModulemarker to the bundle if there is a default export that is rendered as a property (#4611) - Rollup can statically resolve checks for
foo[Symbol.toStringTag]to "Module" if foo is a namespace (#4611) - There is a new CLI option
--bundleConfigAsCjswhich will force the configuration to be bundled to CommonJS (#4621) - Import assertions for external imports that are present in the input files will be retained in ESM output (#4646)
- Rollup will warn when a module is imported with conflicting import assertions (#4646)
- Plugins can add, remove or change import assertions when resolving ids (#4646)
- The
output.externalImportAssertionsoption allows to turn off emission of import assertions (#4646) - Use
output.dynamicImportInCjsto control if dynamic imports are emitted asimport(…)or wrappedrequire(…)when generating commonjs output (#4647)
- Chunk hashes take changes in
renderChunk, e.g. minification, into account (#4543) - Hashes of referenced assets are properly reflected in the chunk hash (#4543)
- No longer warn about implicitly using default export mode to not tempt users to switch to named export mode and break Node compatibility (#4624)
- Avoid performance issues when emitting thousands of assets (#4644)
- #3846: [v3.0] Run output plugins last (@aleclarson)
- #4543: [v3.0] New hashing algorithm that "fixes (nearly) everything" ( @lukastaegert)
- #4548: [v3.0] Deprecate Node 12 (@lukastaegert)
- #4552: [v3.0] Remove actively deprecated features, show warnings for other deprecated features (@lukastaegert)
- #4558: [v3.0] Convert build scripts to ESM, update dependencies ( @lukastaegert)
- #4565: [v3.0] Rework file name patterns when preserving modules ( @lukastaegert)
- #4566: [v3.0] Restructure timings (@lukastaegert)
- #4567: [v3.0] Change default for makeAbsoluteExternalsRelative ( @lukastaegert)
- #4568: [v3.0] Change default for output.generatedCode.reservedNamesAsProps (@lukastaegert)
- #4574: [v3.0] Better esm config file support (@lukastaegert)
- #4575: [v3.0] Show deprecation warning for maxParallelFileReads ( @lukastaegert)
- #4576: [v3.0] Change default for preserveEntrySignatures to exports-only (@lukastaegert)
- #4579: [v3.0] Refine errors and warnings (@lukastaegert)
- #4581: [v3.0] Use named export for loadConfigFile (@lukastaegert)
- #4592: [v3.0] Port doc changes from #4572 and #4583 to 3.0 (@berniegp)
- #4593: [v3.0] Browser build (@lukastaegert)
- #4596: [v3.0] Use "node:" prefix for imports of node builtins ( @lukastaegert)
- #4605: [v3.0] Better sourcemap emission (@lukastaegert)
- #4609: [v3.0] Custom awaiting watch emitter (@lukastaegert)
- #4611: [v3.0] Improve interop defaults (@lukastaegert)
- #4621: [v3.0] Always try to load config files via Node if possible ( @lukastaegert)
- #4624: [v3.0] Remove warning when using implicit default export mode ( @lukastaegert)
- #4631: [v3.0] Use ASCII characters for hash placeholders (@lukastaegert)
- #4644: [v3.0] Improve performance of asset emissions (@lukastaegert)
- #4646: [v3.0] Basic support for import assertions (@lukastaegert)
- #4647: [v3.0] Keep dynamic imports in CommonJS output (@lukastaegert)
- #4649: [v3.0] Change default for systemNullSetters (@lukastaegert)
- #4651: [v3.0] use compiler target ES2020 (@dnalborczyk)
For previous changelogs, see