12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/usr/bin/env node
- /* eslint-disable @typescript-eslint/no-var-requires */
- const esbuild = require('esbuild');
- const { spawn } = require('child_process');
- const pkg = require('./package.json');
- const isDev = process.argv[2] !== 'build';
- process.env.NODE_ENV = isDev ? 'development' : 'production';
- let server;
- const onRebuild = () => {
- if (isDev) {
- if (server) server.kill('SIGINT');
- server = spawn('node', ['dist/index.js'], { stdio: [0, 1, 2] });
- } else {
- spawn('pnpm', ['next', 'build'], { stdio: [0, 1, 2] });
- }
- };
- const included = ['express', 'pg', '@runtipi/postgres-migrations', 'connect-redis', 'express-session', 'drizzle-orm', '@runtipi/shared'];
- const excluded = ['pg-native', '*required-server-files.json'];
- const external = Object.keys(pkg.dependencies || {}).filter((dep) => !included.includes(dep));
- external.push(...excluded);
- esbuild
- .build({
- entryPoints: ['src/server/index.ts'],
- external,
- define: { 'process.env.NODE_ENV': `"${process.env.NODE_ENV}"` },
- platform: 'node',
- target: 'node18',
- outfile: 'dist/index.js',
- tsconfig: 'tsconfig.json',
- bundle: true,
- minify: true,
- sourcemap: isDev,
- watch: false,
- })
- .finally(onRebuild);
|