mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-06 12:57:46 +00:00
<img width="219" alt="image" src="https://user-images.githubusercontent.com/229881/223744886-e4bf430d-078c-49c4-81c3-0c30dce08f2e.png">
94 lines
2.6 KiB
TypeScript
94 lines
2.6 KiB
TypeScript
import fs from 'fs/promises';
|
|
import { join, dirname } from 'path';
|
|
import { getExampleList } from '../examples/example-list';
|
|
import { mapOldToNew } from '../examples/map-old-to-new';
|
|
|
|
const repoRoot = join(__dirname, '..', '..', '..');
|
|
const pubDir = join(repoRoot, 'public');
|
|
|
|
async function main() {
|
|
console.log(`Building static frontend ${repoRoot}...`);
|
|
|
|
await fs.rm(pubDir, { recursive: true, force: true });
|
|
await fs.mkdir(pubDir);
|
|
|
|
await fs.cp(
|
|
join(repoRoot, 'packages', 'frameworks', 'logos'),
|
|
join(pubDir, 'framework-logos'),
|
|
{ recursive: true, force: true }
|
|
);
|
|
|
|
await fs.cp(
|
|
join(repoRoot, 'packages', 'fs-detectors', 'logos'),
|
|
join(pubDir, 'monorepo-logos'),
|
|
{ recursive: true, force: true }
|
|
);
|
|
|
|
const examples = await getExampleList();
|
|
const pathListAll = join(pubDir, 'list-all.json');
|
|
await fs.writeFile(pathListAll, JSON.stringify(examples));
|
|
|
|
const exampleDirs = await fs.readdir(join(repoRoot, 'examples'), {
|
|
withFileTypes: true,
|
|
});
|
|
|
|
const existingExamples = exampleDirs
|
|
.filter(
|
|
dir =>
|
|
dir.isDirectory() &&
|
|
dir.name !== 'node_modules' &&
|
|
dir.name !== '__tests__'
|
|
)
|
|
.map(dir => ({
|
|
name: dir.name,
|
|
visible: true,
|
|
suggestions: [],
|
|
}));
|
|
|
|
const oldExamples = Object.keys(mapOldToNew).map(key => ({
|
|
name: key,
|
|
visible: false,
|
|
suggestions: mapOldToNew[key],
|
|
}));
|
|
|
|
const pathList = join(pubDir, 'list.json');
|
|
await fs.writeFile(
|
|
pathList,
|
|
JSON.stringify([...existingExamples, ...oldExamples])
|
|
);
|
|
|
|
const tarballsDir = join(pubDir, 'tarballs');
|
|
const packagesDir = join(repoRoot, 'packages');
|
|
const packages = await fs.readdir(packagesDir);
|
|
for (const pkg of packages) {
|
|
const fullDir = join(packagesDir, pkg);
|
|
const packageJsonRaw = await fs.readFile(
|
|
join(fullDir, 'package.json'),
|
|
'utf-8'
|
|
);
|
|
const packageJson = JSON.parse(packageJsonRaw);
|
|
const files = await fs.readdir(fullDir);
|
|
const tarballName = files.find(f => /^vercel-.+\.tgz$/.test(f));
|
|
if (!tarballName) {
|
|
throw new Error(
|
|
`Expected vercel-*.tgz in ${fullDir} but found ${JSON.stringify(
|
|
files,
|
|
null,
|
|
2
|
|
)}`
|
|
);
|
|
}
|
|
const srcTarballPath = join(fullDir, tarballName);
|
|
const destTarballPath = join(tarballsDir, `${packageJson.name}.tgz`);
|
|
await fs.mkdir(dirname(destTarballPath), { recursive: true });
|
|
await fs.copyFile(srcTarballPath, destTarballPath);
|
|
}
|
|
|
|
console.log('Completed building static frontend.');
|
|
}
|
|
|
|
main().catch(err => {
|
|
console.log('error running build:', err);
|
|
process.exit(1);
|
|
});
|