Files
2026-07-13 13:22:34 +08:00

60 lines
2.1 KiB
JavaScript

const { defineConfig } = require('eslint/config');
const docusaurusEslintPlugin = require('@docusaurus/eslint-plugin');
const mlflowDocsPlugin = require('./eslint-plugin-mlflow-docs');
const js = require('@eslint/js');
const { FlatCompat } = require('@eslint/eslintrc');
const unusedImports = require('eslint-plugin-unused-imports');
const reactPlugin = require('eslint-plugin-react');
// Prevent autofixing as it can corrupt file contents
if (process.argv.includes('--fix') && !process.env.MLFLOW_DOCS_ALLOW_ESLINT_FIX) {
throw new Error(
'ESLint autofix is disabled because it can corrupt file contents ' +
'(e.g., https://github.com/sweepline/eslint-plugin-unused-imports/issues/115). ' +
'If you want to use auto-fix anyway, run this command and ' +
'carefully review ALL changes before committing:\n\n' +
'MLFLOW_DOCS_ALLOW_ESLINT_FIX=1 npm run eslint -- --fix',
);
}
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});
module.exports = defineConfig([
{
ignores: ['**/*-ipynb.mdx'],
},
{
files: ['**/*.md', '**/*.mdx'],
extends: compat.extends('plugin:mdx/recommended'),
plugins: {
'@docusaurus': docusaurusEslintPlugin,
'mlflow-docs': mlflowDocsPlugin,
'unused-imports': unusedImports,
react: reactPlugin,
},
settings: {
'mdx/code-blocks': true,
react: {
version: 'detect',
},
},
rules: {
'@docusaurus/no-html-links': 'error',
'mlflow-docs/valid-notebook-url': 'error',
'mlflow-docs/use-base-url-for-images': 'error',
'mlflow-docs/prefer-apilink-component': 'error',
'mlflow-docs/imports-first': 'error',
'unused-imports/no-unused-imports': 'error',
// These React rules prevent component imports from being flagged as unused.
// Required when using eslint-plugin-unused-imports with JSX/React code.
// https://www.npmjs.com/package/eslint-plugin-unused-imports
'react/jsx-uses-vars': 'error',
'react/jsx-uses-react': 'error',
},
},
]);