build: update tsconfig and tsup sample configuration
- Include tests in tsconfig for better type checking - Update tsup.samples.config.ts to use double quotes - Add esbuild alias for `@` in sample builds
This commit is contained in:
parent
601eb0f417
commit
25b44fd6d1
|
|
@ -11,12 +11,12 @@
|
|||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"outDir": "./dist",
|
||||
"rootDir": "./src",
|
||||
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": ["src/*"]
|
||||
}
|
||||
"@/*": ["src/*"],
|
||||
},
|
||||
"include": ["src/**/*"],
|
||||
"exclude": ["node_modules", "dist", "tests"]
|
||||
},
|
||||
"include": ["src/**/*", "tests/**/*"],
|
||||
"exclude": ["node_modules", "dist"],
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
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';
|
||||
import {yarnSpinnerPlugin} from 'yarn-spinner-loader/esbuild';
|
||||
import type { Plugin } from 'esbuild';
|
||||
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";
|
||||
import { yarnSpinnerPlugin } from "yarn-spinner-loader/esbuild";
|
||||
import type { Plugin } from "esbuild";
|
||||
|
||||
const srcDir = fileURLToPath(new URL('./src', import.meta.url));
|
||||
const samplesDir = fileURLToPath(new URL('./src/samples', import.meta.url));
|
||||
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> {
|
||||
|
|
@ -18,13 +18,13 @@ function getSamplesEntries(): Record<string, string> {
|
|||
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');
|
||||
const indexPath = path.join(fullPath, "index.ts");
|
||||
if (fs.existsSync(indexPath)) {
|
||||
entries[item] = indexPath;
|
||||
}
|
||||
} else if (item.endsWith('.ts')) {
|
||||
} else if (item.endsWith(".ts")) {
|
||||
// Single file sample (e.g. tic-tac-toe.ts)
|
||||
entries[item.replace('.ts', '')] = fullPath;
|
||||
entries[item.replace(".ts", "")] = fullPath;
|
||||
}
|
||||
}
|
||||
return entries;
|
||||
|
|
@ -37,20 +37,20 @@ const samplesEntries = getSamplesEntries();
|
|||
*/
|
||||
function rewriteBoardgameImports(): Plugin {
|
||||
return {
|
||||
name: 'rewrite-boardgame-imports',
|
||||
name: "rewrite-boardgame-imports",
|
||||
setup(build) {
|
||||
build.onResolve({ filter: /^@\/(core|utils)\// }, args => {
|
||||
build.onResolve({ filter: /^@\/(core|utils)\// }, (args) => {
|
||||
// Mark these as external and rewrite to 'boardgame-core'
|
||||
return {
|
||||
path: 'boardgame-core',
|
||||
path: "boardgame-core",
|
||||
external: true,
|
||||
};
|
||||
});
|
||||
|
||||
// Also handle @/index imports
|
||||
build.onResolve({ filter: /^@\/index$/ }, args => {
|
||||
build.onResolve({ filter: /^@\/index$/ }, (args) => {
|
||||
return {
|
||||
path: 'boardgame-core',
|
||||
path: "boardgame-core",
|
||||
external: true,
|
||||
};
|
||||
});
|
||||
|
|
@ -60,11 +60,25 @@ function rewriteBoardgameImports(): Plugin {
|
|||
|
||||
export default defineConfig({
|
||||
entry: samplesEntries,
|
||||
format: ['esm'],
|
||||
format: ["esm"],
|
||||
dts: true,
|
||||
clean: true,
|
||||
sourcemap: true,
|
||||
outDir: 'dist/samples',
|
||||
external: ['@preact/signals-core', 'mutative', 'inline-schema', 'boardgame-core'],
|
||||
esbuildPlugins: [csvLoader({ writeToDisk: true }), rewriteBoardgameImports(), yarnSpinnerPlugin()],
|
||||
outDir: "dist/samples",
|
||||
external: [
|
||||
"@preact/signals-core",
|
||||
"mutative",
|
||||
"inline-schema",
|
||||
"boardgame-core",
|
||||
],
|
||||
esbuildPlugins: [
|
||||
csvLoader({ writeToDisk: true }),
|
||||
rewriteBoardgameImports(),
|
||||
yarnSpinnerPlugin(),
|
||||
],
|
||||
esbuildOptions(options) {
|
||||
options.alias = {
|
||||
"@": srcDir,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue