path 모듈은 폴더와 파일의 경로를 지정해주는 모듈이다.
const path = require('path');
path.join(경로, .. .)
: 여러 인자를 넣으면 하나의 경로로 합쳐준다.
path.resolve(경로, .. .)
: path.join()과 비슷하지만 차이가 있다.
path.parse(경로)
: 파일 경로를 root, dir, base, ext, name으로 분리한다.
path.format(객체)
: path.parse() 한 객체를 파일 경로로 합친다.
path.relative(기준경로, 비교경로)
: 경로를 두 개 넣으면 첫 번째 경로에서 두 번째 경로로 가는 방법을 알려준다.
resolve 는 /
를 절대경로로 처리, join 은 상대경로로 처리한다.
인자로 받은 경로들을 하나의 문자열 형태로 리턴한다.
path.join('/foo/bar', './baz');
실행 결과
/foo/bar/baz
path.join('/foo/bar', '/tmp/file/');
실행 결과
/foo/bar/tmp/file/
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
.. 은 현재경로에서 한단계 위의 상위경로를 의미한다.
resolve
와 join
모두 .. 를 합치면 한 단계상위 경로로 알아서 인식해준다.
path.join('/temp','/abc','/name','dir','..');
path.resolve('/temp','/abc','/name','dir','..');
실행 결과
/temp/abc/name
/name
__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