From 2b71df06bf71910f5a9fa9ce34d0d0ef713ecee5 Mon Sep 17 00:00:00 2001 From: Gorgi Kosev Date: Sat, 11 Jul 2020 15:27:59 +0100 Subject: [PATCH] Fix issue with long asset names generated from pnpm paths --- packages/haul-core/src/webpack/loaders/assetLoader.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/haul-core/src/webpack/loaders/assetLoader.ts b/packages/haul-core/src/webpack/loaders/assetLoader.ts index 9c58aebc..0a09eb38 100644 --- a/packages/haul-core/src/webpack/loaders/assetLoader.ts +++ b/packages/haul-core/src/webpack/loaders/assetLoader.ts @@ -15,6 +15,9 @@ type Config = { publicPath?: string | ((path: string) => string); }; +const MAX_FILENAME_LENGTH = 120; +let longNameAssetCount = 1; + async function assetLoader(this: any) { this.cacheable(); @@ -47,10 +50,16 @@ async function assetLoader(this: any) { const assets = path.join('assets', config.bundle ? '' : config.platform); const suffix = `(@\\d+(\\.\\d+)?x)?(\\.(${config.platform}|native))?\\.${type}$`; const filename = path.basename(filePath).replace(new RegExp(suffix), ''); - const normalizedName = + let normalizedName = url.length === 0 ? filename : `${url.replace(pathSepPattern, '_')}_${filename}`; + if (normalizedName.length > MAX_FILENAME_LENGTH) { + normalizedName = + normalizedName.substring(normalizedName.length - MAX_FILENAME_LENGTH) + + '_' + + (longNameAssetCount++).toString(); + } const longName = `${normalizedName .toLowerCase() .replace(/[^a-z0-9_]/g, '')}.${type}`;