meld
Version:
Meld: A template language for LLM prompts
126 lines (121 loc) • 2.76 kB
text/typescript
import { defineConfig } from 'tsup';
import { readFileSync } from 'fs';
import { join } from 'path';
const packageJson = JSON.parse(readFileSync(join(__dirname, 'package.json'), 'utf-8'));
export default defineConfig([
// API build - both CJS and ESM
{
entry: {
index: 'api/index.ts',
},
format: ['cjs', 'esm'],
dts: true,
clean: true,
sourcemap: true,
splitting: true,
treeshake: true,
outDir: 'dist',
outExtension({ format }) {
return {
js: format === 'cjs' ? '.cjs' : '.mjs'
}
},
tsconfig: 'tsconfig.build.json',
external: [
'meld-ast',
'meld-spec',
'llmxml',
'marked',
'minimatch',
'winston',
'yargs',
'fs',
'graceful-fs',
'path',
'util',
'child_process',
'crypto',
'fs/promises'
],
noExternal: [
// If there are any dependencies that should be bundled, list them here
],
esbuildOptions(options, { format }) {
options.alias = {
'@core': './core',
'@services': './services',
'@parser': './parser',
'@interpreter': './interpreter',
'@output': './output',
'@cli': './cli',
'@sdk': './api',
'@api': './api',
'@tests': './tests'
};
options.define = {
...options.define,
'__VERSION__': `"${packageJson.version}"`
};
options.platform = 'node';
if (format === 'esm') {
options.mainFields = ['module', 'main'];
options.conditions = ['import', 'module', 'require', 'default'];
}
}
},
// CLI build - CJS only
{
entry: {
cli: 'cli/cli-entry.ts',
},
format: 'cjs',
dts: true,
clean: false,
sourcemap: true,
treeshake: true,
outDir: 'dist',
outExtension({ format }) {
return {
js: '.cjs'
}
},
tsconfig: 'tsconfig.build.json',
external: [
'meld-ast',
'meld-spec',
'llmxml',
'marked',
'minimatch',
'winston',
'yargs',
'fs',
'graceful-fs',
'path',
'util',
'child_process',
'crypto',
'fs/promises'
],
banner: {
js: '#!/usr/bin/env node'
},
esbuildOptions(options) {
options.alias = {
'@core': './core',
'@services': './services',
'@parser': './parser',
'@interpreter': './interpreter',
'@output': './output',
'@cli': './cli',
'@sdk': './api',
'@api': './api',
'@tests': './tests'
};
options.define = {
...options.define,
'__VERSION__': `"${packageJson.version}"`
};
options.platform = 'node';
}
}
]);