feishin/version/getVersion.mjs
2022-12-09 03:09:55 -08:00

25 lines
797 B
JavaScript

import {readFileSync} from 'node:fs';
import {resolve} from 'node:path';
/**
* Cache app version. Just to prevent multiple reading from fs
* @type {null|string}
*/
let CACHED_VERSION = null;
/**
* Entry function for get app version.
* By default, it returns `version` from `package.json`, but you can implement any logic here.
* Runs several times for each vite configs and electron-builder config.
* @param {string} [root=process.cwd()] Project root path. Needed for current implementation. Indicate where to find `package.json`
* @return {string}
*/
export function getVersion(root = process.cwd()) {
if (CACHED_VERSION === null) {
CACHED_VERSION = JSON.parse(
readFileSync(resolve(root, 'package.json'), {encoding: 'utf8'}),
).version;
}
return CACHED_VERSION;
}