node.js path모듈과 경로설정

JunSeok·2022년 6월 15일
0
post-thumbnail

이미지출처

node.js에서 경로 이야기를 하기 전에 절대경로와 상대경로의 개념을 먼저 알아야 한다.

절대경로

어떠한 웹페이지나 파일이 가지고 있는 고유한 경로를 말한다.

즉, 처음부터 시작하여 목적지까지의 절대적인 경로를 의미한다.

특징으로 최상위 /를 포함하고 있다.

MacOS의 경우 /를 사용
EX) /Users/cloudoort/Desktop/projects/api/index.ts

Window의 경우 \를 사용
C:\Desktop\projects\api\index.ts

그냥 내 컴퓨터에서 파일이 위치한 주소라고 생각하면 이해하기 편하다

상대경로

현재 위치한 곳을 기준으로 상대적으로 표현한 경로이다.
주로 프로젝트 내에서 import 할 때 쓰인다.

쉽게 말해, 자신을 기준으로 자신보다 앞에 있는지, 뒤에 있는지 표현한 경로이다

예를 들어
지금 A파일에 위치해 있고, 현 주소가 /Users/cloudoort/Desktop/projects/api/A이다
현 위치에서 projects/app 폴더 안의 B라는 파일의 상대 경로를 적고싶다.

파일B의 상대 경로는 현재 위치한 파일 A를 기준으로 적어주면 되는 것이다.
../app/B
(api폴더를 나가고 / app폴더 안으로 들어가서 /B 파일에 도달한다.)

참고
/: 포트 다음의 폴더 경로
./: 현재 위치
../: 현재 위치의 상위 디렉토리
../../: 현재 위치에서 두 단계 상위 디렉토리

node.js의 _dirname, __filename

node.js는 모듈 관계가 있는 경우가 많아 현재 파일의 경로나 파일명을 알아야 하는 경우가 많다.

node.js는 그러한 키워드로서 _dirname과 __filename을 통해 경로에 대한 정보를 제공한다.

// __filename은 file 명을 포함한 절대 경로 정보를 제공한다.
console.log(__filename); // /Users/cloudoort/Desktop/projects/api/index.ts

// __dirname은 file 명을 제외한 절대 경로 정보를 제공한다.
consoel.log(__dirname); // /Users/cloudoort/Desktop/projects/api

path 모듈

모든 기술은 특정 문제를 해결하기 위해 탄생한다.

path 모듈은 운영체제 별로 경로 구분자가 달라 생기는 문제를 해결하기 위해 등장했다.
(위에서 절대경로를 이야기 할 때, 운영체제별로 최초 디렉토리가 다르다는 것을 알 수 있었다.)

path 모듈은 내장 모듈로 별도의 설치 없이 import하여 사용가능하다.

path.join([...paths])

path인자로 받은 주소(string)들을 합쳐준다.
각 운영체제 별로 다른 디렉토리를 합쳐줄 때 생기는 문제를 유연하게 해결해주면서 경로를 합쳐준다.

import path from 'express';

path.join('path1', 'path2', ...)

path.basename(path)

파일명을 반환한다.

import path from 'express';

console.log(path.basename(__filename));
// app.js

path.dirname(path)

디렉토리 주소를 반환한다.

import path from 'express';

console.log(path.dirname(api));
// /Users/cloudoort/Desktop/projects/api

path.extname(path)

파일 확장자 명을 반환한다.

import path from 'express';

console.log(path.dirname(api));
// js

path.relative(from, to)

두 경로를 인자로 전달하면, 첫 번째 경로에서 두 번째 경로로 가는 방법을 결과로 리턴한다.

// from: <string> / to: <string> / return: <string>
import path from 'express';

path.relative('/Users/cloudoort/Desktop/projects/api', '/Users')
// return: '../../../../'

Reference

절대경로와 상대경로
[JSP] 절대경로와 상대경로
p-iknow's devlog
기억 휘발 방지소

profile
최선을 다한다는 것은 할 수 있는 한 가장 핵심을 향한다는 것

0개의 댓글