앞선 아티클에서 path 모듈에 대한 기본적인 내용을 살펴보았습니다. 앞의 내용을 바탕으로 path 모듈에서 사용하는 세부적인 구분자와 명령어들을 살펴보도록 하겠습니다.
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\\nozerolsope', name: 'path', ext: '.js', }));
console.log('path.normalize():', path.normalize('C://users\\\\nozerolsope\\\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\\nozerolsope\\path.js', 'C:\\'));
console.log('path.join():', path.join(__dirname, '..', '..', '/users', '.', '/nozerolsope'));
console.log('path.resolve():', path.resolve(__dirname, '..', 'users', '.', '/nozerolsope'));
/* 출력
path.sep: \
path.delimiter: ;
-----
path.dirname(): D:\XXX\XXXXXXX
path.extname(): .js
path.basename(): example.js
path.basename extname: example
-----
path.parse() {
root: 'D:\\',
dir: 'D:\\XXX\\XXXXX',
base: 'example.js',
ext: '.js',
name: 'example'
}
path.format(): C:\users\nozerolsope\path.js
path.normalize(): C:\users\nozerolsope\path.js
-----
path.isAbsolute(C:\): true
path.isAbsolute(./home): false
-----
path.relative(): ..\..\..
path.join(): D:\users\nozerolsope
path.resolve(): D:\nozerolsope
*/
· path.sep : 경로의 구분자를 출력한다. 윈도우는 \, POSIX는 /
· path.delimiter : 환경 변수의 구분자를 출력한다. process.env.PATH를 입력하면 여러 경로가 이 구분자로 구분된다. 윈도우는 세미콜론( ; ), POSIX는 콜론( : )
· path.dirname(경로) : 현재 파일이 위치한 폴더의 경로를 출력한다.
· path.extname(경로) : 파일의 확장자를 출력한다.
· path.basename(경로, 확장자) : 확장자를 포함한 파일명을 출력한다. 만일 파일명만 출력하려면, 두 번째 인수로 확장자를 전달한다.
· path.parse(경로) : 경로 전체를 파싱하여 root / dir / base / ext / name으로 구분하여 출력한다.
· path.format(객체) : path.parse( )한 객체를 파일 경로로 다시 합친다.
· path.normalize(경로) : /나 \를 실수로 복수 사용하거나 혼용 시 정상 경로로 변환한다.
· path.isAbsolute(경로) : 파일 경로가 절대 경로인지 상대 경로인지를 true 또는 false로 출력한다. 절대일 경우 true.
· path.relative(기준경로, 비교경로) : 첫 번째 경로에서 두 번째 경로로 가는 방법 출력
· path.join(경로, ...) : 여러 인수를 넣으면 하나의 경로로 합친다. ' .. (부모 디렉토리)'와 ' . (현 위치)'도 알아서 처리한다.
· path.resolve(경로, ...) : path.join( )과 비슷하지만, 차이가 있다.
위의 내용 중, path.join( )과 path.resolve( )에 대해서 추가로 설명하겠습니다. 두메서드 모두 인수를 넣으면 경로를 생성한다는 공통된 기능을 갖고 있습니다. 하지만, join과 resolve의 동작에는 차이가 있습니다.
일단 join은 기본적으로 상대 경로나 절대 경로에 상관없이 경로를 결합합니다. 인수로 전달된 모든 경로를 단순히 결합하여 하나의 경로로 반환합니다. 이 과정에서 ' .. ' 또는 ' . '도 알아서 처리합니다. 위 예제에서도 부모 디렉터리로 이동 후 /users와 /nozeroslope를 붙여서 경로를 생성했습니다.
하지만 path.resolve( )의 경우 절대 경로를 생성하기 때문에, 조금 다르게 동작합니다. 기본적으로 path.resolve( )는 절대경로를 생성하는데, 만일 ' / '를 만나면 해당 부분을 루트로 인식합니다.
const path = require('path');
const absolutePath = path.resolve('/', 'folder1', 'folder2', 'file.txt');
console.log(absolutePath);
// 출력 예: '/folder1/folder2/file.txt'
const path = require('path');
const absolutePath = path.resolve('/folder1', '/folder2', 'file.txt');
console.log(absolutePath);
// 출력 예: '/folder2/file.txt'
하지만 /가 없는 경우에는 아래와 같이 출력됩니다.
const path = require('path');
// 현재 작업 디렉토리를 기준으로 경로를 해석하여 절대 경로를 생성
const absolutePath = path.resolve('folder1', 'folder2', 'file.txt');
console.log(absolutePath);
// 출력 예: '/Users/username/project/folder1/folder2/file.txt'
path.join( )의 예시는 아래와 같습니다.
const path = require('path');
// 경로 부분들을 전달하여 파일 경로 생성
const filePath = path.join('/usr', 'local', 'bin', 'node');
console.log(filePath);
// 출력: /usr/local/bin/node
'Programming > Node.js' 카테고리의 다른 글
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 5 [url 1/2] (0) | 2024.04.17 |
---|---|
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 4 (0) | 2024.04.16 |
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 2 (0) | 2024.04.10 |
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 1 (0) | 2024.04.09 |
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : 기타 (0) | 2024.04.04 |