@fjell/eslint-config
Version:
Shared ESLint and esbuild configuration for all Fjell projects
76 lines (68 loc) • 1.64 kB
JavaScript
/* eslint-env node */
import {
baseConfig,
getExternalDependencies,
NODE_BUILTINS,
REACT_EXTERNALS,
createBuilder
} from "./esbuild.js";
/**
* Configuration for React/UI libraries
* - React JSX support
* - All dependencies external (including React)
* - Neutral platform for browser/node compatibility
* - TypeScript declarations included
*/
export function createReactConfig(options = {}) {
const {
entryPoints = ["src/index.ts"],
outfile,
outdir,
external = [],
platform = "neutral",
format = "esm",
jsx = "automatic",
jsxImportSource = "react",
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,
jsx,
jsxImportSource,
external: [
...NODE_BUILTINS,
...packageDeps,
...REACT_EXTERNALS,
...additionalExternals,
...external,
],
metafile: true,
...overrides,
};
}
/**
* Build function for React/UI libraries
*/
export function buildReact(options = {}) {
const config = createReactConfig(options);
const buildOptions = {
generateTypes: true,
typeStrategy: "simple", // React projects often have complex type setups
...options.buildOptions,
};
return createBuilder(config, buildOptions);
}
/**
* Default export for simple usage
*/
export default function (options = {}) {
return buildReact(options)();
}