mirror of
https://github.com/enso-org/enso.git
synced 2024-12-21 19:41:29 +03:00
9b7e3d0f16
- Closes #8179 # Important Notes - ⚠️ These tests are currently *not run* on any CI workflow. - There is some unused code for mocking the PM. This has been intentionally kept, as this may be useful in the future. Note that this may be useful for testing the dashboard, however the dashboard is currently only tested in cloud mode - that is, without the backend switcher, and with only the remote backend available. As such, currently it uses HTTP API mocks, and no PM mock.
57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
/** @file Esbuild config file. */
|
|
import * as path from 'node:path'
|
|
|
|
import type * as esbuild from 'esbuild'
|
|
import esbuildPluginYaml from 'esbuild-plugin-yaml'
|
|
|
|
import * as paths from './paths'
|
|
|
|
// ================
|
|
// === Bundling ===
|
|
// ================
|
|
|
|
/** Get the bundler options using the environment.
|
|
*
|
|
* The following environment variables are required:
|
|
* - `ENSO_BUILD_IDE` - output directory for bundled client files;
|
|
* - `ENSO_BUILD_PROJECT_MANAGER_IN_BUNDLE_PATH` - path to the project manager executable relative
|
|
* to the PM bundle root;
|
|
* - `ENSO_BUILD_IDE_BUNDLED_ENGINE_VERSION` - version of the Engine (backend) that is bundled
|
|
* along with this client build.
|
|
* @see bundlerOptions
|
|
*/
|
|
export function bundlerOptionsFromEnv(): esbuild.BuildOptions {
|
|
return bundlerOptions(
|
|
path.join(paths.getIdeDirectory(), 'client'),
|
|
paths.getProjectManagerInBundlePath(),
|
|
paths.getBundledEngineVersion()
|
|
)
|
|
}
|
|
|
|
/** Get options without relying on the environment. */
|
|
export function bundlerOptions(
|
|
outdir: string,
|
|
projectManagerInBundlePath: string,
|
|
bundledEngineVersion: string
|
|
): esbuild.BuildOptions {
|
|
return {
|
|
bundle: true,
|
|
outdir,
|
|
entryPoints: ['src/index.ts', 'src/preload.ts'],
|
|
outbase: 'src',
|
|
format: 'cjs',
|
|
platform: 'node',
|
|
plugins: [esbuildPluginYaml.yamlPlugin({})],
|
|
// The names come from a third-party API and cannot be changed.
|
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
outExtension: { '.js': '.cjs' },
|
|
define: {
|
|
BUNDLED_ENGINE_VERSION: JSON.stringify(bundledEngineVersion),
|
|
PROJECT_MANAGER_IN_BUNDLE_PATH: JSON.stringify(projectManagerInBundlePath),
|
|
},
|
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
sourcemap: true,
|
|
external: ['electron'],
|
|
}
|
|
}
|