jsahlen


Passthrough copy and --incremental results in incorrect directory structure

Operating system

macOS Sonoma 14.4.1

Eleventy

2.0.1 and 3.0.0-alpha.10

Describe the bug

When using addPassthroughCopy() with a custom destination directory, files nested within the source directory will be copied correctly on the initial run of Eleventy in watch or serve mode, with the --incremental flag. But when one of those nested files are changed in the source directory, it is copied to the root destination directory, without preserving the directory structure.

Old, related issue: https://github.com/11ty/eleventy/issues/2297

Reproduction steps

Using the reproduction repo referenced below, when first starting the --watch or --serve command with the --incremental flag, files are copied as expected:

dist
├── index.html
└── scripts
    ├── lib
    │   └── hello-world.js
    └── main.js

However, if I modify src/scripts/lib/hello-world.js, it will be written straight to the destination directory, so it will look like this:

dist
├── index.html
└── scripts
    ├── hello-world.js
    ├── lib
    │   └── hello-world.js
    └── main.js

Expected behavior

I would expect modification of src/scripts/lib/hello-world.js to copy the file with its directory structure retained, to dist/scripts/lib/hello-world.js.

Reproduction URL

https://github.com/jsahlen/eleventy-passthrough-incremental

Screenshots

No response