Comprehensive linting solution for JavaScript and TypeScript projects combining ESLint and Stylelint with unified interface
—
Pre-configured ESLint setup with React, TypeScript, and Jest support, plus legacy fabric configuration compatibility. The package provides comprehensive ESLint configurations optimized for modern JavaScript and TypeScript development.
Modern ESLint configuration with React, TypeScript, and Jest support.
// ESLint configuration object (CommonJS module.exports)
// Location: src/config/eslint/index.ts
const eslintConfig: {
parser: string;
plugins: string[];
settings: {
react: {
version: string;
};
};
env: {
browser: boolean;
node: boolean;
es2022: boolean;
jest: boolean;
};
rules: Record<string, any>;
overrides: Array<{
parser?: string;
plugins?: string[];
files: string[];
rules: Record<string, any>;
settings?: any;
extends?: string[];
}>;
parserOptions: {
ecmaFeatures: {
jsx: boolean;
};
babelOptions: {
babelrc: boolean;
configFile: boolean;
browserslistConfigFile: boolean;
presets: string[];
};
requireConfigFile: boolean;
warnOnUnsupportedTypeScriptVersion: boolean;
};
};Key Features:
Usage:
// .eslintrc.js
module.exports = require("@umijs/lint/dist/config/eslint");Legacy fabric-compatible ESLint configuration for backward compatibility.
// Legacy ESLint configuration object (CommonJS module.exports)
// Location: src/config/eslint/legacy.ts
const eslintLegacyConfig: {
extends: string[];
parser: string;
plugins: string[];
env: {
browser: boolean;
node: boolean;
es6: boolean;
mocha: boolean;
jest: boolean;
jasmine: boolean;
};
rules: Record<string, any>;
overrides: Array<{
files: string[];
parser: string;
rules: Record<string, any>;
extends: string[];
}>;
parserOptions: {
ecmaFeatures: {
jsx: boolean;
};
babelOptions: {
babelrc: boolean;
configFile: boolean;
browserslistConfigFile: boolean;
presets: string[];
};
requireConfigFile: boolean;
warnOnUnsupportedTypeScriptVersion: boolean;
};
};Key Features:
Usage:
// .eslintrc.js for legacy projects
module.exports = require("@umijs/lint/dist/config/eslint/legacy");Module resolution patch for ESLint plugins.
// ESLint plugin resolution patch
// Location: src/config/eslint/setup.ts
// Automatically patches ESLint plugin resolve logic using @rushstack/eslint-patchPurpose:
Modern recommended rules for Umi.js projects.
// Location: src/config/eslint/rules/recommended.ts
const recommendedRules: Record<string, number | any[]>;
const jestRules: Record<string, number | any[]>;
const typescriptRules: Record<string, number | any[]>;Rule Categories:
Legacy rules from @umijs/fabric for backward compatibility.
// Location: src/config/eslint/rules/fabric.ts
const fabricRules: Record<string, number | any[]>;
const fabricTypescriptRules: Record<string, number | any[]>;Rule Categories:
// .eslintrc.js
module.exports = require("@umijs/lint/dist/config/eslint");// .eslintrc.json
{
"extends": ["@umijs/lint/dist/config/eslint"]
}// .eslintrc.js
module.exports = require("@umijs/lint/dist/config/eslint/legacy");// .eslintrc.js
const baseConfig = require("@umijs/lint/dist/config/eslint");
module.exports = {
...baseConfig,
rules: {
...baseConfig.rules,
"no-console": "warn",
"react/prop-types": "off"
}
};**/*.{ts,tsx}**/*.{test,spec,unit,e2e}.{ts,tsx,js,jsx}/**
* Automatically detects Jest version for optimal rule configuration
* Falls back to version 29 if Jest is not found
* @returns Jest version number
*/
function detectJestVersion(): number;Behavior:
jest/package.json from current working directoryInstall with Tessl CLI
npx tessl i tessl/npm-umijs--lint