**Project Information **
* Name of tool/project: Rollup
* Project home page: https://rollupjs.org/guide/en/
* Name of team requesting review: Design Systems Team (formerly Vue Migration)
* Primary contact: @egardner
* Target date for deployment: Fall 2021
* Link to code repository / patchset: https://gerrit.wikimedia.org/r/c/wvui/+/694972
**Description of the tool/project: **
Module bundler for JavaScript that runs in Node.js. From the project page:
> Rollup is a module bundler for JavaScript which compiles small pieces of code into something larger and more complex, such as a library or application. It uses the new standardized format for code modules included in the ES6 revision of JavaScript, instead of previous idiosyncratic solutions such as CommonJS and AMD. ES modules let you freely and seamlessly combine the most useful individual functions from your favorite libraries. This will eventually be possible natively everywhere, but Rollup lets you do it today.
**Description of how the tool will be used at WMF:**
The Design Systems Team is looking into the current generation of JS module bundlers in relation to two projects: WVUI (which is currently bundled using Webpack, a tool we're looking to move away from), and a possible general-purpose front-end build step for MediaWiki extensions.
Relevant Phab tasks:
* {T272879}
* {T279108}
**Dependencies**
* Node.js (version 10, which we already use in CI, is sufficient)
* Some plugins will likely be required for the functionality we need:
** `@rollup/plugin-node-resolve` and `@rollup/plugin-typescript` (which are officially maintained)
** `rollup-plugin-vue` which is maintained by the Vue.js core team
** A few widely-used 3rd-party plugins may also be useful: `rollup-plugin-terser`, `rollup-plugin-styles`
**Has this project been reviewed before?**
I don't believe so.
**Working test environment**
The above Gerrit patch for WVUI demonstrates a way to build the code for the library using Rollup, includes a working configuration file, and is a good example of how this tool would be used.
**Post-deployment**
Design Systems Team and @egardner