mirror of
https://github.com/enso-org/enso.git
synced 2024-12-23 02:01:47 +03:00
0e20644e47
- Closes https://github.com/enso-org/cloud-v2/issues/478 - Download local project as `.enso-project` archive - Requires latest nightly version of Project Manager - Closes https://github.com/enso-org/cloud-v2/issues/510 - Allow uploading `.enso-project` to local backend - Closes https://github.com/enso-org/cloud-v2/issues/477 - Promote local project to cloud - Currently errors with 500 (when uploading a small bundle) or 413 (when uploading a large bundle). May be fixed soon # Important Notes The "upload project to cloud" context menu action does not currently have an entry in the new context menu, so that will probably need an official design at some point
58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
/** @file Esbuild config file. */
|
|
import * as path from 'node:path'
|
|
|
|
import * 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'],
|
|
}
|
|
}
|