@onereach/get-version-data
Version:
CLI tool to get version data for deploy
34 lines (26 loc) • 1.01 kB
JavaScript
;
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));
}