42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
/**
|
|
* Extract package version information from package.json
|
|
*/
|
|
|
|
import { readFileSync } from 'node:fs';
|
|
|
|
const packageJson = JSON.parse(readFileSync('./package.json', 'utf-8'));
|
|
|
|
// Function to get the version of a specific package
|
|
function getPackageVersion(pkg: string) {
|
|
const version: string =
|
|
packageJson.dependencies[pkg] ||
|
|
packageJson.peerDependencies[pkg] ||
|
|
packageJson.devDependencies[pkg];
|
|
|
|
if (!version) {
|
|
throw new Error(`Package ${pkg} not found in package.json`);
|
|
}
|
|
|
|
// Strip any version prefix (e.g. "^", "~", "@")
|
|
const versionMatch = version.match(/(\d+\.\d+\.\d+)/);
|
|
if (!versionMatch) {
|
|
throw new Error(`Invalid version format for package ${pkg}: ${version}`);
|
|
}
|
|
|
|
return JSON.stringify(versionMatch[0]);
|
|
}
|
|
|
|
// Export InvenTree package information
|
|
export const INVENTREE_LIB_VERSION: string = JSON.stringify(
|
|
packageJson.version
|
|
);
|
|
|
|
// Export information about other core package versions
|
|
// This is because we need to ensure that the versions of these packages are compatible with plugins
|
|
export const __INVENTREE_VERSION_INFO__ = {
|
|
__INVENTREE_LIB_VERSION__: INVENTREE_LIB_VERSION,
|
|
__INVENTREE_REACT_VERSION__: getPackageVersion('react'),
|
|
__INVENTREE_REACT_DOM_VERSION__: getPackageVersion('react-dom'),
|
|
__INVENTREE_MANTINE_VERSION__: getPackageVersion('@mantine/core')
|
|
};
|