🤔 내가 하고 싶은 것
기존에 매우 길었던 public path를 좀 더 단순화하여 나타내고 싶었다.
파일을 빌드할 때에도 콘솔에 다음과 같은 메세지가 나타났다.
files in the public directory are served at the root path.
Instead of /public/json/KoreaRegion/SigunguJSON.ts, use /json/KoreaRegion/SigunguJSON.ts.
기존의 public path
import { IMetroCityTypes } from "../../../public/json/KoreaRegion/MetroCitiesJSON";
변경하고 싶은 public path
import { IMetroCityTypes } from "/json/KoreaRegion/MetroCitiesJSON";
💩 시도했으나 실패한 것
- 환경 변수를 사용하여 public path 설정하기
- import 구문에 환경 변수를 설정하는 방법이 있다.
import { IMetroCityTypes } from `${process.env.PUBLIC_URL}/json/KoreaRegion/MetroCitiesJSON`;
- 하지만 TypeScript 에러가 발생하게 된다. import 구문에는 general string 만이 올 수 있다.
- public-url-loader 라이브러리 설치하기
- 두 번째 방법으로 라이브러리를 설치하는 방법이 있다.
- 이 라이브러리는 Webpack 에서 제공하는 라이브러리이므로, Vite 환경에서는 사용할 수 없다.
⚡ Vite 설정
Vite 는 vite.config.ts
환경에서 설정을 해야 한다.
import { defineConfig } from "vite";
import path from "path";
export default defineConfig({
base: "/public/path/",
resolve: {
alias: {
"/json/": path.resolve("SCRAPMARKET_FRONT", "public/json/"),
},
},
});
base와 resolve 를 추가해주었다.
💙 TypeScript 설정
vite만 설정하면 typescript 가 인식할 수 없다.
typescript도 인식할 수 있도록 tsconfig.json
에서 설정한다.
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"/json/*": ["./public/json/*"]
}
},
}
위 코드를 추가해주었다.
💡 결론
위의 절차를 밟으면 내가 원하던 경로로 public 폴더에 접근할 수 있다.
하지만 조사를 하다보니 이러한 asset 들은 public 폴더 말고 src 폴더 안에서 관리하는 게 더 편리하다는 의견을 종종 볼 수 있었다.
그래서 public과 src 에서 정적 파일을 관리할 때의 장단점을 더 조사할 예정이다.
'React' 카테고리의 다른 글
[ TanStack Query ] TanStack Query로 Infinite scroll 기능 구현하기 (with React, TypeScript) (0) | 2023.04.03 |
---|---|
[ React ] 정적 파일을 public 폴더에 관리하기 vs src 폴더에 관리하기 (0) | 2023.03.27 |
[Context vs Recoil] 컴포넌트 상태 관리 하기 (0) | 2023.02.23 |
[React Vite] CRA에서 Vite로 마이그레이션(migration) 하기 (0) | 2023.01.31 |
[React Vite] React Vite TypeScript 환경에서 SPA 프로젝트 세팅하기 (0) | 2023.01.27 |
Comment