FactuGES_ERP/apps/server/tsup.config.ts
David d57b71c200 refactor: standardize import statements and formatting across components
- Updated import statements in `textarea.tsx`, `toggle.tsx`, and `tooltip.tsx` for consistency.
- Added missing semicolons and adjusted formatting in `use-mobile.ts` and `use-mobile.tsx`.
- Cleaned up `package.json` and `root.json` files by removing unnecessary line breaks.
- Simplified `turbo.json` by consolidating array formatting for better readability.
2026-09-10 13:26:33 +02:00

81 lines
2.3 KiB
TypeScript

import fs from "node:fs";
import path from "node:path";
import { defineConfig } from "tsup";
/**
* Build del servidor:
* - incluye código TS de `modules/*` (buildless)
* - consume código ya compilado de `packages/*`
* - genera un bundle único ESM en `dist/`
*/
export default defineConfig({
entry: ["src/index.ts"], // punto de entrada principal
format: ["esm"], // ESM nativo (Node 18+)
target: "node22", // objetivo de compilación
bundle: true, // genera un único bundle, evita imports rotos
sourcemap: false,
clean: true,
minify: false,
treeshake: true,
dts: false, // opcional, genera .d.ts
outDir: "dist",
platform: "node",
// Paquetes de npm a mantener como externos (no se incluyen en el "bundle")
external: [],
noExternal: ["@repo", "@erp"],
esbuildOptions(options) {
// Permite resolver imports sin extensión (.ts, .js, .mjs, etc.)
options.resolveExtensions = [".ts", ".js", ".mjs", ".json"];
// Corrige la extensión de salida
options.outExtension = { ".js": ".js" };
// Permite usar require en contexto ESM (Node >=18)
options.banner = {
js: `
import { createRequire } from "module";
const require = createRequire(import.meta.url);
`,
};
},
// Plugin: fuerza a que los imports relativos se traten como locales, no "external"
esbuildPlugins: [
{
name: "fix-local-imports",
setup(build) {
build.onResolve({ filter: /^\.{1,2}\// }, (args) => {
const abs = path.resolve(args.resolveDir, args.path);
// Si es un directorio, intenta resolver a index.(ts|js)
if (fs.existsSync(abs) && fs.statSync(abs).isDirectory()) {
const indexTs = path.join(abs, "index.ts");
const indexJs = path.join(abs, "index.js");
if (fs.existsSync(indexTs)) {
return { path: indexTs, external: false };
}
if (fs.existsSync(indexJs)) {
return { path: indexJs, external: false };
}
}
// Si es un fichero con extensión válida
const withExts = [".ts", ".js", ".mjs"];
for (const ext of withExts) {
if (fs.existsSync(abs + ext)) {
return { path: abs + ext, external: false };
}
}
return { path: abs, external: false };
});
},
},
],
});