This package contains shared ESLint configurations for the monorepo.
📖 Back to Main README
This package provides standardized ESLint configurations that can be shared across all applications and packages in the monorepo. It ensures consistent code quality and coding standards throughout the project.
A base configuration that includes:
- JavaScript recommended rules
- TypeScript recommended rules
- Prettier integration
- Turbo plugin for monorepo best practices
- Common ignore patterns
A comprehensive React configuration that extends the base config and includes:
- React recommended rules
- React Hooks rules
- React Refresh plugin
- JSX A11y accessibility rules
- Import plugin
- Storybook plugin
- React 17+ JSX transform optimizations
Configuration specifically for Next.js applications.
A lighter React configuration for internal libraries.
In your package's eslint.config.js:
import { config as baseConfig } from '@repo/eslint-config/base';
import { config as reactConfig } from '@repo/eslint-config/react';
export default [
...baseConfig,
...reactConfig
// Your package-specific overrides
];For more complex configurations, you can extend and customize:
import { config as baseConfig } from '@repo/eslint-config/base';
import { config as reactConfig } from '@repo/eslint-config/react';
export default [
...baseConfig,
...reactConfig,
{
files: ['**/*.test.{js,ts,jsx,tsx}'],
rules: {
// Test-specific rules
}
},
{
files: ['**/*.stories.{js,ts,jsx,tsx}'],
rules: {
// Storybook-specific rules
}
}
];This package includes all necessary ESLint plugins and configurations as devDependencies:
eslint- Core ESLint package@eslint/js- JavaScript configurationtypescript-eslint- TypeScript supporteslint-plugin-react- React-specific ruleseslint-plugin-react-hooks- React Hooks ruleseslint-plugin-jsx-a11y- Accessibility ruleseslint-plugin-import- Import/export ruleseslint-plugin-storybook- Storybook ruleseslint-plugin-turbo- Turbo monorepo rules- And more...
When adding new rules to the shared configurations:
- Consider if the rule should be in base, react, or a specific config
- Test the rule across different package types
- Update this README with any new configurations
- Consider backward compatibility
You can test configurations locally by running:
# From the root directory
pnpm lint
# From this package directory
pnpm lint- Import errors: Ensure the package is properly installed as a workspace dependency
- Rule conflicts: Check if rules are being overridden by local configurations
- Performance: Large files may need specific ignore patterns
- Check the ESLint documentation
- Review the Turbo ESLint plugin docs
- Open an issue in the main repository
This package is designed to work with:
- ESLint 9.x
- TypeScript 5.x
- React 18.x
- Node.js 18+