mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-28 02:53:15 -04:00
25 lines
953 B
TypeScript
25 lines
953 B
TypeScript
import { promises as fs } from 'fs'
|
|
import path from 'path'
|
|
|
|
export const CURRENT_NODE_DIRNAME = 'nodejs_current'
|
|
|
|
export async function getNodeExecPathAndTargetDir (pnpmHomeDir: string): Promise<{ nodePath: string, nodeLink?: string }> {
|
|
const nodePath = getNodeExecPathInBinDir(pnpmHomeDir)
|
|
const nodeCurrentDirLink = path.join(pnpmHomeDir, CURRENT_NODE_DIRNAME)
|
|
let nodeCurrentDir: string | undefined
|
|
try {
|
|
nodeCurrentDir = await fs.readlink(nodeCurrentDirLink)
|
|
} catch (err) {
|
|
nodeCurrentDir = undefined
|
|
}
|
|
return { nodePath, nodeLink: nodeCurrentDir ? getNodeExecPathInNodeDir(nodeCurrentDir) : undefined }
|
|
}
|
|
|
|
export function getNodeExecPathInBinDir (pnpmHomeDir: string): string {
|
|
return path.resolve(pnpmHomeDir, process.platform === 'win32' ? 'node.exe' : 'node')
|
|
}
|
|
|
|
export function getNodeExecPathInNodeDir (nodeDir: string): string {
|
|
return path.join(nodeDir, process.platform === 'win32' ? 'node.exe' : 'bin/node')
|
|
}
|