mirror of
https://github.com/Kong/insomnia
synced 2024-11-08 06:39:48 +00:00
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
|
import esbuild from 'esbuild';
|
||
|
import { builtinModules } from 'module';
|
||
|
import path from 'path';
|
||
|
|
||
|
import pkg from './package.json';
|
||
|
|
||
|
interface Options {
|
||
|
mode?: 'development' | 'production';
|
||
|
}
|
||
|
|
||
|
export default async function build(options: Options) {
|
||
|
const mode = options.mode || 'production';
|
||
|
// The list of packages that will be included in the node_modules folder of the packaged app.
|
||
|
// Exclude all package.json dependencies except from the ones in the packedDependencies list
|
||
|
const unpackedDependencies = [
|
||
|
...Object.keys(pkg.dependencies).filter(
|
||
|
name => !pkg.packedDependencies.includes(name)
|
||
|
),
|
||
|
];
|
||
|
|
||
|
const __DEV__ = mode !== 'production';
|
||
|
const PORT = pkg.dev['dev-server-port'];
|
||
|
|
||
|
const outdir = __DEV__
|
||
|
? path.join(__dirname, 'app')
|
||
|
: path.join(__dirname, 'build');
|
||
|
|
||
|
const env: Record<string, string> = __DEV__
|
||
|
? {
|
||
|
'process.env.APP_RENDER_URL': JSON.stringify(
|
||
|
`http://localhost:${PORT}/index.html`
|
||
|
),
|
||
|
'process.env.NODE_ENV': JSON.stringify('development'),
|
||
|
'process.env.INSOMNIA_ENV': JSON.stringify('development'),
|
||
|
'process.env.BUILD_DATE': JSON.stringify(new Date()),
|
||
|
}
|
||
|
: {
|
||
|
'process.env.NODE_ENV': JSON.stringify('production'),
|
||
|
'process.env.INSOMNIA_ENV': JSON.stringify('production'),
|
||
|
'process.env.BUILD_DATE': JSON.stringify(new Date()),
|
||
|
};
|
||
|
|
||
|
return esbuild.build({
|
||
|
entryPoints: ['./app/main.development.ts'],
|
||
|
outfile: path.join(outdir, 'main.min.js'),
|
||
|
bundle: true,
|
||
|
platform: 'node',
|
||
|
sourcemap: true,
|
||
|
format: 'cjs',
|
||
|
define: env,
|
||
|
external: [
|
||
|
'electron',
|
||
|
'@getinsomnia/node-libcurl',
|
||
|
...Object.keys(unpackedDependencies),
|
||
|
...Object.keys(builtinModules),
|
||
|
],
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// Build if ran as a cli script
|
||
|
const isMain = require.main === module;
|
||
|
|
||
|
if (isMain) {
|
||
|
const mode =
|
||
|
process.env.NODE_ENV === 'development' ? 'development' : 'production';
|
||
|
build({ mode });
|
||
|
}
|