为什么从CRA迁移到Next.js后eslint不工作?
我目前正在将一个应用程序从CRA迁移到Next.js。在使用CRA时,Eslint工作得非常出色(Eslint是现成的) 我想在Next.js应用程序中使用相同的CRA linting规则,因此我安装了为什么从CRA迁移到Next.js后eslint不工作?,next.js,create-react-app,eslint,Next.js,Create React App,Eslint,我目前正在将一个应用程序从CRA迁移到Next.js。在使用CRA时,Eslint工作得非常出色(Eslint是现成的) 我想在Next.js应用程序中使用相同的CRA linting规则,因此我安装了eslint config react app。我按照NPM页面上提供的说明进行操作: npm安装--保存dev eslint config react app@typescript eslint/eslint plugin@^4.0.0@typescript eslint/parser@^4.0
eslint config react app
。我按照NPM页面上提供的说明进行操作:
{“扩展”:“react app”}
谢谢 您可以在
包.json的脚本部分添加这样的命令:
“lint”:“eslint”
然后,您可以通过运行以下命令来检查eslint结果:
npm运行lint
您可以在程序包.json的脚本部分添加这样的命令:
“lint”:“eslint”
然后,您可以通过运行以下命令来检查eslint结果:
npm运行lint
好的,我找到了解决方案
当直接保存对文件的编辑时,我希望eslint输出显示在控制台中(就像CRA一样)。起初,我没有意识到Next.js在其网页包配置中没有指定eslint插件/加载程序,所以我通过添加我自己的插件/加载程序扩展了它们。现在一切正常,就像使用CRA时一样
我实际上使用了(尽管稍微修改了)CRA的配置,用于eslint网页包插件插件。如果其他人希望在Next.js中设置类似于CRA的eslint,请将以下内容添加到Next.config.js
文件中:
const path = require('path');
const fs = require('fs');
const ESLintPlugin = require('eslint-webpack-plugin')
const appDirectory = fs.realpathSync(process.cwd());
const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
module.exports = {
webpack(config) {
config.plugins.push(new ESLintPlugin({
// Plugin options
extensions: ['js', 'mjs', 'jsx', 'ts', 'tsx'],
eslintPath: require.resolve('eslint'),
context: resolveApp('src'),
cache: true,
cacheLocation: path.resolve(
resolveApp('node_modules'),
'.cache/.eslintcache'
),
// ESLint class options
cwd: resolveApp('.'),
resolvePluginsRelativeTo: __dirname,
baseConfig: {
extends: [require.resolve('eslint-config-react-app/base')],
rules: {},
},
}))
return config
}
}
请注意,使用上述软件时,您需要安装eslint config react app
及其依赖项(请参阅:)
最后,请注意,由于Next.js仅在开发中需要时呈现(编译)页面,因此eslint仅在页面显示在浏览器中时运行,如下所述:。这使得按照Roman的建议将以下脚本添加到package.json非常有用,如果您想对项目进行“完全扫描”
“lint”:“eslint.”
好的,所以我找到了解决方案
当直接保存对文件的编辑时,我希望eslint输出显示在控制台中(就像CRA一样)。起初,我没有意识到Next.js在其网页包配置中没有指定eslint插件/加载程序,所以我通过添加我自己的插件/加载程序扩展了它们。现在一切正常,就像使用CRA时一样
我实际上使用了(尽管稍微修改了)CRA的配置,用于eslint网页包插件插件。如果其他人希望在Next.js中设置类似于CRA的eslint,请将以下内容添加到Next.config.js
文件中:
const path = require('path');
const fs = require('fs');
const ESLintPlugin = require('eslint-webpack-plugin')
const appDirectory = fs.realpathSync(process.cwd());
const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
module.exports = {
webpack(config) {
config.plugins.push(new ESLintPlugin({
// Plugin options
extensions: ['js', 'mjs', 'jsx', 'ts', 'tsx'],
eslintPath: require.resolve('eslint'),
context: resolveApp('src'),
cache: true,
cacheLocation: path.resolve(
resolveApp('node_modules'),
'.cache/.eslintcache'
),
// ESLint class options
cwd: resolveApp('.'),
resolvePluginsRelativeTo: __dirname,
baseConfig: {
extends: [require.resolve('eslint-config-react-app/base')],
rules: {},
},
}))
return config
}
}
请注意,使用上述软件时,您需要安装eslint config react app
及其依赖项(请参阅:)
最后,请注意,由于Next.js仅在开发中需要时呈现(编译)页面,因此eslint仅在页面显示在浏览器中时运行,如下所述:。这使得按照Roman的建议将以下脚本添加到package.json非常有用,如果您想对项目进行“完全扫描”
“lint”:“eslint.”