44 lines
1.4 KiB
JavaScript
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}`);
|