NodeJS path 모듈

lim1313·2021년 9월 8일
0

TILPLUS

목록 보기
17/40

path 모듈

path

: 파일과 Directory 경로 작업을 위한 유틸리티로, 경로작업을 할 때 사용

const path = require('path');

__direname

: file명을 제외한 절대경로

__filename

: file명을 포함한 절대경로

console.log(__dirname); 
// /Users/ano/temp


console.log(__filename); 
// /Users/ano/temp/directory.js


// ES6 modules일 경우 아래처럼 사용
const __dirname = path.resolve();

path.resolve([…paths])

: 여러 인자를 넣으면 경로를 묶어 root 경로를 고려한 새로운 경로를 반환한다.
: path.join()과 비슷한데 resolve는 다음과 같은 특징이 있다.

  • 오른쪽 인자 부터 읽어가며 절대경로를 만든다.

(아래의 예제에서 /a 를 root 폴더라고 가정하지만 /a' 가 root 폴더가 아닌 경우 working directory를 기준으로 root 폴더까지의 경로를 붙여서 절대경로를 만들어 반환한다.)

// 인자 c 부터 읽어 들인다.
path.resolve('/a', 'b', 'c');   
// Returns: /a/b/c

path.resolve('/a', 'b', 'c');   
// /a 루트 폴더가 아닌 경우 root folder 까지의 경로를 붙여서 반환함 
// 현재 해당 파일을 실행시키는 경로가 User/ano/temp/directory.js 라면
// Returns: User/ano/temp/a 를 반환

// /b가 절대경로 이므로 /b/c가 반환되고 '/a'는 무시된다.
path.resolve('/a', '/b', 'c');    
// Returns: /b/c

// 전달된 인자에 '/folder_name' 형태의 인자가 없으므로, working directory를 추가하여 절대경로 생성
path.resolve('a', 'b', 'c');  //  {current_working_directory}/a/b/c

path.join([…paths])

: 여러 인자를 넣으면 하나의 경로를 합쳐 반환하다. 상대경로를 표시하는 .. 와 현 위치를 표시하는 . 도 반영한 결과를 리턴한다.

path.join('/foo', 'bar', 'baz/asdf', 'quux');
// Returns: '/foo/bar/baz/asdf/quux'

// 마지막 인자의 .. 가 현재 위치보다 한단계 위 상위 폴더를 의미하므로 
// '/foo/bar/baz/asdf/quux' 보다 한 단계가 위 폴더의 경로가 반환됨
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// Returns: '/foo/bar/baz/asdf'

path.sep

: 경로의 구분자(seperator) 이다. Windows는 \ , POSIX 는 / 값을 담고 있다.
: 운영체제별로 경로를 표기하는 표기법이 달라질 수 있다.

path.delimiter

: 환경 변수의 구분자이다.
: 운영체제별로 경로를 표기하는 표기법이 달라질 수 있다.
: 환경 변수를 구분하는 구분자로 : , colon,
: Windows 는 세미콜론(;)을 사용하고, POSIX 는 콜론(:)을 사용한다.

path.dirname(paths)

: 현재 파일이 위치한 폴더 경로를 보여준다.

// __filename : '/Users/ano/temp/directory.js'
path.dirname(__filename);
// Returns: '/Users/ano/temp'

path.extname(paths)

: 파일의 확장자를 보여준다.

// __filename : '/Users/ano/temp/directory.js'
path.extname(__filename);
// Returns: '.js'

path.basename(path[, ext])

: 파일의 이름(확장자 포함)을 보여준다. 파일의 이름만 표시하고 싶다면 basename의 두 번째 인자로 파일의 확장자(ext)를 넣어주면 된다.

// __filename : '/Users/ano/temp/directory.js'
path.basename(__filename);
// Returns: 'directory.js'

// path.extname(__filename): '.js'
path.basename(__filename, path.extname(__filename));
// Returns: 'directory'

path.parse()

: 파일 경로를 인자로 받아, root, dir, base, ext, name으로 분리한 후 해당 내용을 담은 객체값을 리턴한다.

path.parse('/home/user/dir/file.txt');
// Returns:
// { root: '/',
//   dir: '/home/user/dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }
parsed.root;
parsed.name;

path.format(pathObject)

: path.parse() 한 객체를 인자로 받아 합쳐서 경로 문자열(string)을 리턴한다.
: object형태로 이루어진 주소를 다시 string형태로 변환

// __filename : '/Users/ano/temp/directory.js'
// path.prase(__filename) Returns: 
/*
{
  root: "/", 
  dir: "/Users/ano/temp", 
  base: "directory.js", 
  ext: ".js", 
  name: "directory"
}
*/
path.format(path.parse(__filename));
// Returns: '/Users/ano/temp/directory.js'

path.normalize(path)

: / 나 \ 를 실수로 여러번 사용했거나 혼용한 경우 정상적인 경로로 변환해준다.

path.nomalize('\\Users///ano\\\temp/directory.js');
// Returns: '/Users/ano/temp/directory.js'

path.isAbsolute(path)

: 파일의 경로가 절대경로인지, 상대경로인지 true or false 로 반환해준다.

// '/Users/ano/temp/directory.js'
path.isAbsolute('/Users');  //Returns: true 
path.isAbsolute('../ano');   //Returns: false 

path.relative(from, to)

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

// '/Users/ano/temp/directory.js'
path.relative('/Users/ano/temp/directory.js', '/Users');  
// Returns: '../../..'

참고)
https://p-iknow.netlify.app/node-js/path-moudle/

profile
start coding

0개의 댓글