mirror of
https://github.com/enso-org/enso.git
synced 2024-12-23 19:21:54 +03:00
b286adaae4
# Important Notes The command to run the gui dev environment has been changed. Invoking the old command will print a message about that. From now on, use `pnpm dev:gui2` in repository root.
49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
import esbuild from 'esbuild'
|
|
import fs from 'fs/promises'
|
|
import path from 'path'
|
|
import url from 'url'
|
|
|
|
const watchMode = process.argv[2] === 'watch'
|
|
|
|
const ctx = await esbuild.context({
|
|
outfile: 'dist/main.cjs',
|
|
sourcemap: 'linked',
|
|
entryPoints: ['src/main.ts'],
|
|
bundle: true,
|
|
platform: 'browser',
|
|
define: {
|
|
self: 'globalThis',
|
|
},
|
|
plugins: [usePolyglotFfi()],
|
|
conditions: watchMode ? ['source'] : [],
|
|
external: ['node:url'], // Not actually used, tree-shaken out
|
|
format: 'cjs',
|
|
})
|
|
if (watchMode) await ctx.watch()
|
|
else {
|
|
const result = await ctx.rebuild()
|
|
await ctx.dispose()
|
|
}
|
|
|
|
/** @type () => esbuild.Plugin */
|
|
function usePolyglotFfi() {
|
|
return {
|
|
name: 'use-polyglot-ffi',
|
|
setup(build) {
|
|
const newPath = url.fileURLToPath(new URL('./src/ffiPolyglot.ts', import.meta.url))
|
|
build.onLoad(
|
|
{
|
|
filter: /ydoc-shared.*ast(\\|\/)ffi.(js|ts)$/,
|
|
},
|
|
async () => {
|
|
return {
|
|
contents: await fs.readFile(newPath),
|
|
resolveDir: path.dirname(newPath),
|
|
loader: 'ts',
|
|
}
|
|
},
|
|
)
|
|
},
|
|
}
|
|
}
|