프로그래밍 언어/NODE JS

path

· 코딩마이데이

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

  • 윈도: C:\Users\Zzangchae처럼 \로 구분합니다.
  • POSIX: /home/zzangchae처럼 /로 구분합니다.

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: "D\\공부\\Nodejs\\3-5",
    name: "path",
    ext: ".js",
  })
);
console.log(
  "path.normalize()",
  path.normalize("D\\공부\\Nodejs\\3-5\\path.js")
);
console.log("-----------------------------------");
console.log("path.isAbsolute(D:\\):", path.isAbsolute("D:\\"));
console.log("path.isAbsoulte(./home):", path.isAbsolute("./home"));
console.log("-----------------------------------");
console.log(
  "path.relative():",
  path.relative("D\\공부\\Nodejs\\3-5\\path.js", "D:\\")
);
console.log(
  "path.zoin():",
  path.join(__dirname, "..", "..", "/users", ".", "/zzang")
);
console.log(
  "path.resolve():",
  path.resolve(__dirname, "..", "users", ".", "/zzang")
);

 

__filename, __dirname은 각각 현재 파일과 현재 파일의 경로를 표시합니다.

콘솔

$ node path
path.sep: \
path.delimiter: ;
-----------------------------------
path.dirname(): D:\공부\Nodejs\3-5
path.extname(): .js
path.basename(): path.js
path.basename - extname: path
-----------------------------------
path.parse() {
  root: 'D:\\',
  dir: 'D:\\공부\\Nodejs\\3-5',
  base: 'path.js',
  ext: '.js',
  name: 'path'
}
path.format() D\공부\Nodejs\3-5\path.js
path.normalize() D\공부\Nodejs\3-5\path.js
-----------------------------------
path.isAbsolute(D:\): true
path.isAbsoulte(./home): false
-----------------------------------
path.relative(): ..\..\..\..\..\..\..\..
path.zoin(): D:\공부\users\zzang
path.resolve(): D:\zzang

 

  • path.sep: 경로의 구분자입니다. 윈도는 \, POSTIX는 \입니다.
  • path.delimiter: 환경 변수의 구분자입니다. process.env.PATH를 입력하면 여러 개의 경로가 이 구분자로 구분되어 있습니다. 윈도는 세미콜론(:)이고, POSTIX는 콜론(:)입니다.
  • path.dirname(경로): 파일이 위치한 폴더 경로를 보여줍니다.
  • path.extname(경로): 파일의 확장자를 보여줍니다.
  • path.basename(경로, 확장자): 파일의 이름을(확장자 포함)을 표시합니다. 파일의 이름만 표시하고 싶다면 basename의 두 번째 인수로 파일의 확장자는 넣으면 됩니다.
  • path.parse(경로): 파일 경로를 root, dir, base, ext, name으로 분리합니다.
  • path.format(객체): path.parse()한 객체를 파일 경로를 합칩니다.
  • path.normalize(경로): /나 \를 실수로 여러분 사용했거나 혼용했을 때 장상적인 경로로 변환합니다.
  • path.isAbsoulte(경로): 파일의 경로가 절대경로인지 상대경로인지를 true나 false로 알립니다.
  • path.relative(기존경로, 비교경로): 경로를 두 개 넣으면 첫 번째 경로에서 두 번째 경로로 가는 방법을 알립니다.
  • path.join(경로, ...): 여러 인수를 넣으면 하나의 경로로 합칩니다. 상대경로인..(부모 디렉터리)과 .(현위치)도 알아서 처리합니다.
  • path.respolve(경로, ...): path.join()과 비슷하지만 차이가 있습니다. 차이점은 다음에 나오는 Note에서 설명합니다.

가끔 윈도에서 POSTIX 스타일 경로를 사용할 때가 있고, 그 반대일 때도 있습니다. 이러한 경우 윈도에서는 path.posix.sep이나 path.win32.sep이나 path.win32.join()과 같이 사용하면 됩니다.

노드는 require.main 파일을 기준으로 상대 경로를 인식합니다. 따라서 require.main과는 다른 리렉터리의 파일이 상대 경로를 갖고 있다면 예상과 다르게 동작할 수 있습니다. 

'프로그래밍 언어 > NODE JS' 카테고리의 다른 글

querystring  (0) 2025.04.04
url  (0) 2025.04.01
OS  (0) 2025.03.26
process  (0) 2025.03.23
module, exports, require  (0) 2025.03.20