addPassthroughCopy(fileOrDir, copyOptions = {}) {
		if (copyOptions.mode) {
			if (copyOptions.mode !== "html-relative") {
				throw new Error(
					"Invalid `mode` option for `addPassthroughCopy`. Received: '" + copyOptions.mode + "'",
				);
			}
			if (isPlainObject(fileOrDir)) {
				throw new Error(
					"mode: 'html-relative' does not yet support passthrough copy objects (input -> output mapping). Use a string glob or an Array of string globs.",
				);
			}

			this.passthroughCopiesHtmlRelative?.add({
				match: fileOrDir,
				...copyOptions,
			});
		} else if (typeof fileOrDir === "string") {
			this.passthroughCopies[fileOrDir] = { outputPath: true, copyOptions };
		} else {
			for (let [inputPath, outputPath] of Object.entries(fileOrDir)) {
				this.passthroughCopies[inputPath] = { outputPath, copyOptions };
			}
		}

		return this;
	}
Adds a path to a file or directory to the list of pass-through copies
which are copied as-is to the output.

@param {string|object} fileOrDir The path to the file or directory that should
be copied. OR an object where the key is the input glob and the property is the output directory
@param {object} copyOptions options for recursive-copy.
see https://www.npmjs.com/package/recursive-copy#arguments
default options are defined in TemplatePassthrough copyOptionsDefault
@returns {any} a reference to the `EleventyConfig` object.