storybook/code/lib/telemetry/src/package-json.ts
2022-11-02 22:12:48 +11:00

27 lines
821 B
TypeScript

import path from 'path';
import type { Dependency } from './types';
export const getActualPackageVersions = async (packages: Record<string, Partial<Dependency>>) => {
const packageNames = Object.keys(packages);
return Promise.all(packageNames.map(getActualPackageVersion));
};
export const getActualPackageVersion = async (packageName: string) => {
try {
const packageJson = await getActualPackageJson(packageName);
return {
name: packageName,
version: packageJson.version,
};
} catch (err) {
return { name: packageName, version: null };
}
};
export const getActualPackageJson = async (packageName: string) => {
// eslint-disable-next-line import/no-dynamic-require,global-require
const packageJson = require(path.join(packageName, 'package.json'));
return packageJson;
};