or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

basic-config.mdextension-utilities.mdindex.mdnative-config.mdnode-config.mdtypescript-analysis.mdweb-config.md
tile.json

tessl/npm-eslint-config-universe

Shared ESLint configs for internal Expo projects providing multiple presets for different environments.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/eslint-config-universe@15.0.x

To install, run

npx @tessl/cli install tessl/npm-eslint-config-universe@15.0.0

index.mddocs/

ESLint Config Universe

ESLint 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.

Package Information

  • Package Name: eslint-config-universe
  • Package Type: npm
  • Language: JavaScript
  • Installation: npm install --dev eslint-config-universe eslint prettier

Core Imports

ESLint 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.

Traditional ESLint Config (ESLint 8 and below)

// .eslintrc.js
module.exports = {
  extends: ['universe']
};
// package.json
{
  "eslintConfig": {
    "extends": "universe"
  }
}

Flat Config (ESLint 9+)

// eslint.config.js
const config = require('eslint-config-universe/flat/default');
module.exports = config;

Basic Usage

// .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']
};

Architecture

ESLint Config Universe follows a modular architecture with several key components:

  • Platform-Specific Presets: Ready-to-use configurations for different environments (native, web, node)
  • Shared Configuration Modules: Reusable rule sets for core JavaScript, TypeScript, React, and Prettier
  • Extension System: Computed file extensions supporting Expo platform-specific files (.android.js, .ios.ts, etc.)
  • Dual Config Support: Both traditional and flat configuration formats for ESLint compatibility
  • Type-Aware Linting: Optional enhanced TypeScript rules requiring type information

Capabilities

Basic Configuration

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');

Basic Configuration

React Native Configuration

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');

React Native Configuration

Web Configuration

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');

Web Configuration

Node.js Configuration

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');

Node.js Configuration

TypeScript Type-Aware Linting

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' }
    }
  }
]);

TypeScript Type-Aware Linting

Extension Utilities

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');

Extension Utilities

Philosophy

This configuration is designed with a lenient philosophy that:

  • Marks severe problems (syntax errors, undefined variables) as errors
  • Treats stylistic issues as warnings to provide flexibility
  • Integrates Prettier for consistent code formatting
  • Supports team flexibility while maintaining code quality standards
  • Promotes osmotic learning of coding practices through warnings rather than rigid enforcement