-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
write-package-constants.mts
30 lines (24 loc) · 1017 Bytes
/
write-package-constants.mts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import fs from "node:fs/promises";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { PackageJson } from "type-fest";
import packageData from "./package.json";
const VERSION_CONSTANT_PATH = "./src/constants/version.mts";
const packageJson = packageData as PackageJson;
const packageName = packageJson.name;
const packageVersion = packageJson.version;
if (!packageName || !packageVersion) {
throw new Error(
`package.json must have a 'name' and 'version': ${JSON.stringify(packageJson, null, 2)}`
);
}
const scriptName = path.basename(fileURLToPath(import.meta.url));
const indexOfScopeSep = packageName.lastIndexOf("/");
const unscopedName = indexOfScopeSep > 0 ? packageName.substring(indexOfScopeSep + 1) : packageName;
const versionConstFile = `/**
* @file auto-generated from '${scriptName}'
*/
export const PACKAGE_UNSCOPED_NAME = "${unscopedName}";
export const PACKAGE_VERSION = "${packageVersion}";
`;
await fs.writeFile(VERSION_CONSTANT_PATH, versionConstFile);