From 1668bcbfda79a2b2442a87b4ad600039ce00ca34 Mon Sep 17 00:00:00 2001 From: "chao.guo" Date: Thu, 15 Feb 2024 13:47:24 -0800 Subject: [PATCH 1/3] refactor: readPnpmLockfile --- .../pnpm-sync-lib/etc/pnpm-sync-lib.api.md | 6 ++--- packages/pnpm-sync-lib/src/pnpmSyncPrepare.ts | 22 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/pnpm-sync-lib/etc/pnpm-sync-lib.api.md b/packages/pnpm-sync-lib/etc/pnpm-sync-lib.api.md index 1ea304b..f37923f 100644 --- a/packages/pnpm-sync-lib/etc/pnpm-sync-lib.api.md +++ b/packages/pnpm-sync-lib/etc/pnpm-sync-lib.api.md @@ -47,9 +47,9 @@ export interface IPnpmSyncPrepareOptions { // (undocumented) lockfilePath: string; // (undocumented) - readWantedLockfile: (lockfilePath: string, options: { + readPnpmLockfile: (lockfilePath: string, options: { ignoreIncompatible: boolean; - }) => Promise; + }) => Promise; // (undocumented) storePath: string; } @@ -63,6 +63,6 @@ export type IVersionSpecifier = string | { export function pnpmSyncCopyAsync({ pnpmSyncJsonPath, getPackageIncludedFiles, forEachAsyncWithConcurrency, ensureFolder, }: IPnpmSyncCopyOptions): Promise; // @beta -export function pnpmSyncPrepareAsync({ lockfilePath, storePath, readWantedLockfile, }: IPnpmSyncPrepareOptions): Promise; +export function pnpmSyncPrepareAsync({ lockfilePath, storePath, readPnpmLockfile, }: IPnpmSyncPrepareOptions): Promise; ``` diff --git a/packages/pnpm-sync-lib/src/pnpmSyncPrepare.ts b/packages/pnpm-sync-lib/src/pnpmSyncPrepare.ts index 26cff30..0c7e91a 100644 --- a/packages/pnpm-sync-lib/src/pnpmSyncPrepare.ts +++ b/packages/pnpm-sync-lib/src/pnpmSyncPrepare.ts @@ -10,11 +10,10 @@ import type { ILockfile, IPnpmSyncJson, IVersionSpecifier } from "./interfaces"; export interface IPnpmSyncPrepareOptions { lockfilePath: string; storePath: string; - readWantedLockfile: ( + readPnpmLockfile: ( lockfilePath: string, options: { ignoreIncompatible: boolean } - // eslint-disable-next-line @rushstack/no-new-null - ) => Promise; + ) => Promise; } /** @@ -31,7 +30,7 @@ export interface IPnpmSyncPrepareOptions { export async function pnpmSyncPrepareAsync({ lockfilePath, storePath, - readWantedLockfile, + readPnpmLockfile, }: IPnpmSyncPrepareOptions): Promise { console.log("Generate pnpm-sync.json ..."); @@ -49,11 +48,7 @@ export async function pnpmSyncPrepareAsync({ console.time(`pnpm-sync prepare`); // read the pnpm-lock.yaml - const pnpmLockFolder = lockfilePath.slice( - 0, - lockfilePath.length - "pnpm-lock.yaml".length - ); - const pnpmLockfile = await readWantedLockfile(pnpmLockFolder, { + const pnpmLockfile = await readPnpmLockfile(lockfilePath, { ignoreIncompatible: true, }); @@ -63,6 +58,12 @@ export async function pnpmSyncPrepareAsync({ Set > = getInjectedDependencyToVersion(pnpmLockfile); + // get pnpm-lock.yaml folder path + const pnpmLockFolder = lockfilePath.slice( + 0, + lockfilePath.length - "pnpm-lock.yaml".length + ); + // generate a map, where key is the actual path of the injectedDependency, value is all available paths in .pnpm folder const injectedDependencyToFilePathSet: Map> = new Map(); for (const [ @@ -177,8 +178,7 @@ function transferFilePathToPnpmStorePath( // process dependencies and devDependencies to generate injectedDependencyToFilePath function getInjectedDependencyToVersion( - // eslint-disable-next-line @rushstack/no-new-null - pnpmLockfile: ILockfile | null + pnpmLockfile: ILockfile | undefined ): Map> { const injectedDependencyToVersion: Map> = new Map(); for (const importerKey in pnpmLockfile?.importers) { From e8b8456a05acf6a3c03cc39e12bfd84801078282 Mon Sep 17 00:00:00 2001 From: "chao.guo" Date: Thu, 15 Feb 2024 13:48:13 -0800 Subject: [PATCH 2/3] chore: change the versions --- packages/pnpm-sync-lib/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pnpm-sync-lib/package.json b/packages/pnpm-sync-lib/package.json index aebade9..08cf83c 100644 --- a/packages/pnpm-sync-lib/package.json +++ b/packages/pnpm-sync-lib/package.json @@ -1,6 +1,6 @@ { "name": "pnpm-sync-lib", - "version": "0.1.2", + "version": "0.1.3", "description": "API library for integrating \"pnpm-sync\" with your toolchain", "repository": { "type": "git", From b4912a2dab18d7baf04e48259576ab548eef5807 Mon Sep 17 00:00:00 2001 From: "chao.guo" Date: Thu, 15 Feb 2024 14:05:50 -0800 Subject: [PATCH 3/3] fix: pnpm-sync cli --- packages/pnpm-sync/package.json | 2 +- packages/pnpm-sync/src/start.ts | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/pnpm-sync/package.json b/packages/pnpm-sync/package.json index 20a3e65..7b37f8f 100644 --- a/packages/pnpm-sync/package.json +++ b/packages/pnpm-sync/package.json @@ -1,6 +1,6 @@ { "name": "pnpm-sync", - "version": "0.1.2", + "version": "0.1.3", "description": "Recopy injected dependencies whenever a project is rebuilt in your PNPM workspace", "keywords": [ "rush", diff --git a/packages/pnpm-sync/src/start.ts b/packages/pnpm-sync/src/start.ts index 7008225..06f3a47 100644 --- a/packages/pnpm-sync/src/start.ts +++ b/packages/pnpm-sync/src/start.ts @@ -2,7 +2,7 @@ import { Command } from "commander"; import { pnpmSyncCopyAsync, pnpmSyncPrepareAsync } from "pnpm-sync-lib"; import { FileSystem, Async } from "@rushstack/node-core-library"; import { PackageExtractor } from "@rushstack/package-extractor"; -import { readWantedLockfile } from "@pnpm/lockfile-file"; +import { readWantedLockfile, Lockfile } from "@pnpm/lockfile-file"; const program: Command = new Command(); @@ -35,7 +35,23 @@ program await pnpmSyncPrepareAsync({ lockfilePath: lockfile, storePath: store, - readWantedLockfile, + readPnpmLockfile: async (lockfilePath: string, options: { + ignoreIncompatible: boolean + }) => { + + const pnpmLockFolder = lockfilePath.slice( + 0, + lockfilePath.length - "pnpm-lock.yaml".length + ); + + const lockfile: Lockfile | null = await readWantedLockfile(pnpmLockFolder, options); + + if(lockfile === null){ + return undefined; + } else { + return lockfile + } + }, }); } catch (error) { console.log(error);