diff --git a/packages/cli/src/CLIHelper.ts b/packages/cli/src/CLIHelper.ts index 40e10680a5b9..f70c1ebab5b0 100644 --- a/packages/cli/src/CLIHelper.ts +++ b/packages/cli/src/CLIHelper.ts @@ -44,7 +44,7 @@ export class CLIHelper { // noinspection HtmlDeprecatedTag return yargs .scriptName('mikro-orm') - .version(CLIHelper.getORMVersion()) + .version(Utils.getORMVersion()) .usage('Usage: $0 [options]') .example('$0 schema:update --run', 'Runs schema synchronization') .alias('v', 'version') @@ -66,17 +66,6 @@ export class CLIHelper { .strict(); } - static getORMVersion(): string { - /* istanbul ignore next */ - try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - return require('../package.json').version; - } catch { - // eslint-disable-next-line @typescript-eslint/no-var-requires - return require('./package.json').version; - } - } - static getNodeVersion(): string { return process.versions.node; } @@ -105,7 +94,7 @@ export class CLIHelper { static async dumpDependencies() { CLIHelper.dump(' - dependencies:'); - CLIHelper.dump(` - mikro-orm ${c.green(CLIHelper.getORMVersion())}`); + CLIHelper.dump(` - mikro-orm ${c.green(Utils.getORMVersion())}`); CLIHelper.dump(` - node ${c.green(CLIHelper.getNodeVersion())}`); if (await pathExists(process.cwd() + '/package.json')) { diff --git a/packages/core/src/cache/FileCacheAdapter.ts b/packages/core/src/cache/FileCacheAdapter.ts index 6f2f3d4aa3bb..697e4d2f7f01 100644 --- a/packages/core/src/cache/FileCacheAdapter.ts +++ b/packages/core/src/cache/FileCacheAdapter.ts @@ -6,6 +6,9 @@ import { Utils } from '../utils'; export class FileCacheAdapter implements CacheAdapter { + // eslint-disable-next-line @typescript-eslint/no-var-requires + private readonly VERSION = Utils.getORMVersion(); + constructor(private readonly options: { cacheDir: string }, private readonly baseDir: string, private readonly pretty = false) { } @@ -40,7 +43,7 @@ export class FileCacheAdapter implements CacheAdapter { ]); const opts = this.pretty ? { spaces: 2 } : {}; - await writeJSON(path!, { data, origin, hash }, opts); + await writeJSON(path!, { data, origin, hash, version: this.VERSION }, opts); } /** @@ -66,7 +69,7 @@ export class FileCacheAdapter implements CacheAdapter { const contents = await readFile(origin); - return Utils.hash(contents.toString()); + return Utils.hash(contents.toString() + this.VERSION); } } diff --git a/packages/core/src/utils/Utils.ts b/packages/core/src/utils/Utils.ts index eb70f67357e9..1bfa48c7cfe0 100644 --- a/packages/core/src/utils/Utils.ts +++ b/packages/core/src/utils/Utils.ts @@ -618,4 +618,17 @@ export class Utils { return (createRequire || createRequireFromPath)(resolve(from))(id); } + static getORMVersion(): string { + /* istanbul ignore next */ + try { + // this works with ts-node during development (where we have `src` folder) + // eslint-disable-next-line @typescript-eslint/no-var-requires + return require('../../package.json').version; + } catch { + // this works with node in production build (where we do not have the `src` folder) + // eslint-disable-next-line @typescript-eslint/no-var-requires + return require('../package.json').version; + } + } + }