mirror of
https://github.com/zumbiepig/MineXLauncher.git
synced 2025-06-26 10:05:10 +00:00
build process stuff
This commit is contained in:
48
build.ts
48
build.ts
@@ -1,20 +1,52 @@
|
||||
import { $, build } from 'bun';
|
||||
import { readdirSync, statSync, writeFileSync } from 'fs';
|
||||
import { join } from 'path';
|
||||
import chalk from 'chalk';
|
||||
|
||||
const directoryPath = join(import.meta.dir, 'public');
|
||||
|
||||
function getFiles(directory: string, filesArr?: string[]) {
|
||||
function getFiles(baseDir: string, dir?: string, filesArr?: string[]) {
|
||||
dir = dir || baseDir;
|
||||
filesArr = filesArr || [];
|
||||
const files = readdirSync(directory);
|
||||
const files = readdirSync(dir);
|
||||
for (const file of files) {
|
||||
const name = join(directory, file);
|
||||
const name = join(dir, file);
|
||||
if (statSync(name).isDirectory()) {
|
||||
getFiles(name, filesArr);
|
||||
getFiles(baseDir, name, filesArr);
|
||||
} else {
|
||||
filesArr.push(name.replace(new RegExp(`^${directoryPath}`), '').replace(/\/index\.html$/, '/'));
|
||||
filesArr.push(name);
|
||||
}
|
||||
}
|
||||
return filesArr;
|
||||
}
|
||||
|
||||
writeFileSync(join(directoryPath, 'assets.json'), JSON.stringify(getFiles(directoryPath)));
|
||||
console.log(chalk.cyan('Linting code...\n'));
|
||||
const lintOutput = await $`bunx eslint ./src/`.nothrow().text();
|
||||
if (lintOutput) {
|
||||
console.error(lintOutput);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(chalk.cyan('Removing old build artifacts...\n'));
|
||||
await $`rm -rf ./public/resources/scripts/ ./public/assets.json ./public/sw.js ./public/sw-full.js`.quiet();
|
||||
|
||||
console.log(chalk.cyan('Bundling TypeScript and modules...\n'));
|
||||
const srcFilesArr = getFiles(join(import.meta.dir, 'src'));
|
||||
await build({
|
||||
entrypoints: srcFilesArr,
|
||||
outdir: './public/',
|
||||
root: './src/',
|
||||
minify: true,
|
||||
});
|
||||
|
||||
console.log(chalk.cyan('Obfuscating JavaScript...\n'));
|
||||
await $`bunx javascript-obfuscator ./public/resources/scripts/ --output ./public/resources/scripts/ --options-preset high-obfuscation`.quiet();
|
||||
|
||||
console.log(chalk.cyan('Generating assets list...\n'));
|
||||
const publicDir = join(import.meta.dir, 'public');
|
||||
writeFileSync(
|
||||
join(publicDir, 'assets.json'),
|
||||
JSON.stringify(getFiles(publicDir))
|
||||
.replace(new RegExp(`^${publicDir}`), '')
|
||||
.replace(/\/index\.html$/, '/')
|
||||
);
|
||||
|
||||
console.log(chalk.green('Build complete!\n'));
|
||||
|
||||
Reference in New Issue
Block a user