Files
ai-code-app/etc/servers/work-server/scripts/write-build-info.mjs

44 lines
1.4 KiB
JavaScript

import fs from 'node:fs/promises';
import path from 'node:path';
const projectRoot = process.cwd();
const packageJsonPath = path.join(projectRoot, 'package.json');
const configuredDistPath = process.env.WORK_SERVER_DIST_DIR?.trim() || 'dist';
const distDirectoryPath = path.resolve(projectRoot, configuredDistPath);
const buildInfoPath = path.join(distDirectoryPath, 'build-info.json');
const distNodeModulesPath = path.join(distDirectoryPath, 'node_modules');
const projectNodeModulesPath = path.join(projectRoot, 'node_modules');
const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
const builtAt = new Date().toISOString();
const buildInfo = {
version: typeof packageJson.version === 'string' ? packageJson.version : '0.0.0',
buildId: `${typeof packageJson.version === 'string' ? packageJson.version : '0.0.0'}@${builtAt}`,
builtAt,
};
await fs.mkdir(distDirectoryPath, { recursive: true });
await fs.writeFile(buildInfoPath, JSON.stringify(buildInfo, null, 2));
try {
const existingNodeModulesLink = await fs.lstat(distNodeModulesPath);
if (existingNodeModulesLink.isSymbolicLink()) {
await fs.unlink(distNodeModulesPath);
}
} catch (error) {
if (error?.code !== 'ENOENT') {
throw error;
}
}
try {
await fs.symlink(projectNodeModulesPath, distNodeModulesPath, 'dir');
} catch (error) {
if (error?.code !== 'EEXIST') {
throw error;
}
}
console.log(`work-server build info written to ${buildInfoPath}`);