@fjell/eslint-config
Version:
Shared ESLint and esbuild configuration for all Fjell projects
74 lines (65 loc) • 1.65 kB
JavaScript
/* eslint-env node */
import {
baseConfig,
getExternalDependencies,
NODE_BUILTINS,
createBuilder
} from "./esbuild.js";
/**
* Configuration for Node.js libraries
* - Single entry point bundling
* - All dependencies external
* - Node.js platform optimized
* - TypeScript declarations included
*/
export function createLibraryConfig(options = {}) {
const {
entryPoints = ["src/index.ts"],
outfile,
outdir,
external = [],
platform = "node",
format = "esm",
additionalExternals = [],
...overrides
} = options;
const packageDeps = getExternalDependencies();
// Use outdir if provided, otherwise default to outfile
const outputConfig = outdir ? { outdir } : { outfile: outfile || "dist/index.js" };
return {
...baseConfig,
entryPoints,
...outputConfig,
format,
platform,
external: [
...NODE_BUILTINS,
...packageDeps,
...additionalExternals,
...external,
],
metafile: true,
...overrides,
};
}
/**
* Build function for Node.js libraries
*/
export function buildLibrary(options = {}) {
// Separate build options from esbuild config options
const { generateTypes, typeStrategy, onSuccess, onError, ...esbuildOptions } = options;
const config = createLibraryConfig(esbuildOptions);
const buildOptions = {
generateTypes: generateTypes !== undefined ? generateTypes : true,
typeStrategy: typeStrategy || "temp-config",
onSuccess,
onError,
};
return createBuilder(config, buildOptions);
}
/**
* Default export for simple usage
*/
export default function (options = {}) {
return buildLibrary(options)();
}