Shared ESLint configs for internal Expo projects providing multiple presets for different environments.
npx @tessl/cli install tessl/npm-eslint-config-universe@15.0.0ESLint Config Universe is a comprehensive ESLint configuration package that provides multiple preset configurations for different JavaScript/TypeScript environments. It offers specialized configurations for React Native/Expo projects, web applications, and Node.js, with built-in TypeScript support, Prettier integration, and optional type-aware linting.
npm install --dev eslint-config-universe eslint prettierESLint Config Universe is consumed through ESLint configuration files rather than direct imports. Configuration is specified in .eslintrc.js, package.json, or eslint.config.js files.
// .eslintrc.js
module.exports = {
extends: ['universe']
};// package.json
{
"eslintConfig": {
"extends": "universe"
}
}// eslint.config.js
const config = require('eslint-config-universe/flat/default');
module.exports = config;// .eslintrc.js - Basic JavaScript/TypeScript project
module.exports = {
extends: ['universe']
};
// React Native/Expo project
module.exports = {
extends: ['universe/native']
};
// Web React project
module.exports = {
extends: ['universe/web']
};
// Node.js project
module.exports = {
extends: ['universe/node']
};
// Multi-platform project
module.exports = {
extends: ['universe/node', 'universe/web']
};ESLint Config Universe follows a modular architecture with several key components:
Core JavaScript/TypeScript linting configuration suitable for general projects. Provides comprehensive ESLint rules with TypeScript support and Prettier integration.
// Traditional config
extends: ['universe']
// Flat config
const config = require('eslint-config-universe/flat/default');Specialized configuration for React Native and Expo projects with React, JSX, and platform-specific support. Includes React Native globals and platform-aware file extension handling.
// Traditional config
extends: ['universe/native']
// Flat config
const config = require('eslint-config-universe/flat/native');Configuration optimized for browser-based React applications with DOM globals and web-specific environment settings.
// Traditional config
extends: ['universe/web']
// Flat config
const config = require('eslint-config-universe/flat/web');Configuration tailored for Node.js applications with server-side environment settings and Node.js-specific linting rules.
// Traditional config
extends: ['universe/node']
// Flat config
const config = require('eslint-config-universe/flat/node');Optional enhanced TypeScript linting rules that utilize parsed type information for more sophisticated analysis. Requires additional configuration with parserOptions.project.
// Traditional config with type-aware rules
extends: ['universe', 'universe/shared/typescript-analysis']
overrides: [{
files: ['*.ts', '*.tsx', '*.d.ts'],
parserOptions: { project: './tsconfig.json' }
}]
// Flat config with type-aware rules
const { defineConfig } = require('eslint/config');
const universeConfig = require('eslint-config-universe/flat/default');
const typescriptAnalysisConfig = require('eslint-config-universe/flat/shared/typescript-analysis');
module.exports = defineConfig([
...universeConfig,
{
...typescriptAnalysisConfig,
languageOptions: {
...typescriptAnalysisConfig.languageOptions,
parserOptions: { project: './tsconfig.json' }
}
}
]);Utility functions for computing platform-specific file extensions used internally by the configurations and available for advanced customization.
const { computeExpoExtensions, jsExtensions, tsExtensions } = require('eslint-config-universe/shared/extensions');This configuration is designed with a lenient philosophy that: