버셀 스타일 가이드에서 어떤 것을 쓰는지 node_modules
안에 내용을 풀어서 한 눈에 보고자 정리해보았습니다.
next.js 는 next/babel
을 사용하고 있어서 삭제하였습니다.
"@vercel/style-guide/eslint/node",
"@vercel/style-guide/eslint/typescript",
"@vercel/style-guide/eslint/browser",
"@vercel/style-guide/eslint/react",
"eslint-config-turbo",
eslint-config-turbo
module.exports = {
extends: ["plugin:turbo/recommended"],
};
node.js
module.exports = {
extends: require.resolve('./_base'),
env: {
node: true,
},
};
typeScript
const { TYPESCRIPT_FILES } = require('./constants');
const requirePackage = require('./utils/require-package');
requirePackage('typescript', 'typescript');
module.exports = {
overrides: [
{
files: TYPESCRIPT_FILES,
extends: [
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-type-checked',
'plugin:@typescript-eslint/strict',
'plugin:@typescript-eslint/strict-type-checked',
'plugin:@typescript-eslint/stylistic',
'plugin:@typescript-eslint/stylistic-type-checked',
'plugin:import/typescript',
'prettier',
require.resolve('./rules/typescript'),
require.resolve('./rules/typescript/extension'),
require.resolve('./rules/typescript/import'),
require.resolve('./rules/typescript/strict'),
require.resolve('./rules/tsdoc'),
],
},
],
};
browser
module.exports = {
extends: require.resolve('./_base'),
env: {
browser: true,
},
};
react
module.exports = {
extends: [
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:jsx-a11y/recommended',
'plugin:import/react',
'prettier',
require.resolve('./rules/react'),
require.resolve('./rules/jsx-a11y'),
],
settings: {
react: {
version: 'detect',
},
},
};
_base
const { ECMA_VERSION, JAVASCRIPT_FILES } = require('./constants');
// See: https://github.com/eslint/eslint/issues/3458
require('@rushstack/eslint-patch/modern-module-resolution');
/**
* This is the base for both our browser and Node ESLint config files.
*/
module.exports = {
extends: [
'eslint:recommended',
'plugin:import/recommended',
'prettier',
require.resolve('./rules/best-practice'),
require.resolve('./rules/comments'),
require.resolve('./rules/es6'),
require.resolve('./rules/import'),
require.resolve('./rules/possible-errors'),
require.resolve('./rules/stylistic'),
require.resolve('./rules/unicorn'),
require.resolve('./rules/variables'),
],
env: {
[`es${ECMA_VERSION}`]: true,
},
// Report unused `eslint-disable` comments.
reportUnusedDisableDirectives: true,
// Tell ESLint not to ignore dot-files, which are ignored by default.
ignorePatterns: ['!.*.js'],
// Global settings used by all overrides.
settings: {
// Use the Node resolver by default.
'import/resolver': { node: {} },
},
// Global parser options.
parserOptions: {
ecmaVersion: ECMA_VERSION,
sourceType: 'module',
},
overrides: [
{
files: JAVASCRIPT_FILES,
parser: '@babel/eslint-parser',
parserOptions: {
requireConfigFile: false,
},
},
],
};