Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: evanw/bundler-esm-cjs-tests
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: rolldown/bundler-esm-cjs-tests
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Able to merge. These branches can be automatically merged.
  • 3 commits
  • 5 files changed
  • 1 contributor

Commits on Nov 10, 2024

  1. Copy the full SHA
    9c2f557 View commit details
  2. Add rolldown for comparison

    hyf0 committed Nov 10, 2024
    Copy the full SHA
    11460a7 View commit details

Commits on Nov 22, 2024

  1. Update rolldown'results

    hyf0 committed Nov 22, 2024
    Copy the full SHA
    1594f22 View commit details
Showing with 2,553 additions and 21 deletions.
  1. +52 −11 README.md
  2. +2 −2 node-test-loader.mjs
  3. +10 −8 package.json
  4. +26 −0 tests.js
  5. +2,463 −0 yarn.lock
63 changes: 52 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -12,10 +12,17 @@ Each test has a "direct" version and an "indirect" version. The indirect version

All tests have been run through the JS bundlers Webpack, Rollup, Parcel, and esbuild. Tests have additionally been run through node for comparison, although please keep in mind that node is not a JS bundler and shouldn't be expected to implement bundler-specific features such as `require()` of ESM code.

# Usage

```
yarn
node ./tests.js
```

## Results

<table>
<tr><th>Test</th><th>esbuild</th><th>node</th><th>webpack</th><th>parcel</th><th>rollup</th></tr>
<tr><th>Test</th><th>esbuild</th><th>rolldown</th><th>node</th><th>webpack</th><th>parcel</th><th>rollup</th></tr>
<tr><td>Direct:<pre>entry.js:
import * as entry from './entry.js'
input.works = entry.__esModule === void 0
@@ -25,8 +32,9 @@ All tests have been run through the JS bundlers Webpack, Rollup, Parcel, and esb
entry[Math.random() < 1 && '__esModule'] === void 0
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br><br><br>webpack<br>🚫</td>
<td>webpack<br>🚫<br><br>webpack<br>🚫</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
<td>rollup<br>🚫<br><br>rollup<br>🚫</td>
</tr>
@@ -43,6 +51,7 @@ foo.js:
foo[Math.random() < 1 && '__esModule'] === void 0
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>🚫<br><br>webpack<br>🚫</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -61,6 +70,7 @@ foo.js:
module[Math.random() < 1 && 'exports'] = '123'
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>🚫</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -81,6 +91,7 @@ foo.js:
export let bar = 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>🚫<br><br>webpack<br>🚫</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -103,8 +114,9 @@ foo.js:
export default { bar: 123 }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br><br><br>webpack<br>🚫</td>
<td>webpack<br>🚫<br><br>webpack<br>🚫</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
<td>rollup<br>✅<br><br>rollup<br>✅</td>
</tr>
@@ -124,10 +136,11 @@ foo.js:
exports[Math.random() < 1 && 'default'] = { bar: 123 }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>🚫</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
<td>rollup<br>🚫<br><br>rollup<br>✅</td>
<td>rollup<br><br><br>rollup<br>✅</td>
</tr>
<tr><td>Direct:<pre>entry.js:
const foo = require('./foo.js')
@@ -152,6 +165,7 @@ foo.js:
export let bar = 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>🚫<br><br>node<br>🚫</td>
<td>webpack<br>🚫<br><br>webpack<br>🚫</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -168,6 +182,7 @@ foo.js:
exports.foo = 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -184,6 +199,7 @@ foo.js:
export {}
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>🚫<br><br>node<br>🚫</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -200,6 +216,7 @@ foo.js:
export default 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>🚫<br><br>node<br>🚫</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -219,6 +236,7 @@ foo.js:
export let bar = 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>🚫<br><br>node<br>🚫</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -239,6 +257,7 @@ foo.js:
export default 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>🚫<br><br>node<br>🚫</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -262,6 +281,7 @@ bar.js:
export let baz = 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>🚫<br><br>node<br>🚫</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -283,6 +303,7 @@ foo.js:
{ default: { bar: 123 } }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -300,6 +321,7 @@ foo.js:
module[Math.random() < 1 && 'exports'] = 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -320,6 +342,7 @@ foo.js:
exports[Math.random() < 1 && 'default'] = { bar: 123 }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -340,6 +363,7 @@ foo.js:
export default 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>🚫<br><br>webpack<br>🚫</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -357,6 +381,7 @@ foo.js:
module[Math.random() < 1 && 'exports'] = '123'
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>🚫<br><br>webpack<br>🚫</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -374,6 +399,7 @@ foo.js:
module[Math.random() < 1 && 'exports'] = '123'
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>🚫<br><br>webpack<br>🚫</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -396,6 +422,7 @@ foo.js:
exports.bar = 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -418,6 +445,7 @@ foo.js:
export default { bar: 123 }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -438,6 +466,7 @@ foo.js:
export default { bar: 123 }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -458,6 +487,7 @@ foo.js:
export default { bar: 123 }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -476,6 +506,7 @@ foo.js:
export let __esModule = 0
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>🚫<br><br>node<br>🚫</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -494,6 +525,7 @@ foo.js:
{ bar: 123, __esModule: true }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -518,6 +550,7 @@ package.json:
{ "type": "module" }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -538,6 +571,7 @@ foo.js:
{ default: { bar: 123 }, __esModule: true }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -558,6 +592,7 @@ foo.js:
{ default: { bar: 123 }, __esModule: true }
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>🚫<br><br>webpack<br>🚫</td>
<td>parcel<br>🚫<br><br>parcel<br>🚫</td>
@@ -581,6 +616,7 @@ foo.js:
exports[Math.random() < 1 && 'foo'] = 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -604,6 +640,7 @@ foo.js:
exports[Math.random() < 1 && 'foo'] = 123
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -629,6 +666,7 @@ foo.js:
Math.random() < 1 && 'default', { value: 123 })
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
@@ -654,26 +692,29 @@ foo.js:
{ value: 123, enumerable: true })
</pre></td>
<td>esbuild<br>✅<br><br>esbuild<br>✅</td>
<td>rolldown<br>✅<br><br>rolldown<br>✅</td>
<td>node<br>✅<br><br>node<br>✅</td>
<td>webpack<br>✅<br><br>webpack<br>✅</td>
<td>parcel<br>✅<br><br>parcel<br>✅</td>
<td>rollup<br>✅<br><br>rollup<br>✅</td>
</tr>
<tr><td>Percent handled:</td>
<td>100.0%</td>
<td>100.0%</td>
<td>78.1%</td>
<td>71.9%</td>
<td>68.8%</td>
<td>53.1%</td>
<td>46.9%</td>
<td>48.4%</td>
</tr>
</table>

## Visual summary

<pre>
esbuild: ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅
node: ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 ✅✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅
webpack: ✅🚫 🚫🚫 ✅🚫 🚫🚫 ✅🚫 ✅🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅
parcel: ✅✅ ✅✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 🚫🚫 🚫🚫 ✅✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅ 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅
rollup: 🚫🚫 🚫🚫 ✅✅ 🚫✅ ✅✅ 🚫✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 ✅✅ ✅✅ 🚫🚫 ✅✅ ✅✅ ✅✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅
esbuild: ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅
rolldown: ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅
node: ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 ✅✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅
webpack: 🚫🚫 🚫🚫 ✅🚫 🚫🚫 🚫🚫 ✅🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅
parcel: ✅✅ ✅✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 🚫🚫 🚫🚫 ✅✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅ 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅
rollup: 🚫🚫 🚫🚫 ✅✅ 🚫✅ ✅✅ ✅✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ ✅✅ 🚫🚫 ✅✅ ✅✅ 🚫🚫 ✅✅ ✅✅ ✅✅ 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 🚫🚫 ✅✅
</pre>
4 changes: 2 additions & 2 deletions node-test-loader.mjs
Original file line number Diff line number Diff line change
@@ -21,9 +21,9 @@ export async function load(url, _context, _defaultLoad) {
globalThis.require = createRequire(url);
const source = readFileSync(fileURLToPath(url)).toString();
if (cjsModuleRegEx.test(source)) {
return { format: 'commonjs', source };
return { format: 'commonjs', source, shortCircuit: true };
}
else {
return { format: 'module', source };
return { format: 'module', source, shortCircuit: true };
}
}
18 changes: 10 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
{
"dependencies": {
"@parcel/config-default": "2.3.2",
"@parcel/core": "2.3.2",
"@rollup/plugin-commonjs": "21.0.2",
"@rollup/plugin-node-resolve": "13.1.3",
"esbuild": "0.14.27",
"rollup": "2.70.1",
"webpack": "5.70.0"
}
"@parcel/config-default": "2.12.0",
"@parcel/core": "2.12.0",
"@rollup/plugin-commonjs": "28.0.1",
"@rollup/plugin-node-resolve": "15.3.0",
"esbuild": "0.24.0",
"rolldown": "0.14.0-snapshot-bf06e41-20241122003530",
"rollup": "4.25.0",
"webpack": "5.96.1"
},
"packageManager": "yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72"
}
26 changes: 26 additions & 0 deletions tests.js
Original file line number Diff line number Diff line change
@@ -283,6 +283,7 @@ const webpack = require('webpack')
const esbuild = require('esbuild')
const parcel = require('@parcel/core')
const rollup = require('rollup')
const rolldown = require('rolldown')
const child_process = require('child_process')
const pluginNodeResolve = require('@rollup/plugin-node-resolve')
const pluginCommonJS = require('@rollup/plugin-commonjs')
@@ -291,6 +292,8 @@ const bundlers = {
async webpack({ entryFile, inDir, outDir }) {
let err = await new Promise(resolve => webpack({
entry: path.join(inDir, entryFile),
mode: 'development',
devtool: false,
output: {
path: outDir,
filename: entryFile,
@@ -335,6 +338,29 @@ const bundlers = {
}
return err
},
async rolldown({ entryFile, inDir, outDir }) {
let err
try {
const outfile = path.join(outDir, entryFile)
const build = await rolldown.rolldown({
input: path.join(inDir, entryFile),
});
await build.write({
file: outfile,
format: 'iife',
name: 'name',
inlineDynamicImports: true,
})

const input = {}
new Function('input', fs.readFileSync(outfile, 'utf8'))(input)
if (!await input.works) throw new Error('Test did not pass')
} catch (e) {
if (e && e.errors && e.errors[0]) e = new Error(e.errors[0].text)
err = e
}
return err
},

async parcel({ entryFile, inDir, outDir }) {
let err
2,463 changes: 2,463 additions & 0 deletions yarn.lock

Large diffs are not rendered by default.