mirror of
https://github.com/pnpm/pnpm.git
synced 2026-03-30 04:52:04 -04:00
feat: change the way directory names are shortened inside .pnpm
This commit is contained in:
5
.changeset/hot-kiwis-chew.md
Normal file
5
.changeset/hot-kiwis-chew.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@pnpm/dependency-path": major
|
||||
---
|
||||
|
||||
Change the way depPathToFilename is making paths shorter.
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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')
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user