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: '../../..'