eleventy-plugin-bundle icon indicating copy to clipboard operation
eleventy-plugin-bundle copied to clipboard

getBundle only works once in .11ty.js templates, then fails to replace

Open kfranqueiro opened this issue 3 months ago • 1 comments

I seem to have stumbled into some confusing behavior that I'm seeing when using getBundle and/or getBundleFileUrl specifically within a .11ty.js layout used by multiple templates.

I've created a repo to reproduce the issue: https://github.com/kfranqueiro/11ty-js-getbundle-bug

To better illustrate the issue, the repo begins in a working state. It has 3 templates (one HTML/Liquid, one JS, one Markdown) and 2 layouts (one HTML/Liquid, one JS).

In its initial state, all 3 templates are using the HTML layout, and npm run build produces the expected results: all 3 resulting pages have CSS both inlined and referenced via separate files properly.

Where things get interesting, is when you start switching those templates to use the JS layout...

  1. When you switch 1 over, everything is still fine
  2. When you switch 2 over (seemingly regardless of which 2 exactly), 1 out of 2 will be broken, with incorrect output still containing __EleventyBundle comments that should have been replaced
  3. When you switch all 3 over, 2 out of 3 will be broken as above

Somehow getBundle and getBundleFileUrl within the .11ty.js layout only ever work for one page?

(For what it's worth, this also happens if only using getBundle; I added getBundleFileUrl to the example later to see if it behaved the same)

  • Eleventy: 3.0.0-alpha.10 + eleventy-plugin-bundle 2.0.2
  • Node: 20.13.1
  • OS: Linux (Debian 12)

kfranqueiro avatar May 22 '24 04:05 kfranqueiro