feat: change the way directory names are shortened inside .pnpm

This commit is contained in:
Zoltan Kochan
2023-02-10 16:30:00 +02:00
parent 54346d6e2c
commit ca8f51e60b
3 changed files with 9 additions and 2 deletions

View File

@@ -0,0 +1,5 @@
---
"@pnpm/dependency-path": major
---
Change the way depPathToFilename is making paths shorter.

View File

@@ -146,6 +146,8 @@ export function parse (dependencyPath: string) {
}
}
const MAX_LENGTH_WITHOUT_HASH = 120 - 26 - 1
export function depPathToFilename (depPath: string) {
let filename = depPathToFilenameUnescaped(depPath).replace(/[\\/:*?"<>|]/g, '+')
if (filename.includes('(')) {
@@ -154,7 +156,7 @@ export function depPathToFilename (depPath: string) {
.replace(/\)$/, '')
}
if (filename.length > 120 || filename !== filename.toLowerCase() && !filename.startsWith('file+')) {
return `${filename.substring(0, 50)}_${createBase32Hash(filename)}`
return `${filename.substring(0, MAX_LENGTH_WITHOUT_HASH)}_${createBase32Hash(filename)}`
}
return filename
}

View File

@@ -165,7 +165,7 @@ test('depPathToFilename()', () => {
expect(filename).toBe('file+test+foo-1.0.0.tgz_foo@2.0.0')
expect(filename).not.toContain(':')
expect(depPathToFilename('abcd/'.repeat(200))).toBe('abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+_e5jega7r3xmarw3h6f277a3any')
expect(depPathToFilename('abcd/'.repeat(200))).toBe('abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abcd+abc_e5jega7r3xmarw3h6f277a3any')
expect(depPathToFilename('/JSONSteam/1.0.0')).toBe('JSONSteam@1.0.0_jmswpk4sf667aelr6wp2xd3p54')
})