From 9f6077364f1f028c1ba2818ddd0fab88941885ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leosvel=20P=C3=A9rez=20Espinosa?= Date: Fri, 13 Jan 2023 19:51:10 +0100 Subject: [PATCH] fix(angular): fix assets copying in ng-packagr-lite executor (#14355) (cherry picked from commit 3e9f4bf99a3bb892cb4175cdc4087e7cfb795871) --- .../entry-point/write-package.transform.ts | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/packages/angular/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-package.transform.ts b/packages/angular/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-package.transform.ts index 2e7d9c61c3143..ec84b685bbce7 100644 --- a/packages/angular/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-package.transform.ts +++ b/packages/angular/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-package.transform.ts @@ -122,34 +122,31 @@ async function copyAssets( const assets: AssetEntry[] = []; - for (const item of ngPackage.assets) { - const asset: Partial = {}; - if (typeof item == 'object') { - asset.glob = item.glob; - asset.input = path.join(ngPackage.src, item.input); - asset.output = path.join(ngPackage.dest, item.output); - asset.ignore = item.ignore; + for (const assetPath of ngPackage.assets) { + let asset: AssetEntry; + if (typeof assetPath === 'object') { + asset = { ...assetPath }; } else { - const assetPath = item; // might be a glob - const assetFullPath = path.join(ngPackage.src, assetPath); - const [isDir, isFile] = await stat(assetFullPath) + const [isDir, isFile] = await stat(path.join(ngPackage.src, assetPath)) .then((stats) => [stats.isDirectory(), stats.isFile()]) .catch(() => [false, false]); if (isDir) { - asset.glob = '**/*'; - asset.input = assetFullPath; - asset.output = path.join(ngPackage.dest, assetPath); + asset = { glob: '**/*', input: assetPath, output: assetPath }; } else if (isFile) { - asset.glob = path.basename(assetFullPath); // filenames are their own glob - asset.input = path.dirname(assetFullPath); - asset.output = path.dirname(path.join(ngPackage.dest, assetPath)); + // filenames are their own glob + asset = { + glob: path.basename(assetPath), + input: path.dirname(assetPath), + output: path.dirname(assetPath), + }; } else { - asset.glob = assetPath; - asset.input = ngPackage.src; - asset.output = ngPackage.dest; + asset = { glob: assetPath, input: '/', output: '/' }; } } + asset.input = path.join(ngPackage.src, asset.input); + asset.output = path.join(ngPackage.dest, asset.output); + const isAncestorPath = (target: string, datum: string) => path.relative(datum, target).startsWith('..'); if (isAncestorPath(asset.input, ngPackage.src)) { @@ -163,7 +160,7 @@ async function copyAssets( ); } - assets.push(asset as AssetEntry); + assets.push(asset); } for (const asset of assets) {