Download apps/desktop/scripts/bundle-electron-main.mjs from SaylorTwift/hermes-agent: direct link, hf CLI and curl.
- Browser
- Download file 2.17 kB
-
https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/apps/desktop/scripts/bundle-electron-main.mjs
- Command line
-
hf download hf://SaylorTwift/hermes-agent/apps/desktop/scripts/bundle-electron-main.mjs
-
curl -L -o bundle-electron-main.mjs https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/apps/desktop/scripts/bundle-electron-main.mjs
2.17 kB
| // bundle-electron-main.mjs β bundles electron/main.ts and electron/preload.ts | |
| // into self-contained js files in dist/ so the packaged app doesn't need | |
| // node_modules/ or tsx at runtime. | |
| // | |
| // Output: | |
| // dist/electron-main.mjs (MJS bundle β entry point for packaged app) | |
| // dist/electron-preload.js (CJS bundle β loaded via BrowserWindow preload) | |
| // | |
| // `electron` and `node-pty` are external (provided by the runtime / staged | |
| // separately via stage-native-deps). | |
| import { build } from 'esbuild' | |
| import { resolve, dirname } from 'node:path' | |
| import { fileURLToPath } from 'node:url' | |
| import { mkdirSync } from 'node:fs' | |
| const here = dirname(fileURLToPath(import.meta.url)) | |
| const root = resolve(here, '..') | |
| const distDir = resolve(root, 'dist') | |
| mkdirSync(distDir, { recursive: true }) | |
| const mainEntry = resolve(root, 'electron/main.ts') | |
| const mainOut = resolve(distDir, 'electron-main.mjs') | |
| const preloadEntry = resolve(root, 'electron/preload.ts') | |
| const preloadOut = resolve(distDir, 'electron-preload.js') | |
| const external = ['electron', 'node-pty', 'get-windows', 'fs'] | |
| // Production bundles bake packaged=true so unpackaged `electron .` still | |
| // behaves like a packaged build. Dev bundles (`--dev`) leave the env alone | |
| // so HERMES_DESKTOP_DEV_SERVER / source-tree resolution keep working. | |
| const isDev = process.argv.includes('--dev') | |
| const define = isDev | |
| ? {} | |
| : { 'process.env.HERMES_DESKTOP_IS_PACKAGED': JSON.stringify(true) } | |
| // Bundle main.ts β dist/electron-main.mjs | |
| await build({ | |
| entryPoints: [mainEntry], | |
| bundle: true, | |
| platform: 'node', | |
| format: 'esm', | |
| target: 'node20', | |
| outfile: mainOut, | |
| external, | |
| banner: { | |
| js: "import { createRequire } from 'module'; const require = createRequire(import.meta.url);", | |
| }, | |
| define, | |
| logLevel: 'info', | |
| }) | |
| console.log(`bundled ${mainOut}${isDev ? ' (dev)' : ''}`) | |
| // Bundle preload.ts β dist/electron-preload.js | |
| await build({ | |
| entryPoints: [preloadEntry], | |
| bundle: true, | |
| platform: 'node', | |
| format: 'cjs', | |
| target: 'node20', | |
| outfile: preloadOut, | |
| external, | |
| define, | |
| logLevel: 'info', | |
| }) | |
| console.log(`bundled ${preloadOut}${isDev ? ' (dev)' : ''}`) | |