refactor: add samples to export & use inline-schema's esbuild plugin
This commit is contained in:
parent
83658c9898
commit
a84aa2426b
|
|
@ -0,0 +1 @@
|
|||
!node_modules
|
||||
|
|
@ -9,10 +9,15 @@
|
|||
".": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"import": "./dist/index.js"
|
||||
},
|
||||
"./samples/*": {
|
||||
"types": "./dist/samples/*.d.ts",
|
||||
"import": "./dist/samples/*.js"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"build": "tsup",
|
||||
"build:samples": "tsup --config tsup.samples.config.ts",
|
||||
"prepare": "npm run build",
|
||||
"test": "vitest",
|
||||
"test:run": "vitest run",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import {
|
||||
createGameCommandRegistry, Part, createRegion,
|
||||
IGameContext, createPromptDef
|
||||
} from '@/index';
|
||||
import {Part} from "boardgame-core";
|
||||
import {createRegion} from "boardgame-core";
|
||||
import {createGameCommandRegistry, createPromptDef, IGameContext} from "boardgame-core";
|
||||
|
||||
const BOARD_SIZE = 3;
|
||||
const MAX_TURNS = BOARD_SIZE * BOARD_SIZE;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
import { defineConfig } from 'tsup';
|
||||
import { fileURLToPath } from 'url';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import {csvLoader} from 'inline-schema/csv-loader/esbuild';
|
||||
|
||||
const srcDir = fileURLToPath(new URL('./src', import.meta.url));
|
||||
const samplesDir = fileURLToPath(new URL('./src/samples', import.meta.url));
|
||||
|
||||
// Auto-discover samples entry points
|
||||
function getSamplesEntries(): Record<string, string> {
|
||||
const entries: Record<string, string> = {};
|
||||
if (!fs.existsSync(samplesDir)) return entries;
|
||||
|
||||
for (const item of fs.readdirSync(samplesDir)) {
|
||||
const fullPath = path.join(samplesDir, item);
|
||||
if (fs.statSync(fullPath).isDirectory()) {
|
||||
// Directory sample (e.g. boop) - look for index.ts
|
||||
const indexPath = path.join(fullPath, 'index.ts');
|
||||
if (fs.existsSync(indexPath)) {
|
||||
entries[item] = indexPath;
|
||||
}
|
||||
} else if (item.endsWith('.ts')) {
|
||||
// Single file sample (e.g. tic-tac-toe.ts)
|
||||
entries[item.replace('.ts', '')] = fullPath;
|
||||
}
|
||||
}
|
||||
return entries;
|
||||
}
|
||||
|
||||
const samplesEntries = getSamplesEntries();
|
||||
|
||||
export default defineConfig({
|
||||
entry: samplesEntries,
|
||||
format: ['esm'],
|
||||
dts: true,
|
||||
clean: true,
|
||||
sourcemap: true,
|
||||
outDir: 'dist/samples',
|
||||
external: ['@preact/signals-core', 'mutative', 'inline-schema', 'boardgame-core'],
|
||||
esbuildPlugins: [csvLoader()],
|
||||
esbuildOptions(options) {
|
||||
options.alias = {
|
||||
'@': srcDir,
|
||||
};
|
||||
},
|
||||
});
|
||||
Loading…
Reference in New Issue