From 439591ad5ffc716b31b7113cbbf177ab3ef7521d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sun, 1 Sep 2019 09:04:50 +0200 Subject: [PATCH] Add support for entryFileNames pattern used in combination with preserveModules option --- src/Chunk.ts | 26 ++++++++++++++++++-------- src/utils/assignChunkIds.ts | 2 +- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/Chunk.ts b/src/Chunk.ts index 7b80a01ffb0..ed864b92c8e 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -277,17 +277,27 @@ export default class Chunk { generateIdPreserveModules( preserveModulesRelativeDir: string, + options: OutputOptions, existingNames: Record ): string { const sanitizedId = sanitizeFileName(this.orderedModules[0].id); - return makeUnique( - normalize( - isAbsolute(this.orderedModules[0].id) - ? relative(preserveModulesRelativeDir, sanitizedId) - : '_virtual/' + basename(sanitizedId) - ), - existingNames - ); + + let path: string; + if (isAbsolute(this.orderedModules[0].id)) { + const name = renderNamePattern( + options.entryFileNames || '[name].js', + 'output.entryFileNames', + { + format: () => (options.format === 'es' ? 'esm' : (options.format as string)), + name: () => this.getChunkName() + } + ); + + path = relative(preserveModulesRelativeDir, `${dirname(sanitizedId)}/${name}`); + } else { + path = `_virtual/${basename(sanitizedId)}`; + } + return makeUnique(normalize(path), existingNames); } generateInternalExports(options: OutputOptions) { diff --git a/src/utils/assignChunkIds.ts b/src/utils/assignChunkIds.ts index 5ed2d58faaa..ae479ae4684 100644 --- a/src/utils/assignChunkIds.ts +++ b/src/utils/assignChunkIds.ts @@ -27,7 +27,7 @@ export function assignChunkIds( if (outputOptions.file) { chunk.id = basename(outputOptions.file); } else if (inputOptions.preserveModules) { - chunk.id = chunk.generateIdPreserveModules(inputBase, bundle); + chunk.id = chunk.generateIdPreserveModules(inputBase, outputOptions, bundle); } else { chunk.id = chunk.generateId(addons, outputOptions, bundle, true); }