나는 데스크톱은 Windows, 노트북은 MacOS를 사용하고 있다.
그러다보니 같은 프로젝트를 서로 다른 OS로 개발해야할 일이 생기는데, Windows에서와 MacOS와 다른 결과가 나오는 문제가 생겼다.
Windows 로컬 환경에서 돌린 결과와 Vercel에서 배포하는 결과가 다른 문제는 덤이었다.
이런저런 시도 끝에 결국 파일을 불러오는 경로에 문제가 있다는 것을 알게 되었고,
Windows는 C:\asdfa\asdfa\sdf
이런 식으로 경로를 표시하는 한편,
MacOS(Linux, Unix 기반)는 C:/asdfa/asdfa/sdf
이런 식으로 표시한다는 것을 알게 되었다.
이걸 해결하려면 OS를 파악해서 매번 다른 경로를 입력해야 하는가?
그건 너무나도 비효율적이라고 생각했다.
찾아보니 Node.js의 path라는 모듈에서 이런 경로를 자동으로 생성해주는 방법이 존재했다.
Node.js의 path 모듈
여기서 이번 블로그를 만들 때 내가 직접 사용해봤던 함수를 소개하려 한다.
path.join([...paths])
const BASE_URL = path.join("src", "posts", "blog");
path.join()
은 인자로 받은 문자열들을 해당 플랫폼에 맞는 구분자로 연결하여 리턴한다.
Windows라면 "\src\posts\blog"
(혹은 "\\src\\posts\\blog"
),
MacOS라면 "/src/posts/blog"
로 출력될 것이다.
기본적으로 파일 경로를 생성할 때 자주 이용했다.
path.sep
const [categoryPath, slug] = filePath.split(path.sep);
path.sep
은 해당 플랫폼에 맞는 구분자를 리턴한다.
그래서 내가 가공해야 하는 파일 경로의 구분자가 '\'인지 '/'인지 명확하지 않을 때,
아니면 직접 변수에 구분자를 붙여 경로를 만들어야 할 때 path.sep
을 사용했다.
결과적으로 나는 위 함수들을 이용해 Windows 환경에서 개발한 결과를 문제 없이 MacOS에서도 똑같이 볼 수 있었고,
Vercel에서 배포할 때 경로가 달라서(Vercel에서 배포할 때 경로를 Windows와 다르게 찾는 듯함) 생긴 문제도 해결되었다.
당장 필요해서 찾아보고 사용했던 함수는 이정도가 있었지만,
나중에 사용해보고 싶은 함수도 많이 있었다. 더 자세한 정보는 Node.js 공식 문서를 참고하자.