From 9a68ebbaeac54caef5bba4860d1d9e7eefca878c Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Tue, 10 Jan 2023 13:03:06 +0200 Subject: [PATCH] fix: frozen lockfile with lockfile v6 --- .changeset/large-turtles-stare.md | 6 ++++++ lockfile/lockfile-file/src/write.ts | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 .changeset/large-turtles-stare.md diff --git a/.changeset/large-turtles-stare.md b/.changeset/large-turtles-stare.md new file mode 100644 index 0000000000..40f5a48dd4 --- /dev/null +++ b/.changeset/large-turtles-stare.md @@ -0,0 +1,6 @@ +--- +"@pnpm/lockfile-file": patch +"pnpm": patch +--- + +Fix lockfile v6. diff --git a/lockfile/lockfile-file/src/write.ts b/lockfile/lockfile-file/src/write.ts index 6987356dd4..9b1e145e1f 100644 --- a/lockfile/lockfile-file/src/write.ts +++ b/lockfile/lockfile-file/src/write.ts @@ -71,13 +71,14 @@ async function writeLockfile ( return rimraf(lockfilePath) } - const lockfileToStringify = (Boolean(opts?.useInlineSpecifiersFormat) || wantedLockfile['lockfileVersion'].toString().startsWith('6.')) + const isLockfileV6 = wantedLockfile['lockfileVersion'].toString().startsWith('6.') + const lockfileToStringify = (Boolean(opts?.useInlineSpecifiersFormat) || isLockfileV6) ? convertToInlineSpecifiersFormat(wantedLockfile) as unknown as Lockfile : wantedLockfile const yamlDoc = yamlStringify(lockfileToStringify, { forceSharedFormat: opts?.forceSharedFormat === true, - includeEmptySpecifiersField: !opts?.useInlineSpecifiersFormat, + includeEmptySpecifiersField: !opts?.useInlineSpecifiersFormat && !isLockfileV6, }) return writeFileAtomic(lockfilePath, yamlDoc) @@ -247,12 +248,13 @@ export async function writeLockfiles ( } const forceSharedFormat = opts?.forceSharedFormat === true - const wantedLockfileToStringify = (Boolean(opts.useInlineSpecifiersFormat) || opts.wantedLockfile.lockfileVersion.toString().startsWith('6.')) + const isLockfileV6 = opts.wantedLockfile.lockfileVersion.toString().startsWith('6.') + const wantedLockfileToStringify = (Boolean(opts.useInlineSpecifiersFormat) || isLockfileV6) ? convertToInlineSpecifiersFormat(opts.wantedLockfile) as unknown as Lockfile : opts.wantedLockfile const normalizeOpts = { forceSharedFormat, - includeEmptySpecifiersField: !opts.useInlineSpecifiersFormat, + includeEmptySpecifiersField: !opts.useInlineSpecifiersFormat && !isLockfileV6, } const yamlDoc = yamlStringify(wantedLockfileToStringify, normalizeOpts)