본문 바로가기
프로그래밍/TypeScript

TypeScript 프로젝트 환경 구성하기

by hustle-ing 2023. 5. 30.

TypeScript 프로젝트 환경 구성하기

1. 프로젝트 폴더를 만든 후 `npm init -y`로 npm을 사용할 준비를 한다.

2. `npm install typescript --save-dev`로 TypeScript를 설치한다.

3. 프로젝트 루트 디렉토리에 tsconfig.json 파일을 생성한 후 밑의 내용을 붙여 넣는다.

//tsconfig.json
//compilerOptions 내의 속성은 자유롭게 커스텀 할 수 있습니다.
{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "./dist"
  },
  "include": [
    "src/**/*"
  ]
}

 

 

TypeScript ESLint와 Prettier 설정하기

1. VSCode 에디터를 사용할 것이므로, 확장 프로그램인 ESLint를 설치한다.

2. cmd + shift + p를 누른 다음 Preferences: Open User Settings(JSON)으로 이동한다.

3. 아래의 내용을 추가해준다.

{
  // ... 
  "editor.codeActionsOnSave": {
      "source.fixAll.eslint": true
  },
  "eslint.alwaysShowStatus": true,
  "eslint.workingDirectories": [
      {"mode": "auto"}
  ],
  "eslint.validate": [
      "javascript",
      "typescript"
  ],
}

4. VSCode 에디터 설정 중 format on save가 설정되어 있다면 설정을 해제해준다.

5. Prettier 확장 프로그램을 설치한다.

6. 아래와 같이 입력하여 몇 가지 필요한 프리셋과 라이브러리를 설치한다.

npm i -D @babel/core @babel/preset-env @babel/preset-typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint prettier eslint-plugin-prettier

7. 프로젝트 폴더 밑에 .eslintrc.js 파일을 만들고 아래의 내용을 붙여 넣는다.

module.exports = {
  root: true,
  env: {
    browser: true,
    node: true,
    jest: true,
  },
  extends: [
    'plugin:@typescript-eslint/eslint-recommended',
    'plugin:@typescript-eslint/recommended',
  ],
  plugins: ['prettier', '@typescript-eslint'],
  rules: {
    'prettier/prettier': [
      'error',
      {
        singleQuote: true,
        tabWidth: 2,
        printWidth: 80,
        bracketSpacing: true,
        arrowParens: 'avoid',
      },
    ],
    '@typescript-eslint/no-explicit-any': 'off',
    '@typescript-eslint/explicit-function-return-type': 'off',
    'prefer-const': 'off',
  },
  parserOptions: {
    parser: '@typescript-eslint/parser',
  },
};

해당 파일 내부에는 prettier와 typescript-eslint에 대한 설정이 되어 있으며, 리액트를 위한 설정도 일부 첨가되어 있다. rules 내에 작성되어 있는 내용들은 옵션이다.

댓글