Download scripts/build.mjs from Snapkitty/gitworld: direct link, hf CLI and curl.
- Browser
- Download file 1.86 kB
-
https://huggingface.co/Snapkitty/gitworld/resolve/main/scripts/build.mjs
- Command line
-
hf download hf://Snapkitty/gitworld/scripts/build.mjs
-
curl -L -o build.mjs https://huggingface.co/Snapkitty/gitworld/resolve/main/scripts/build.mjs
1.86 kB
| import { cp, mkdir, readFile, writeFile } from 'node:fs/promises'; | |
| import { dirname, join } from 'node:path'; | |
| import { fileURLToPath } from 'node:url'; | |
| const root = dirname(dirname(fileURLToPath(import.meta.url))); | |
| const dist = join(root, 'dist'); | |
| const referenceSource = join(root, 'phase2-unreal', 'ReferenceSource'); | |
| const publishedReferenceSource = join(dist, 'phase2-unreal', 'ReferenceSource'); | |
| await mkdir(dist, { recursive: true }); | |
| await cp(referenceSource, publishedReferenceSource, { recursive: true, force: true }); | |
| await copyIfChanged(join(root, 'styles.css'), join(dist, 'styles.css')); | |
| await copyIfChanged(join(root, 'src', 'main.ts'), join(dist, 'main.js')); | |
| for (const moduleName of ['shared.js', 'world-architect.js', 'ui-reality.js']) { | |
| await copyIfChanged(join(root, 'src', moduleName), join(dist, moduleName)); | |
| } | |
| const builtHtml = (await BunlessHtml(await import('node:fs/promises'))) | |
| .replace('./src/main.ts', './main.js'); | |
| await writeIfChanged(join(dist, 'index.html'), builtHtml); | |
| console.log(`GitWorld build ready: ${dist}`); | |
| async function copyIfChanged(source, destination) { | |
| if (await filesMatch(source, destination)) { | |
| return; | |
| } | |
| await cp(source, destination); | |
| } | |
| async function writeIfChanged(destination, contents) { | |
| try { | |
| if ((await readFile(destination, 'utf8')) === contents) { | |
| return; | |
| } | |
| } catch { | |
| // The destination does not exist yet. | |
| } | |
| await writeFile(destination, contents, 'utf8'); | |
| } | |
| async function filesMatch(left, right) { | |
| try { | |
| const [leftContents, rightContents] = await Promise.all([ | |
| readFile(left), | |
| readFile(right) | |
| ]); | |
| return leftContents.equals(rightContents); | |
| } catch { | |
| return false; | |
| } | |
| } | |
| async function BunlessHtml(fs) { | |
| return fs.readFile(join(root, 'index.html'), 'utf8'); | |
| } | |