path 깔끔하게 관리하기

2024. 2. 5. 13:18· frontEnd/React
목차
  1. ☀️ 일반적인 path 경로설정
  2. 🌈 디렉토리 구조
  3. 🌟 경로 설정
  4. ✨ 경로설정 오류
  5. 🌻 경로설정 오류 해결

 

☀️ 일반적인 path 경로설정

특정 컴포나 파일을 import 할 때 경로를 설정한다. 이때 파일의 위치에 따라 경로가 상대적이기 때문에 지저분한 경우가 많다. 초기 디렉토리를 구성 할 때 컴포의 성격에 따라 파일을 구분지어 분류하기 때문에 경로는 동일한 경우가 대부분이다.

따라서 경로를 깔끔하게 설정해봤다.

//경로 관리 전
import Navbar from '././././layouts/Navbar'
import Header from '././././layouts/Header'
import Button from '././././components/Button'
import Banner from '././././components/Banner'

//경로 관리 후
import Navbar from '@layouts/Navbar'
import Header from '@layouts/Header'
import Button from '@components/Button'
import Banner from '@components/Banner'

 

 

🌈 디렉토리 구조

react-create-app(RCA)를 통해서 초기 프로젝트를 셋팅했기 때문에 파일구조가 이렇게 됐다.(+ ts 사용)

front
 L node_module
 L public
 L src
    L components
    L hooks
    L layouts
    L ...
 L package.json
 L package-lock.json
 L tsconfig.json

 

🌟 경로 설정

여기선 타입스크립트를 사용하기 때문에 tsconfig.json에서 경로설정을 해준다.

두가지를 넣어주는데

1) baseUrl : tsconfig.json위치를 기준으로 path에 넣을 경로를 입력한다.

   (나는 src안에 파일들이 들어있어서 아래처럼 baseurl 설정했음)

2) paths : import 경로에 축약해서 넣을 path들을 작성한다.

   ex) @hooks/* 를 쓰면 import Navbar from @hooks/Navbar 이렇게 사용할 수 있음.

//tsconfig.json
{
  "compilerOptions": {
/.../
    "baseUrl":"./src/",
    "paths": {
      "@hooks/*": ["hooks/*"],
      "@components/*": ["components/*"],
      "@layouts/*": ["layouts/*"],
      "@pages/*": ["pages/*"],
      "@utils/*": ["utils/*"],
      "@typings/*": ["typings/*"]
    }
/.../
  },
}

 

✨ 경로설정 오류

그런데 tsconfig.json에서만 바꾸면 이런 에러를 만날 수가 있다. 해당 위치에서 module을 찾을 수 없다는건데 이유는 webpack에서도 경로를 설정해줘야하기 때문.

 

🌻 경로설정 오류 해결

(craco라이브러리를 사용하는 방법도 있는데  여기선 직접해봤다.)

RCA를 통해서 프로젝트를 셋팅하면 webpack가 포함되어 있다. 그런데 일반적으로 webpack.config.js은 폴더에서 숨겨져있다. 아래 명령어로 표시할 수 있는데 주의! 한번 표시되면 다시 못 감춘다.

npm run eject

 

이게 표시될 것!

이후, webpack.config.js에서 경로를 추가해준다.

파일 내 검색을 통해 alias를 찾고 아래 위치에 작성해주면 끝!

alias: {
   	  'react-native': 'react-native-web',
          ...(isEnvProductionProfile && {
          'react-dom$': 'react-dom/profiling',
          'scheduler/tracing': 'scheduler/tracing-profiling',
        }),
        ...(modules.webpackAliases || {}),
        /여기에 경로 추가하자!!
        '@hooks': path.resolve('src', 'hooks'),
        '@components': path.resolve('src', 'components'),
        '@layouts': path.resolve('src', 'layouts'),
        '@pages': path.resolve('src', 'pages'),
        '@utils': path.resolve('src', 'utils'),
        '@typings': path.resolve('src', 'typings'),
      },

 

'frontEnd > React' 카테고리의 다른 글

3초안에 화면 안뜨면 떠난다 : CodeSplitting  (1) 2024.04.14
날짜와 시간 포맷 커스텀하기 :Day.js 라이브러리  (1) 2024.02.14
실시간 채팅 기능 : Socket.io  (0) 2024.01.09
Return 문은 Hook 아래쪽에 있어야한다 :Hook 규칙  (2) 2024.01.08
어떤 페이지에 있는지 쉽게 알려주기 : NavLink  (0) 2024.01.05
  1. ☀️ 일반적인 path 경로설정
  2. 🌈 디렉토리 구조
  3. 🌟 경로 설정
  4. ✨ 경로설정 오류
  5. 🌻 경로설정 오류 해결
'frontEnd/React' 카테고리의 다른 글
  • 3초안에 화면 안뜨면 떠난다 : CodeSplitting
  • 날짜와 시간 포맷 커스텀하기 :Day.js 라이브러리
  • 실시간 채팅 기능 : Socket.io
  • Return 문은 Hook 아래쪽에 있어야한다 :Hook 규칙
kim_genius_
kim_genius_
#29살 #비전공자 #새로운 도전 #day by day , in everyday, I am getting better and better
kim_genius_
Genius.Dev
kim_genius_
전체
오늘
어제
  • 분류 전체보기 (33)
    • books (0)
    • AI (2)
      • deepLearning (2)
    • backEnd (1)
      • Node.js (1)
    • frontEnd (26)
      • HTML_CSS_JS (5)
      • React (17)
      • TypeScript (2)
      • Next.js (2)
    • and so on (4)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
kim_genius_
path 깔끔하게 관리하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.