@@ -31,34 +31,41 @@ export async function derivePackageManagerInPackageJson(
3131 return false ;
3232}
3333
34- export async function derivePackageManager (
35- currentDir = process . cwd ( ) ,
36- ) : Promise < PackageManagerId > {
34+ type DetectionResult = {
35+ id : PackageManagerId ;
36+ sourceDescription : string ;
37+ } ;
38+
39+ async function resolvePackageManager (
40+ currentDir : string ,
41+ ) : Promise < DetectionResult > {
3742 const pkgManagerFromPackageJson =
3843 await derivePackageManagerInPackageJson ( currentDir ) ;
3944 if ( pkgManagerFromPackageJson ) {
40- logDerivedPackageManager (
41- pkgManagerFromPackageJson ,
42- 'packageManager field in package.json' ,
43- ) ;
44- return pkgManagerFromPackageJson ;
45+ return {
46+ id : pkgManagerFromPackageJson ,
47+ sourceDescription : 'packageManager field in package.json' ,
48+ } ;
4549 }
4650
4751 // Check for lock files
4852 if ( await fileExists ( path . join ( currentDir , 'package-lock.json' ) ) ) {
49- logDerivedPackageManager ( 'npm' , 'existence of package-lock.json file' ) ;
50- return 'npm' ;
53+ return {
54+ id : 'npm' ,
55+ sourceDescription : 'existence of package-lock.json file' ,
56+ } ;
5157 } else if ( await fileExists ( path . join ( currentDir , 'pnpm-lock.yaml' ) ) ) {
52- logDerivedPackageManager ( 'pnpm' , 'existence of pnpm-lock.yaml file' ) ;
53- return 'pnpm' ;
58+ return {
59+ id : 'pnpm' ,
60+ sourceDescription : 'existence of pnpm-lock.yaml file' ,
61+ } ;
5462 } else if ( await fileExists ( path . join ( currentDir , 'yarn.lock' ) ) ) {
5563 const yarnVersion = await deriveYarnVersion ( ) ;
5664 if ( yarnVersion ) {
57- logDerivedPackageManager (
58- yarnVersion ,
59- 'existence of yarn.lock file and yarn -v command' ,
60- ) ;
61- return yarnVersion ;
65+ return {
66+ id : yarnVersion ,
67+ sourceDescription : 'existence of yarn.lock file and yarn -v command' ,
68+ } ;
6269 }
6370 }
6471
@@ -67,14 +74,22 @@ export async function derivePackageManager(
6774 ) ;
6875}
6976
70- function logDerivedPackageManager (
71- id : PackageManagerId ,
72- sourceDescription : string ,
73- ) : void {
77+ export async function detectPackageManager (
78+ currentDir = process . cwd ( ) ,
79+ ) : Promise < PackageManagerId > {
80+ const { id } = await resolvePackageManager ( currentDir ) ;
81+ return id ;
82+ }
83+
84+ export async function derivePackageManager (
85+ currentDir = process . cwd ( ) ,
86+ ) : Promise < PackageManagerId > {
87+ const { id, sourceDescription } = await resolvePackageManager ( currentDir ) ;
7488 const pm = packageManagers [ id ] ;
7589 logger . info (
7690 formatMetaLog (
7791 `Inferred ${ pm . name } package manager from ${ sourceDescription } ` ,
7892 ) ,
7993 ) ;
94+ return id ;
8095}
0 commit comments