60 lines
2.1 KiB
JavaScript
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',
|
|
},
|
|
},
|
|
]);
|