/
readProjectManifest.ts
48 lines (45 loc) · 1.71 KB
/
readProjectManifest.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import * as utils from '@pnpm/read-project-manifest'
import { type ProjectManifest } from '@pnpm/types'
import { packageIsInstallable } from './packageIsInstallable'
export async function readProjectManifest (
projectDir: string,
opts: {
engineStrict?: boolean
nodeVersion?: string
}
): Promise<{
fileName: string
manifest: ProjectManifest
writeProjectManifest: (manifest: ProjectManifest, force?: boolean) => Promise<void>
}> {
const { fileName, manifest, writeProjectManifest } = await utils.readProjectManifest(projectDir)
packageIsInstallable(projectDir, manifest as any, opts) // eslint-disable-line @typescript-eslint/no-explicit-any
return { fileName, manifest, writeProjectManifest }
}
export async function readProjectManifestOnly (
projectDir: string,
opts: {
engineStrict?: boolean
nodeVersion?: string
} = {}
): Promise<ProjectManifest> {
const manifest = await utils.readProjectManifestOnly(projectDir)
packageIsInstallable(projectDir, manifest as any, opts) // eslint-disable-line @typescript-eslint/no-explicit-any
return manifest
}
export async function tryReadProjectManifest (
projectDir: string,
opts: {
engineStrict?: boolean
nodeVersion?: string
}
): Promise<{
fileName: string
manifest: ProjectManifest | null
writeProjectManifest: (manifest: ProjectManifest, force?: boolean) => Promise<void>
}> {
const { fileName, manifest, writeProjectManifest } = await utils.tryReadProjectManifest(projectDir)
if (manifest == null) return { fileName, manifest, writeProjectManifest }
packageIsInstallable(projectDir, manifest as any, opts) // eslint-disable-line @typescript-eslint/no-explicit-any
return { fileName, manifest, writeProjectManifest }
}