feat(lockfile.fs): export writeLockfileFile and convertToLockfileFile (#8735)

This commit is contained in:
Zoltan Kochan
2024-11-05 18:55:27 +01:00
committed by GitHub
parent d444b93214
commit 34cb316af6
4 changed files with 17 additions and 6 deletions

View File

@@ -0,0 +1,5 @@
---
"@pnpm/lockfile.fs": minor
---
Export `writeLockfileFile` and `convertToLockfileFile`.

View File

@@ -3,9 +3,11 @@ export {
writeLockfiles,
writeCurrentLockfile,
writeWantedLockfile,
writeLockfileFile,
} from './write'
export { existsNonEmptyWantedLockfile } from './existsWantedLockfile'
export { getLockfileImporterId } from './getLockfileImporterId'
export * from '@pnpm/lockfile.types'
export * from './read'
export { cleanGitBranchLockfiles } from './gitBranchLockfile'
export { convertToLockfileFile } from './lockfileFormatConverters'

View File

@@ -26,7 +26,7 @@ export interface NormalizeLockfileOpts {
forceSharedFormat: boolean
}
export function convertToLockfileFile (lockfile: Lockfile, opts: NormalizeLockfileOpts): LockfileFile {
export function convertToLockfileFile (lockfile: Lockfile, opts: NormalizeLockfileOpts): LockfileFileV9 {
const packages: Record<string, PackageInfo> = {}
const snapshots: Record<string, PackageSnapshotV7> = {}
for (const [depPath, pkg] of Object.entries(lockfile.packages ?? {})) {
@@ -55,7 +55,7 @@ export function convertToLockfileFile (lockfile: Lockfile, opts: NormalizeLockfi
], pkg)
}
}
const newLockfile = {
const newLockfile: LockfileFileV9 = {
...lockfile,
snapshots,
packages,
@@ -65,7 +65,7 @@ export function convertToLockfileFile (lockfile: Lockfile, opts: NormalizeLockfi
if (newLockfile.settings?.peersSuffixMaxLength === 1000) {
newLockfile.settings = omit(['peersSuffixMaxLength'], newLockfile.settings)
}
return normalizeLockfile(newLockfile, opts)
return normalizeLockfile(newLockfile, opts) as LockfileFileV9
}
function normalizeLockfile (lockfile: InlineSpecifiersLockfile, opts: NormalizeLockfileOpts): LockfileFile {

View File

@@ -58,13 +58,17 @@ async function writeLockfile (
wantedLockfile: Lockfile
): Promise<void> {
const lockfilePath = path.join(pkgPath, lockfileFilename)
const lockfileToStringify = convertToLockfileFile(wantedLockfile, {
forceSharedFormat: true,
})
return writeLockfileFile(lockfilePath, lockfileToStringify)
}
const yamlDoc = yamlStringify(lockfileToStringify)
export function writeLockfileFile (
lockfilePath: string,
wantedLockfile: LockfileFileV9
): Promise<void> {
const yamlDoc = yamlStringify(wantedLockfile)
return writeFileAtomic(lockfilePath, yamlDoc)
}