@todesktop/dev-config
v1.0.29
Published
Shared dev configs for ESLint, Prettier, TypeScript, etc
Readme
dev-config
This package provides reusable development configuration files used across the
repository: oxlint, oxfmt, and a base tsconfig.
Oxlint
Oxlint is the primary linting tool.
Shared configs are in oxlint/ and consumed via each package's
oxlint.config.ts.
A typical project config looks like this:
import { configs, defineConfig } from '@todesktop/dev-config/oxlint';
export default defineConfig({
overrides: [
configs.base,
configs.ts,
configs.react,
configs.node,
{
rules: {
'no-console': 'off',
},
},
],
});Configs are passed as items in overrides. Each item applies to all JS/TS file
extensions by default. You can also spread a config inline to narrow it to
specific files:
{ files: ['**/*.mjs'], ...configs.node }Available configs:
| Config | Strict variant | Description |
| ------------- | -------------- | ---------------------------------------------------- |
| base | strict | Airbnb-based JS rules; lenient defaults |
| ts | tsStrict | TypeScript rules via @typescript-eslint |
| react | reactStrict | React + React Hooks rules |
| node | - | Node.js best practices + globals |
| nodeCommonJs | - | CommonJS .js/.cjs files (configs, scripts) |
| browser | - | Browser globals |
| esm | - | ESM-specific rules |
| unicorn | - | Rules from eslint-plugin-unicorn |
| perfectionist | - | Sorts imports, objects, and types |
| jest | - | Jest globals (auto-scoped to **/*.test.ts) |
| vitest | - | Vitest globals (auto-scoped to **/*.test.{ts,tsx}) |
Strict variants tighten rules from their base — for example tsStrict turns
@typescript-eslint/no-explicit-any into an error and bans non-null assertions.
Include the base config alongside its strict variant, as strict does not inherit
from base automatically.
tsconfig
A shared TypeScript base config is available. To reuse it, extend it from your
package's tsconfig.json:
{
"extends": "@todesktop/dev-config/tsconfig.json",
"include": ["src/**/*.ts"]
}Legacy: ESLint (deprecated)
ESLint support is legacy. New projects should use oxlint instead.
The ESLint configuration is based on eslint-config-airbnb-extended. ESLint and all related plugins are optional peer dependencies and will not be installed automatically.
A typical project config that reuses these shared configs looks like this:
import { configs, defineConfig } from '@todesktop/dev-config/eslint';
export default defineConfig(
configs.base,
configs.ts,
configs.prettier,
configs.react,
configs.nodeCommonJs,
{
rules: {
'no-console': 'off',
},
},
);Available configs:
| Base | Strict | Description |
| ------------ | ----------- | ------------------------------------------------------------------- |
| base | strict | JavaScript rules |
| ts | tsStrict | TypeScript rules |
| react | reactStrict | React-specific rules |
| prettier | - | Loads Prettier-related rule adjustments |
| node | - | Best practices for Node.js |
| nodeCommonJs | - | For CommonJS .js/.cjs files (configs, scripts, not source code) |
| esm | - | ESM-specific rules |
| unicorn | - | Rules from eslint-plugin-unicorn |
Since all eslint-related dependencies are removed, you need to install them manually:
pnpm add -D \
@eslint/js@^9.37.0 \
eslint@^9.39.1 \
eslint-config-airbnb-extended@^2.3.2 \
eslint-config-prettier@^10.1.8 \
eslint-import-resolver-typescript@^4.4.4 \
eslint-plugin-import-x@^4.16.1 \
eslint-plugin-n@^17.23.1 \
eslint-plugin-perfectionist@^4.15.1 \
eslint-plugin-prettier@^5.5.4 \
eslint-plugin-react@^7.37.5 \
eslint-plugin-react-hooks@^7.0.0 \
eslint-plugin-unicorn@^61.0.2 \
prettier@^3.6.2 \
typescript-eslint@^8.46.1Legacy: Prettier (deprecated)
Prettier support is legacy. New projects should use oxfmt instead.
A shared Prettier configuration is provided for existing projects. Prettier is an optional peer dependency and will not be installed automatically.
