#reactjs #webpack #eslint
#reactjs #webpack #eslint
Вопрос:
Итак, я столкнулся с проблемой с eslint в моем приложении react, и я смог решить ее после извлечения приложения и добавил некоторые параметры ESLintPlugin
в webpack.config
файл.
new ESLintPlugin({
// Plugin options
extensions: ['js', 'mjs', 'jsx', 'ts', 'tsx'],
formatter: require.resolve('react-dev-utils/eslintFormatter'),
eslintPath: require.resolve('eslint'),
context: paths.appSrc,
failOnError: false, <== this one
emitWarning: true, <== and this one
// ESLint class options
cwd: paths.appPath,
resolvePluginsRelativeTo: __dirname,
baseConfig: {
extends: [require.resolve('eslint-config-react-app/base')],
rules: {
...(!hasJsxRuntime amp;amp; {
'react/react-in-jsx-scope': 'error'
})
}
}
})
Мне было интересно, могу ли я сделать то же самое, но без необходимости извлекать приложение и использовать react-app-rewired
вместо него, у меня уже есть config-overrides.js
файл
module.exports = function override(webpackConfig) {
webpackConfig.module.rules.push({
test: /.mjs$/,
include: /node_modules/,
type: 'javascript/auto',
});
return webpackConfig;
};
есть ли аналогичный способ получить доступ к функции ESLintPlugin в webpack.config
файле и добавить к ней новые параметры через config-overrides.js
file?
Комментарии:
1. Будет ли добавление
.eslintrc
файла в корень вашего проекта работать?2. @NinoFiliu У меня уже есть
.eslintrc
файл, и все параметры компоновки находятся внутри него. мои вопросы касаютсяESLintPlugin
функции, которая существует внутриwebpack.config
файла. я отредактировал свой вопрос и добавил функцию.
Ответ №1:
Это работает для меня на реактивных сценариях «^ 5.0.0». То, что я сделал, это просто повторно инициализировать плагин eslint webpack в config-overrides.js
//config-overrides.js
const ESLintPlugin = require('eslint-webpack-plugin') //this package should be exist by default
module.exports = function override(config) {
for (let i = 0; i < config.plugins.length; i ) {
if (config.plugins[i].key !== "ESLintWebpackPlugin") continue;
const currentEslint = config.plugins[i];
config.plugins[i] = new ESLintPlugin({
...currentEslint.options, // using default eslint option
})
break;
}
return config;
}
путем повторной инициализации на config-overrides.js он читает ваш custom .eslintrc.json