Build for itch
This commit is contained in:
parent
ee38d7f53c
commit
043378cfbb
|
|
@ -0,0 +1,32 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
|
||||||
|
<title><!--$TITLE$--></title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*$STYLE$*/
|
||||||
|
</style>
|
||||||
|
<!--$ICON$-->
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!--$SCRIPT$-->
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
@ -9,9 +9,12 @@ import { isGame, getGames } from './isGame';
|
||||||
const outDir = path.resolve(import.meta.dir, '..', 'dist');
|
const outDir = path.resolve(import.meta.dir, '..', 'dist');
|
||||||
await fs.mkdir(outDir, { recursive: true });
|
await fs.mkdir(outDir, { recursive: true });
|
||||||
|
|
||||||
let game = process.argv[2];
|
|
||||||
const publish = process.env.PUBLISH_LOCATION;
|
const publish = process.env.PUBLISH_LOCATION;
|
||||||
|
|
||||||
|
const args = process.argv.slice(2);
|
||||||
|
const itch = args.includes('--itch');
|
||||||
|
let game = args.find(a => !a.startsWith('-')) ?? '';
|
||||||
|
|
||||||
while (!await isGame(game)) {
|
while (!await isGame(game)) {
|
||||||
game = await select({
|
game = await select({
|
||||||
message: 'Game to build:',
|
message: 'Game to build:',
|
||||||
|
|
@ -19,7 +22,7 @@ while (!await isGame(game)) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
console.log(`Building ${game}...`);
|
console.log(`Building ${game}...`);
|
||||||
const html = await buildHTML(game, { production: true });
|
const html = await buildHTML(game, { production: true, itch });
|
||||||
|
|
||||||
if (!html) {
|
if (!html) {
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
|
|
@ -27,7 +30,7 @@ if (!html) {
|
||||||
const filePath = path.resolve(outDir, `${game}.html`);
|
const filePath = path.resolve(outDir, `${game}.html`);
|
||||||
await Bun.write(filePath, html);
|
await Bun.write(filePath, html);
|
||||||
|
|
||||||
if (publish) {
|
if (publish && !itch) {
|
||||||
console.log(`Publishing ${game}...`);
|
console.log(`Publishing ${game}...`);
|
||||||
const result = await $`scp "${filePath}" "${publish}${game}.html"`;
|
const result = await $`scp "${filePath}" "${publish}${game}.html"`;
|
||||||
if (result.exitCode === 0) {
|
if (result.exitCode === 0) {
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,11 @@ import { getGames } from './isGame';
|
||||||
interface Args {
|
interface Args {
|
||||||
production?: boolean;
|
production?: boolean;
|
||||||
portable?: boolean;
|
portable?: boolean;
|
||||||
mobile?: boolean
|
mobile?: boolean;
|
||||||
|
itch?: boolean;
|
||||||
}
|
}
|
||||||
export async function buildHTML(game: string, { production = false, portable = false, mobile = false }: Args = {}) {
|
export async function buildHTML(game: string, { production = false, portable = false, mobile = false, itch = false }: Args = {}) {
|
||||||
const html = await Bun.file(path.resolve(import.meta.dir, 'assets', 'index.html')).text();
|
const html = await Bun.file(path.resolve(import.meta.dir, 'assets', itch ? 'index-itch.html' : 'index.html')).text();
|
||||||
const bundle = await Bun.build({
|
const bundle = await Bun.build({
|
||||||
outdir: '/tmp',
|
outdir: '/tmp',
|
||||||
entrypoints: [path.resolve(import.meta.dir, '..', 'src', 'index.ts')],
|
entrypoints: [path.resolve(import.meta.dir, '..', 'src', 'index.ts')],
|
||||||
|
|
@ -110,7 +111,7 @@ export async function buildHTML(game: string, { production = false, portable = f
|
||||||
.replace('<!--$TITLE$-->', () => title)
|
.replace('<!--$TITLE$-->', () => title)
|
||||||
.replace('<!--$ICON$-->', () => icon)
|
.replace('<!--$ICON$-->', () => icon)
|
||||||
.replace('<!--$MANIFEST$-->', () => manifest)
|
.replace('<!--$MANIFEST$-->', () => manifest)
|
||||||
.replace('/*$STYLE$*/', () => style);
|
.replace('/*$STYLE$*/', () => style);
|
||||||
|
|
||||||
return minify(resultHTML, {
|
return minify(resultHTML, {
|
||||||
collapseWhitespace: production,
|
collapseWhitespace: production,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue