[NodeJS] Path.join()와 Path.resolve() 차이

taeheeyoon·2021년 7월 10일
8

NodeJS

목록 보기
1/1
post-thumbnail

Path

path 모듈은 폴더와 파일의 경로를 지정해주는 모듈이다.

const path = require('path');

Path 모듈 메소드

path.join(경로, .. .): 여러 인자를 넣으면 하나의 경로로 합쳐준다.
path.resolve(경로, .. .): path.join()과 비슷하지만 차이가 있다.

path.parse(경로): 파일 경로를 root, dir, base, ext, name으로 분리한다.
path.format(객체): path.parse() 한 객체를 파일 경로로 합친다.

path.relative(기준경로, 비교경로): 경로를 두 개 넣으면 첫 번째 경로에서 두 번째 경로로 가는 방법을 알려준다.

join 과 resolve 차이점

resolve 는 / 를 절대경로로 처리, join 은 상대경로로 처리한다.

Path.join()

인자로 받은 경로들을 하나의 문자열 형태로 리턴한다.

path.join('/foo/bar', './baz'); 

실행 결과
/foo/bar/baz
path.join('/foo/bar', '/tmp/file/'); 

실행 결과
/foo/bar/tmp/file/

Path.resolve()

resolve도 join과 마찬가지로 인자로 받은 경로들을 문자열 헝태로 리턴한다.
차이점은 전달받은 경로인자들의 가장 오른쪽부터 왼쪽으로 합쳐진다.
경로인자들을 합쳐나가는중 / 를 만나면 절대경로로 인식해서 나머지 경로인자들을 무시한다.

만약 / 를 끝까지 만나지 못하면 /현재경로/생성된경로 형태로 결과를 리턴한다.

경로인자 '/foo/bar' 와 './baz' 를 합치는데 './baz' 의 맨 앞이 '/' 로 시작되지 않으므로 전체 인자를 리턴한다.

path.resolve('/foo/bar', './baz'); 

실행 결과
/foo/bar/baz

경로인자 '/foo/bar' 와 '/tmp/file/' 을 오른쪽부터 합치는데 '/tmp/file/' 맨 앞이 '/' 로 시작되므로 합치지 않고 '/tmp/file/' 만 반환한다. './' 는 현재 폴더의 상대 경로이다.

path.resolve('/foo/bar', '/tmp/file/'); 

실행 결과 
/tmp/file 

.. 은 현재경로에서 한단계 위의 상위경로를 의미한다.

resolvejoin 모두 .. 를 합치면 한 단계상위 경로로 알아서 인식해준다.

path.join('/temp','/abc','/name','dir','..');
path.resolve('/temp','/abc','/name','dir','..');

실행 결과
/temp/abc/name
/name 

__dirname 과 결합

__dirname 과 결합했을 때 join 은 모두 결합하는 반면, resolve은 오른쪽부터 /가 있는 부분까지만 결합한다.

path.join(__dirname,'/crr','/temp','/name','dir','..');
path.resolve(__dirname,'/crr','/temp','/name','dir','..'); 

실행 결과
path.join() : __dirname + /crr/temp/name
path.resolve() : __dirname + /name

path 대해 더 알아보기

profile
생각하는 대로 살지 않으면, 사는 대로 생각하게 된다.

0개의 댓글