From a8e275b580b5faa250ddbf749caffeecd628cf6b Mon Sep 17 00:00:00 2001 From: Ewout Stortenbeker Date: Mon, 2 Jan 2023 22:24:08 +0100 Subject: [PATCH] Fix: meta info issue (#67) Set server version at npm prepack event --- build-vars.js | 11 +++++++++++ package.json | 3 ++- src/routes/meta-info.ts | 6 ++---- 3 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 build-vars.js diff --git a/build-vars.js b/build-vars.js new file mode 100644 index 0000000..07d0332 --- /dev/null +++ b/build-vars.js @@ -0,0 +1,11 @@ +// Executed by npm "prepack" script +const { readFileSync, writeFileSync } = require('fs'); +const packageInfo = require('./package.json'); + +const files = ['./dist/cjs/routes/meta-info.js', './dist/esm/routes/meta-info.js']; +files.forEach(file => { + let content = readFileSync(file, 'utf8'); + content = content.replace(/%SERVER_VERSION%/g, packageInfo.version); + writeFileSync(file, content, 'utf8'); + console.log(`Replaced variable %SERVER_VERSION% with ${packageInfo.version} in ${file}`); +}); diff --git a/package.json b/package.json index bcf746a..d7b51f6 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "build:esm": "tsc -p tsconfig.json && npx tsc-esm-fix ---target='dist/esm'", "build:cjs": "tsc -p tsconfig-cjs.json", "build:packages": "bash ./create-package-files", - "npmfix": "echo 'Regenerating package-lock.json...' && npm i --package-lock-only" + "build:vars": "node ./build-vars.js", + "prepack": "npm run build:vars" }, "keywords": [ "database", diff --git a/src/routes/meta-info.ts b/src/routes/meta-info.ts index 0908388..a8c856e 100644 --- a/src/routes/meta-info.ts +++ b/src/routes/meta-info.ts @@ -1,8 +1,6 @@ import { RouteInitEnvironment, RouteRequest } from '../shared/env'; import * as os from 'os'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore path to package.json is different in builds -import meta from '../../../package.json' assert { type: 'json' }; +const SERVER_VERSION = '%SERVER_VERSION%'; // Loaded from package.json by npm scripts export type RequestQuery = null; export type RequestBody = null; @@ -18,7 +16,7 @@ export const addRoute = (env: RouteInitEnvironment) => { env.app.get(`/info/${env.db.name}`, (req: Request, res) => { const info = { - version: meta.version, // Loaded from package.json + version: SERVER_VERSION, time: Date.now(), process: process.pid, };