ESLint 설정

1. ESLint init (npm init @eslint/config)

import globals from "globals";
import pluginJs from "@eslint/js";

export default [
  {languageOptions: { globals: globals.node }},
  pluginJs.configs.recommended,
];

2. .eslint.config.js 파일 기본 설정

export default [
  ...
  {
	  // 적용할 파일 설정
    files: ['src/**/*.js'],
    // 적용할 규칙 설정
     rules: {
      // 들여쓰기 깊이 제한
      'max-depth': ['error', 2],
      // 함수의 매개변수 개수 제한
      'max-params': ['error', 3],
      // 함수의 길이 제한
      'max-lines-per-function': ['error', { max: 15 }],
    },
  },
];

import { FlatCompat } from '@eslint/eslintrc';
import path from 'path';
import { fileURLToPath } from 'url';

// mimic CommonJS variables -- not needed if using CommonJS
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const compat = new FlatCompat({
  baseDirectory: __dirname,
});

export default [

    // flat해서 적용
    ...compat.extends('eslint-config-airbnb-base'),
    
    {
	    files: ['eslint.config.js'],
	    rules: {
	      // eslint.config.js 파일에서만 'no-underscore-dangle' 규칙을 비활성화
	      'no-underscore-dangle': 'off',
	      // package.json 파일이 위치한 프로젝트 루트 디렉토리 경로를 명시
	      'import/no-extraneous-dependencies': ['error', { packageDir: __dirname }],
    },
  },
];
export default [
	{
		languageOptions: {
			globals: {
				...globals.node,
        // 'jest' is not defined 오류
				...globals.jest,
      },
    },
    rules: {
      // package import를 제외한 모든 import 구문에 대해 확장자를 사용하도록 강제
      'import/extensions': ['error', 'ignorePackages'],
    },
  }
];

Prettier 설정