Paratco ESLint configs for JavaScript and TypeScript projects.
- TypeScript
- React (optional)
- Node.js
- Import plugin (optional)
- Stylistic or Prettier formatting
NPM:
# prettier is optional, just use it if you want to use prettier formatting
npm install --save-dev @paratco/eslint-config eslint prettierYarn:
# prettier is optional, just use it if you want to use prettier formatting
yarn add -D @paratco/eslint-config eslint prettierBun:
# prettier is optional, just use it if you want to use prettier formatting
bun add -d @paratco/eslint-config eslint prettierCreate an eslint.config.{js,mjs,ts} file in your project root:
import { createConfig } from "@paratco/eslint-config";
export default createConfig({
// Required: Specify the platform
platform: "node", // or "react"
// Required: Choose your formatting style
style: "prettier", // or "stylistic"
// Optional: Enable import plugin rules
useImport: true,
// Optional: TypeScript configuration
typescript: {
tsconfigRootDir: import.meta.dirname,
project: "./tsconfig.json"
},
// Optional: Add custom overrides
overrides: [
// Your custom ESLint configurations
],
// Optional: Specify patterns to ignore
ignores: ["dist/**", "node_modules/**"]
});The createConfig function accepts an options object with the following properties:
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
platform |
"node" | "react" |
Yes | - | Specifies the platform for the ESLint configuration |
style |
"stylistic" | "prettier" |
Yes | - | Specifies the style formatter to use |
useImport |
boolean |
No | false |
Enable import plugin rules |
files |
string[] |
No | undefined |
Scope all rules to these file globs only |
typescript |
TypescriptOptions |
No | undefined |
TypeScript configuration options |
overrides |
Linter.Config[] |
No | undefined |
Additional ESLint configurations to override defaults |
ignores |
string[] |
No | undefined |
Patterns to ignore |
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
tsconfigRootDir |
string |
No | undefined |
The root directory for TypeScript configuration |
project |
string | string[] |
No | undefined |
Path to tsconfig.json file(s) |
import { createConfig } from "@paratco/eslint-config";
export default createConfig({
platform: "node",
style: "prettier",
typescript: {
tsconfigRootDir: import.meta.dirname,
project: "./tsconfig.json"
}
});import { createConfig } from "@paratco/eslint-config";
export default createConfig({
platform: "react",
style: "stylistic",
useImport: true,
typescript: {
tsconfigRootDir: import.meta.dirname,
project: "./tsconfig.json"
}
});import { createConfig } from "@paratco/eslint-config";
export default createConfig({
platform: "node",
style: "prettier"
});Use the files option to restrict all rules to a specific set of file globs. This is useful when a single ESLint config covers multiple platforms (e.g. an Electron app with a renderer and a main process each targeting a different tsconfig.json), or when working in a monorepo where different sub-trees have different configs.
When files is provided, createConfig internally wraps the returned configs with eslint.defineConfig() so that all plugin registrations and rules are correctly scoped — no extra wrapper is needed in your config file.
import { createConfig } from "@paratco/eslint-config";
export default [
// Renderer process — React + browser globals
...createConfig({
files: ["./src/**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}"],
platform: "react",
style: "stylistic",
useImport: true,
typescript: {
tsconfigRootDir: import.meta.dirname,
project: "./tsconfig.app.json"
}
}),
// Main process — Node.js globals
...createConfig({
files: ["./electron/**/*.{js,mjs,cjs,ts}"],
platform: "node",
style: "stylistic",
useImport: true,
typescript: {
tsconfigRootDir: import.meta.dirname,
project: "./tsconfig.electron.json"
}
}),
{
ignores: ["dist", "dist-electron", ".vite"]
}
];Note: When
filesis used and multiplecreateConfigcalls are combined, spread each result (...createConfig(...)) into the top-level array instead of returning a singlecreateConfigcall directly.
Licensed under MIT License