UNPKG

@onereach/get-version-data

Version:
34 lines (26 loc) 1.01 kB
'use strict'; const {resolve, dirname} = require('path'); const {readYaml, readJson, checkFileExists} = require('./utils'); module.exports = async function parsePnpmLock ({lockFile, subDir}, {devDeps}) { const lockData = await readYaml(lockFile); const pkgData = lockData.importers?.[subDir || '.']; const deps = { ...pkgData?.dependencies, ...devDeps ? pkgData?.devDependencies : null, } if (!deps) return {}; const tasks = Object.entries(deps) .map(async ([name, info]) => { if (info.version.startsWith('link:')) { const link = info.version.split(':')[1]; const linkPkg = resolve(resolve(dirname(lockFile), subDir), link, 'package.json'); if (await checkFileExists(linkPkg)) { const linkPkgData = await readJson(linkPkg); return [name, linkPkgData.version]; } return [name, info.version]; } return [name, info.version.split('(')[0]] }) return Object.fromEntries(await Promise.all(tasks)); }