diff --git a/scripts/build.ts b/scripts/build.ts index 095d6d3f..5fb3724c 100755 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -30,6 +30,7 @@ console.log(`Bundling src/index...`); await rolldownBuild(rootDir, "src/index.ts", "dist/index.mjs"); console.log(`Building src/runtime...`); +await generateNodeVersion(rootDir, "src/runtime/node/internal/process"); await transformDir(rootDir, "src/runtime", "dist/runtime"); console.log(`Build finished in ${Date.now() - start}ms`); @@ -206,3 +207,11 @@ function resolvePath(id: string, parent: string) { Error.captureStackTrace?.(error, resolvePath); throw error; } + +async function generateNodeVersion(rootDir: string, outPath: string) { + const m = (await readFile(join(rootDir, ".nvmrc"), "utf8")).match(/(?\d+\.\d+\.\d+)/); + if (!m?.groups?.version) { + throw new Error('.nvrmc does not contain a valid Node version'); + } + await writeFile(join(rootDir, outPath, 'node-version.ts'), `// Extracted from .nvmrc\nexport const NODE_VERSION = ${JSON.stringify(m.groups.version)};\n`, 'utf8'); +} \ No newline at end of file diff --git a/src/runtime/node/internal/process/node-version.ts b/src/runtime/node/internal/process/node-version.ts new file mode 100644 index 00000000..d14bbd1d --- /dev/null +++ b/src/runtime/node/internal/process/node-version.ts @@ -0,0 +1,2 @@ +// Extracted from .nvmrc +export const NODE_VERSION = "22.14.0"; diff --git a/src/runtime/node/internal/process/process.ts b/src/runtime/node/internal/process/process.ts index e24f7bb2..701a7bb2 100644 --- a/src/runtime/node/internal/process/process.ts +++ b/src/runtime/node/internal/process/process.ts @@ -4,6 +4,8 @@ import { notImplemented, createNotImplementedError, } from "../../../_internal/utils.ts"; +// node-version.ts is generated at build time +import { NODE_VERSION } from "./node-version.ts"; export class Process extends EventEmitter implements NodeJS.Process { env: NodeJS.ProcessEnv; @@ -92,11 +94,11 @@ export class Process extends EventEmitter implements NodeJS.Process { ppid: number = 100; get version() { - return ""; + return `v${NODE_VERSION}`; } get versions() { - return {} as NodeJS.Process["versions"]; + return { node: NODE_VERSION } as NodeJS.Process["versions"]; } get allowedNodeEnvironmentFlags() {