소스코드를 깔끔하게 유지하려면 절대 경로를 사용 할 수 밖에 없다.
절대 경로를 사용하려면 tsconfig.json과 webpack의 설정을 건들여야 한다.
단순하게 tsconfig.json의 paths 설정을 바꾸면 된다 생각했지만 React 실행시 강제적으로 paths 설정을 지워 버린다. (충격...)
React의 create-react-app으로 생성된 프로젝트는 내부적으로 webpack을 사용한다.
하지만 숨겨놨기 때문에 react 프로젝트를 eject ($ yarn eject) 하지 않는 이상 건드릴 수가 없다.
eject를 하면 해결 가능하나,
한번 eject를 하면 React의 버전업에 대한 자동으로 다른 구성요소 및 설정이 변경되는 장점을 잃어버리게 된다.
이를 해결하기 위해 나온 모듈이 react-app-rewired, craco이다.
둘다 사용 해 본 결과 craco를 사용하기로 결정했다. tsconfig의 paths 설정을 바로 사용하기 위해 craco-alias도 함께 설치 해 준다.
설치
$ yarn add @craco/craco $ yarn add --dev craco-alias |
사용법
package.json 파일을 수정한다. (react-script를 craco로 변경)
{
...
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "react-scripts eject"
},
...
}
tsconfig.paths.json 파일을 루트에 생성하고 paths 설정을 한다.
{
"compilerOptions": {
"baseUrl": "src",
"paths": {
"~/*": [
"./*"
],
"@utils/*": [
"utils/*"
],
"@res/*": [
"res/*"
],
"@locales": [
"locales"
]
}
}
}
tsconfig.json 맨 윗 라인에 확장 옵션을 넣는다.
{
"extends": "./tsconfig.paths.json",
"compilerOptions": {
},
...
}
craco.config.js 파일을 루트에 생성 후 webpack 설정을 변경하면 된다.
const CracoAlias = require('craco-alias');
module.exports = {
plugins: [
{
plugin: CracoAlias,
options: {
source: 'tsconfig',
// as you know, CRA doesn't allow to modify tsconfig's compilerOptions
// so you should create a separate JSON file and extend tsconfig.json from it
// and then just specify its path here:
tsConfigPath: 'tsconfig.paths.json',
},
},
],
};
이제 다음과 같이 사용 할 수 있다!! WOW!
import { useAppSettings, getAppSettings } from '~/settings';
import { containAlphabet } from '@utils/string-util';
import { useLocalization } from '@locales';
'Developments > React.js' 카테고리의 다른 글
React.js 에서 Animation 사용하기 (0) | 2020.04.21 |
---|---|
React.js와 React Native 컴포넌트를 동일한 style 코드로 적용하자 (0) | 2019.11.08 |
React.js 필수 추천 패키지 (0) | 2019.09.27 |
React.js를 React Native 처럼 사용하기 (0) | 2019.09.24 |
React Router 사용하기 (0) | 2019.08.13 |