-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtsdown.config.ts
More file actions
86 lines (84 loc) · 2.76 KB
/
tsdown.config.ts
File metadata and controls
86 lines (84 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import { defineConfig } from 'tsdown'
// Packages that cannot be bundled: native binaries, ONNX runtime, optional heavy deps
const external = [
// Native SQLite / vector / graph DB bindings
'better-sqlite3',
'@lancedb/lancedb',
'@surrealdb/node',
// Tree-sitter native parser
'tree-sitter',
'tree-sitter-typescript',
'tree-sitter-python',
'tree-sitter-rust',
'tree-sitter-go',
'tree-sitter-java',
'tree-sitter-c',
'tree-sitter-c-sharp',
'tree-sitter-cpp',
'tree-sitter-ruby',
'tree-sitter-kotlin',
// HuggingFace transformers + ONNX (loads model files at runtime, cannot bundle)
'@huggingface/transformers',
'onnxruntime-node',
'onnxruntime-common',
// Native image processing
'sharp',
/^@img\//,
'detect-libc',
]
export default defineConfig([
// Library bundle: packages/soop/dist/src/index.mjs + packages/soop/dist/src/index.d.mts
// Bundles all @pleaseai/* workspace packages inline (private, not separately published on npm)
// Their pure-JS transitive deps (ai-sdk, consola, etc.) are also bundled
// Native/binary deps remain external (consumer must install optionalDependencies)
{
entry: { 'src/index': './packages/soop/src/index.ts' },
format: 'esm',
platform: 'node',
dts: { eager: true },
clean: true,
outDir: 'packages/soop/dist',
external,
noExternal: [/^@pleaseai\//],
inlineOnly: false,
},
// CLI binary: packages/soop/dist/packages/cli/src/cli.mjs (standalone, bundles all pure-JS deps)
// noExternal ensures @pleaseai/* workspace packages are bundled inline (private, not on npm)
{
entry: { 'packages/cli/src/cli': './packages/cli/src/cli.ts' },
format: 'esm',
platform: 'node',
dts: false,
outDir: 'packages/soop/dist',
external,
noExternal: [/^@pleaseai\//],
inlineOnly: false,
},
// MCP server binary: packages/soop/dist/packages/mcp/src/server.mjs (standalone)
// noExternal ensures @pleaseai/* workspace packages are bundled inline (private, not on npm)
{
entry: { 'packages/mcp/src/server': './packages/mcp/src/server.ts' },
format: 'esm',
platform: 'node',
dts: false,
outDir: 'packages/soop/dist',
external,
noExternal: [/^@pleaseai\//],
banner: { js: '#!/usr/bin/env node' },
inlineOnly: false,
},
// Launcher scripts: compiled from scripts/launcher/*.ts → packages/soop/dist/launcher-{cli,mcp}.mjs
// These are pure Node.js scripts (no native deps) used by bin/soop and bin/soop-mcp shims
{
entry: {
'launcher-cli': './scripts/launcher/cli.ts',
'launcher-mcp': './scripts/launcher/mcp.ts',
},
format: 'esm',
platform: 'node',
dts: false,
outDir: 'packages/soop/dist',
// Launchers have no @pleaseai/* deps — they only use Node.js built-ins
inlineOnly: false,
},
])