46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
|
|
/**
|
||
|
|
* Bundle the mcp-server Node.js files into self-contained CJS bundles
|
||
|
|
* that can be shipped as Tauri resources inside the .app bundle.
|
||
|
|
*
|
||
|
|
* Output: src-tauri/resources/mcp-server/{index.js,ws-bridge.js}
|
||
|
|
*/
|
||
|
|
import { build } from 'esbuild'
|
||
|
|
import { fileURLToPath } from 'url'
|
||
|
|
import { dirname, join } from 'path'
|
||
|
|
import { mkdirSync, writeFileSync } from 'fs'
|
||
|
|
|
||
|
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||
|
|
const ROOT = join(__dirname, '..')
|
||
|
|
const SRC = join(ROOT, 'mcp-server')
|
||
|
|
const OUT = join(ROOT, 'src-tauri', 'resources', 'mcp-server')
|
||
|
|
|
||
|
|
mkdirSync(OUT, { recursive: true })
|
||
|
|
|
||
|
|
// Tell Node.js that this directory contains CJS bundles, even if the
|
||
|
|
// root package.json declares "type": "module".
|
||
|
|
writeFileSync(join(OUT, 'package.json'), JSON.stringify({ type: 'commonjs' }))
|
||
|
|
|
||
|
|
const shared = {
|
||
|
|
platform: 'node',
|
||
|
|
bundle: true,
|
||
|
|
format: 'cjs',
|
||
|
|
target: 'node18',
|
||
|
|
// Mark optional native bindings as external — ws works fine without them
|
||
|
|
external: ['bufferutil', 'utf-8-validate'],
|
||
|
|
logLevel: 'warning',
|
||
|
|
}
|
||
|
|
|
||
|
|
await build({
|
||
|
|
...shared,
|
||
|
|
entryPoints: [join(SRC, 'index.js')],
|
||
|
|
outfile: join(OUT, 'index.js'),
|
||
|
|
})
|
||
|
|
|
||
|
|
await build({
|
||
|
|
...shared,
|
||
|
|
entryPoints: [join(SRC, 'ws-bridge.js')],
|
||
|
|
outfile: join(OUT, 'ws-bridge.js'),
|
||
|
|
})
|
||
|
|
|
||
|
|
console.log('mcp-server bundled → src-tauri/resources/mcp-server/')
|