더북(TheBook)

3.5.2 path

폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈입니다. path 모듈이 필요한 이유 중 하나는 운영체제별로 경로 구분자가 다르기 때문입니다. 크게 윈도 타입과 POSIX 타입으로 구분됩니다. POSIX는 유닉스 기반의 운영체제들로 맥과 리눅스가 속해 있습니다.

윈도: C:\Users\ZeroCho처럼 \로 구분합니다.

POSIX: /home/zerocho처럼 /로 구분합니다.

따라서 맥이나 리눅스에서 예제를 실습하고 있다면 \ 대신 /가 나오는 것이 정상입니다.

이외에도 파일 경로에서 파일명이나 확장자만 따로 떼어주는 기능도 구현해둬서 직접 구현하지 않고도 편리하게 사용할 수 있습니다.

path 모듈의 속성과 메서드를 알아봅시다.

path.js

const path = require('path');

const string = __filename;

console.log('path.sep:', path.sep);
console.log('path.delimiter:', path.delimiter);
console.log('------------------------------');
console.log('path.dirname():', path.dirname(string));
console.log('path.extname():', path.extname(string));
console.log('path.basename():', path.basename(string));
console.log('path.basename - extname:', path.basename(string, path.extname(string)));
console.log('------------------------------');
console.log('path.parse()', path.parse(string));
console.log('path.format():', path.format({
  dir: 'C:\users\zerocho',
  name: 'path',
  ext: '.js',
}));
console.log('path.normalize():', path.normalize('C://users\\zerocho\\path.js'));
console.log('------------------------------');
console.log('path.isAbsolute(C:\):', path.isAbsolute('C:\'));
console.log('path.isAbsolute(./home):', path.isAbsolute('./home'));
console.log('------------------------------');
console.log('path.relative():', path.relative('C:\users\zerocho\path.js', 'C:\'));
console.log('path.join():', path.join(__dirname, '..', '..', '/users', '.', '/zerocho'));
console.log('path.resolve():', path.resolve(__dirname, '..', 'users', '.', '/zerocho'));

__filename, __dirname은 각각 현재 파일과 현재 폴더의 경로를 표시합니다. 이는 3.3.4절에서 다뤘습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.