mirror of
https://github.com/chrisbenincasa/tunarr.git
synced 2026-04-18 09:03:35 -04:00
* This is a nightmare * Checkpointing.... getting closer * First cut - packaging the server in a docker container * Remove busted bundles * Minify build * Some common commands for building - we're going to look into proper monorepo solutions soon * Remove dependency on serve-static * Add web serving, full-stack docker target, and Nvidia container support * Remove test action graph for now
63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import esbuild from 'esbuild';
|
|
import fg from 'fast-glob';
|
|
import fs from 'node:fs';
|
|
import { rimraf } from 'rimraf';
|
|
import { nativeNodeModulesPlugin } from '../esbuild/native-node-module.js';
|
|
import { nodeProtocolPlugin } from '../esbuild/node-protocol.js';
|
|
|
|
if (fs.existsSync('build')) {
|
|
console.log('Deleting old build...');
|
|
await rimraf('build');
|
|
}
|
|
|
|
fs.mkdirSync('build');
|
|
|
|
console.log('Copying images...');
|
|
fs.cpSync('src/resources/images', 'build/resources/images', {
|
|
recursive: true,
|
|
});
|
|
|
|
console.log('Bundling app...');
|
|
await esbuild.build({
|
|
entryPoints: ['src/index.ts'],
|
|
bundle: true,
|
|
// minify: true,
|
|
// We can't make this mjs yet because mikro-orm breaks
|
|
// when using cached metadata w/ not js/ts suffixes:
|
|
// https://github.com/mikro-orm/mikro-orm/blob/e005cc22ef4e247f9741bdcaf1af012337977b7e/packages/core/src/cache/GeneratedCacheAdapter.ts#L16
|
|
outfile: 'build/bundle.js',
|
|
format: 'esm',
|
|
platform: 'node',
|
|
target: 'node18',
|
|
inject: ['cjs-shim.ts'],
|
|
packages: 'external',
|
|
tsconfig: './tsconfig.build.json',
|
|
logLevel: 'verbose',
|
|
// external: [
|
|
// 'mysql',
|
|
// 'mysql2',
|
|
// 'sqlite3',
|
|
// 'pg',
|
|
// 'tedious',
|
|
// 'pg-query-stream',
|
|
// 'oracledb',
|
|
// 'assert',
|
|
// ],
|
|
mainFields: ['module', 'main'],
|
|
plugins: [nativeNodeModulesPlugin(), nodeProtocolPlugin()],
|
|
});
|
|
|
|
console.log('Bundling DB migrations...');
|
|
await esbuild.build({
|
|
entryPoints: await fg('src/migrations/*'),
|
|
outdir: 'build/migrations',
|
|
bundle: false,
|
|
packages: 'external',
|
|
tsconfig: './tsconfig.build.json',
|
|
});
|
|
|
|
fs.cpSync(
|
|
'src/migrations/.snapshot-db.db.json',
|
|
'build/migrations/.snapshot-db.db.json',
|
|
);
|