본문 바로가기
개발(Development)/JS(자바스크립트)

[node.js] path 모듈 사용 방법 정리: 파일/디렉터리 경로 처리

by 카레유 2021. 7. 9.

node.js이 기본으로 제공하는 path모듈은

파일/폴더/디렉터리 등의 경로를 편리하게 설정할 수 있는 기능을 제공한다.

 

내 경우에도 node.js 개발 시에는

'안전하게' 경로를 설정하기위해 path모듈의 join(), resolve() 메서드는 꼭 활용하는 편이다.

 

*** 참고: 현재 파일/디렉터리 경로 확인 방법은 아래 글 참고

[node.js] 현재 파일/디렉터리 경로 확인 방법: __filename, __dirname


# path 모듈 사용 방법

: path는 node의 내장 모듈이므로 별도 설치 없이 바로 추출하여 사용할 수 있다.

 

0. 모듈 추출 방법

const path = require('path');

 

 

1.  path.sep 

: "현 운영체제의 경로 구분자" 확인 - 맥 /, 윈도우 \

console.log('path.sep:', path.sep);

// path.sep: /

 

 

2.  path.dirname('파일경로.확장자') 

: "파일이 위치한 폴더경로" 확인

console.log(path.dirname(__filename));

// /Users/curryyou/dev/VS_Code_Projects/TestProject

 

 

3-1.  path.basename('파일경로.확장자') 

: "파일명.확장자" 확인

console.log(path.basename(__filename));

// test.js

 

 

3-2.  path.basename('파일경로.확장자', '.확장자') 

: "파일 이름(확장자 제거)" 확인

console.log(path.basename(__filename, '.js'));

// test

 

 

4.  path.extname('파일경로.확장자') 

: "확장자" 확인

console.log(path.extname(__filename));

// .js

 

 

5.  path.parse(__filename) 

: 파일을 root(루트경로), dir(디렉터리경로), base(파일명.확장자), ext(.확장자), name(파일명) 으로 파싱한 객체 생성

console.log(path.parse(__filename));

/*
{
  root: '/',
  dir: '/Users/curryyou/dev/VS_Code_Projects/TestProject',
  base: 'test.js',
  ext: '.js',
  name: 'test'
}
*/

 

 

6.  path.format(객체) 

: 파싱된 파일 경로 객체를 다시 '문자열'로 합침

console.log(path.format(path.parse(__filename)));


// path.parse(__filename)로 파싱한 객체를 parth.format()으로 문자열로 변환
// /Users/curryyou/dev/VS_Code_Projects/TestProject/test.js

 

 

7.  path.normalize('경로') 

: //나 \ 등으로 경로 구분자를 잘못 사용해도, 알아서 정상 경로로 변환해줌

console.log(path.normalize('/user///hello/////ok/index.js'));

// /user/hello/ok/index.js

 

 

 ********************* 아래 메서드는 자주 사용 *********************

8.  path.join('경로', '경로', ...) 

: 여러개의 경로를 알아서 합쳐줌 

: 상위경로(..), 현재경로(.)도 알아서 처리

: 중간에 /를 만나면 앞의 경로에 이어서 '상대경로'로 처리

console.log(path.join(__dirname, '/a/b', '..', './b', 'c', '/d')); 

// /Users/curryyou/dev/VS_Code_Projects/TestProject/a/b/c/d

 

 

9.  path.resolve('경로', '경로', ...) 

: 여러개의 경로를 알아서 합쳐줌 

: 상위경로(..), 현재경로(.)도 알아서 처리

: join()과 차이점: 중간에 /를 만나면 앞에 경로 다 무시하고, '맨 처음부터' 다시 시작

console.log(path.resolve(__dirname, '/a/b', '..', './b', 'c', '/d')); 

// /d

 

 

 

 

댓글