Frontend/React

React Craco 설정하기

freestrokes 2022. 1. 31. 22:59
반응형

 

React Craco 설정하기

 

React에서 Craco를 이용하여 절대경로를 설정하는 방법에 대해 알아보겠습니다.

 

 

 

1. Craco


Craco(Create React App Configuration Override)는 보다 쉽게 CRA 설정이 가능하도록 지원해주는 라이브러리입니다.

 

GitHub - gsoft-inc/craco: Create React App Configuration Override, an easy and comprehensible configuration layer for create-rea

Create React App Configuration Override, an easy and comprehensible configuration layer for create-react-app - GitHub - gsoft-inc/craco: Create React App Configuration Override, an easy and compreh...

github.com

 

일반적으로 CRA에서 page, component 등을 import할 때 상대경로를 이용하는데 다음과 같이 구조에 따라 depth가 깊어져서 가독성이 떨어지고 사용이 번거로워지는 경우가 있습니다.

import SelectBoxCategory from '../../../../components/select-box/SelectBoxCategory';
import SelectBoxSingle from '../../../../components/select-box/SelectBoxSingle';
import Pagination from '../../../../components/pagination/Pagination';
import {CommonService} from '../../../../services/commonService';
import {StringUtils} from '../../../../utils/stringUtils';
import {DateUtil} from '../../../../utils/dateUtils';

 

이러한 경우에 Craco를 사용하면 절대경로를 이용한 경로 설정이 가능합니다.

 

 

1.1. Craco 설치

 

아래 명령어를 실행해서 craco를 설치해줍니다.

$ yarn add @craco/carco
$ yarn add craco-alias

 

 

1.2. craco.config.js 작성

 

루트 디렉터리 하위에 craco.config.js 파일을 다음과 같이 작성해줍니다.

const CracoAlias = require('craco-alias');

module.exports = {
  plugins: [
    {
      plugin: CracoAlias,
      options: {
        source: 'tsconfig',
        tsConfigPath: 'tsconfig.paths.json',
      },
    },
  ],
};

 

 

1.3. tsconfig.paths.json 작성

 

다음으로 tsconfig.paths.json 파일을 작성해줍니다. path에 따라 사용할 alias를 지정해주는데 일반적으로 가독성과 에러 방지를 위해 src 하위의 디렉터리 단위로 설정해줍니다.

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@hooks/*": ["src/hooks/*"],
      "@pages/*": ["src/pages/*"],
      "@services/*": ["src/services/*"],
      "@utils/*": ["src/utils/*"],
      "@screens/*": ["src/screens/*"],
      ...
    }
  }
}

 

 

1.4. tsconfig.json 설정

 

앞서 작성한 tsconfig.paths.json 파일의 사용을 위해 tsconfig.json에 extends 프로퍼티를 다음과 같이 추가해줍니다.

{
  "extends": "./tsconfig.paths.json",
  "compilerOptions": {
    ...
  },
  "include": [
  	...
  ]
}

 

 

1.5. package.json 설정

 

마지막으로 package.json의 scripts 프로퍼티를 다음과 같이 수정해줍니다.

{
  "dependencies": {
    ...
  },
  "scripts": {
    "start": "craco start",
    "build:dev": "craco start",
    "build:prod": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject"
  },
  "devDependencies": {
    ...
  }
}

 

여기까지 설정하고 애플리케이션을 실행해보면 다음과 같이 craco로 설정한 절대경로의 사용이 가능한 것을 확인할 수 있습니다.

import SelectBoxCategory from '@components/select-box/SelectBoxCategory';
import SelectBoxSingle from '@components/select-box/SelectBoxSingle';
import Pagination from '@components/pagination/Pagination';
import {CommonService} from '@services/commonService';
import {StringUtils} from '@utils/stringUtils';
import {DateUtil} from '@utils/dateUtils';

 

이상으로 React에서 Craco를 이용하여 절대경로를 설정하는 방법에 대해 알아봤습니다.

 

 

※ Reference

 

 

반응형