diff --git a/common/changes/@microsoft/rush/pnpm-virtual-store-dir-max-length-fix_2025-06-03-18-27.json b/common/changes/@microsoft/rush/pnpm-virtual-store-dir-max-length-fix_2025-06-03-18-27.json new file mode 100644 index 00000000000..d96367d6b83 --- /dev/null +++ b/common/changes/@microsoft/rush/pnpm-virtual-store-dir-max-length-fix_2025-06-03-18-27.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Add Linux/MacOS support for new 'virtual-store-dir-max-length'", + "type": "none" + } + ], + "packageName": "@microsoft/rush" +} \ No newline at end of file diff --git a/libraries/rush-lib/src/logic/pnpm/PnpmLinkManager.ts b/libraries/rush-lib/src/logic/pnpm/PnpmLinkManager.ts index a40604d4b60..a0b1466ee48 100644 --- a/libraries/rush-lib/src/logic/pnpm/PnpmLinkManager.ts +++ b/libraries/rush-lib/src/logic/pnpm/PnpmLinkManager.ts @@ -325,9 +325,13 @@ export class PnpmLinkManager extends BaseLinkManager { const { depPathToFilename } = await import('@pnpm/dependency-path'); // project@file+projects+presentation-integration-tests.tgz_jsdom@11.12.0 - // The second parameter is max length of virtual store dir, for v10 default is 60 https://pnpm.io/next/npmrc#virtual-store-dir-max-length + // The second parameter is max length of virtual store dir, + // for v10 default is 120 on Linux/MacOS and 60 on Windows https://pnpm.io/next/settings#virtualstoredirmaxlength // TODO Read virtual-store-dir-max-length from .npmrc - const folderName: string = depPathToFilename(tempProjectDependencyKey, 60); + const folderName: string = depPathToFilename( + tempProjectDependencyKey, + process.platform === 'win32' ? 60 : 120 + ); return path.join( this._rushConfiguration.commonTempFolder, RushConstants.nodeModulesFolderName, @@ -339,7 +343,7 @@ export class PnpmLinkManager extends BaseLinkManager { const { depPathToFilename } = await import('@pnpm/dependency-path-lockfile-pre-v10'); // project@file+projects+presentation-integration-tests.tgz_jsdom@11.12.0 - // The second parameter is max length of virtual store dir, for v9 default is 120 https://pnpm.io/next/npmrc#virtual-store-dir-max-length + // The second parameter is max length of virtual store dir, for v9 default is 120 https://pnpm.io/9.x/npmrc#virtual-store-dir-max-length // TODO Read virtual-store-dir-max-length from .npmrc const folderName: string = depPathToFilename(tempProjectDependencyKey, 120); return path.join(