TypeScript 가져오기 순서에 ESLint 사용

Migel Hewage Nimesha 2024년2월15일
TypeScript 가져오기 순서에 ESLint 사용

이 기사에서는 ESLint를 사용하여 가져오기 섹션을 쉽게 스타일 지정하거나 주문하는 방법에 대해 설명합니다. ESLint의 sort-importsimport/order 규칙에 대해 설명합니다.

TypeScript 가져오기 순서에 ESLint 사용

깨끗한 코드는 항상 더 좋습니다. 그것은 미래의 기여와 유지에 동기를 부여합니다. 따라서 일관된 코드 규칙과 서식 스타일을 유지하는 것이 중요한 측면입니다.

정적 코드 분석은 JavaScript 또는 TypeScript와 같은 해석 언어에도 유용합니다. 오류를 미리 식별하는 데 도움이 됩니다.

Linters는 이러한 유형의 문체 및 프로그램 문제를 식별하는 데 도움이 됩니다.

ESLint는 널리 사용되는 린터 중 하나입니다. TypeScript 코드 스타일 지정 문제를 식별하고 수정하는 데 사용되었습니다.

대규모 프로젝트에서 주요 스타일링 문제 중 하나는 가져오기를 관리하는 것입니다. 개발자들이 자주 와서 코드베이스에 기여합니다.

그들은 새로운 import 문을 추가하고 섹션이 커집니다. ESLint를 사용하여 가져오기 섹션을 보다 깔끔하게 구성할 수 있습니다.

TypeScript 가져오기 순서를 위한 ESLint sort-imports 규칙

ESLint 구성 파일을 사용하여 사용자 지정 규칙을 추가할 수 있습니다. 일반적으로 다음과 같이 JSON 형식의 규칙으로 구성된 eslintrc 파일이라고 합니다.

TypeScript ESLint 구성 파일

여러 가져오기를 가져오면 알파벳순으로 정렬된 경우 개발자의 작업이 쉬워집니다. 또한 가져오기 섹션에서 특정 구성원을 쉽게 찾을 수 있습니다.

일부 사용자 지정 구성이 포함된 sort-imports ESLint 규칙이 이를 수행합니다.

다음과 같이 import 문이 있다고 가정해 보겠습니다.

import 'module-1.js';
import * as employee from 'employee.js';
import * as company from 'company.js';
import {supervisor, agent} from 'company-context.js';
import {job, designation } from 'company-context-2.js';
import {bearer} from 'bearer.js';
import agent from 'agent.js';

import divide from 'utildivide.js';
import subscription from 'utilsub.js';
import add from 'utiladd.js';

다음으로 다음과 같이 sort-imports 규칙을 ESLint 구성 파일에 추가할 수 있습니다.

"rules": {
        "sort-imports": ["error", {
            "ignoreCase": true,
            "ignoreDeclarationSort": false,
            "ignoreMemberSort": false,
            "memberSyntaxSortOrder": ["none", "all", "multiple", "single"],
            "allowSeparatedGroups": false
        }]
    },

sort-import 규칙은 errorwarning 유형을 모두 일으킬 수 있습니다. 그 외에도 필요에 따라 구성할 수 있는 다른 선택적 매개변수가 있습니다.

ESLint가 대소문자와 가져오기 순서를 무시하도록 하려면 ignoreCase 매개변수를 true로 설정할 수 있습니다. 아래 명령을 ESLint에 실행하여 가져오기를 확인할 수 있습니다.

npm run lint

이렇게 하면 위의 예제 스크립트가 제대로 정렬되지 않았기 때문에 오류가 발생합니다. 위 명령과 함께 --fix 플래그를 전달하면 ESLint가 가져오기 문제를 수정합니다.

npm run lint --fix

따라서 위 가져오기의 올바른 버전은 다음과 같습니다.

import 'module-1.js';
import * as company from 'company.js';
import * as employee from 'employee.js';

import {agent, supervisor} from 'company-context.js';
import {designation, job} from 'company-context-2.js';
import agent from 'agent.js';
import {bearer} from 'bearer.js';

import add from 'utiladd.js';
import divide from 'utildivide.js';
import subscription from 'utilsub.js';

다음 순서에 따라 이러한 가져오기를 정렬합니다.

  1. 사용자 멤버 구문
  2. 첫 번째 멤버 또는 별칭을 기준으로 가나다순 정렬

TypeScript 가져오기 순서 지정을 위한 ESLint 가져오기/주문 규칙

import/order 규칙은 이전에 논의한 sort-imports 규칙보다 더 강력합니다. 이것은 내장 모듈, 외부 모듈, 상위 모듈 등과 같은 모듈의 특성에 따라 가져오기를 주문할 수 있는 다양한 옵션을 제공합니다.

따라서 이것은 sort-imports 규칙에서 본 알파벳순 정렬보다 더 발전된 것입니다.

이것을 ESLint에 연결하려면 eslint-plugin-import 플러그인을 설치해야 합니다. 다음과 같이 npm i 명령을 실행하여 프로젝트에 설치해 보겠습니다.

npm i eslint-plugin-import --save-dev

--save-dev는 이 종속성을 프로젝트의 package.json 파일에 저장합니다. 이제 다음과 같이 ESLint 구성 파일에서 import/order 규칙을 사용할 수 있습니다.

"rules": {
        "import/order": ["error",
            { "groups" :
            [
                "external",
                "builtin",
                "internal",
                "sibling",
                "parent",
                "index"
            ]
            }
        ]
    },

groups 섹션은 먼저 외부 모듈, 내장 모듈 등으로 가져오기를 주문하도록 구성되었습니다. 따라서 다음은 유효한 가져오기 섹션입니다.

// "external" modules
import _ from 'lodash';
import express from 'express';
// "builtin" modules
import fs from 'fs';
import path from 'path';
// "internal" modules
import employee from 'src/employee';
// "sibling" modules
import netsalary from './payrole';
import epf from './payrole/epf';
// modules from a "parent" directory
import admin from '../admin';
import role from '../../admin/role';
// 6. "index" file
import main from './';

위의 가져오기 섹션은 ESLint 구성에 따라 유효합니다.

따라서 ESLint를 사용하여 가져오기 섹션의 스타일을 지정하거나 쉽게 주문할 수 있습니다. 개발자의 삶을 쉽게 만들고 코드베이스를 처음 접하는 모든 사람들을 위한 지침 역할을 합니다.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

관련 문장 - TypeScript Import