경로 종류

process.cwd()         : js/ts 파일을 실행한 터미널의 경로
process.env.INIT_CWD  : npm 스크립트가 실행된 최초 디렉토리(그냥 node로 실행하면 undefined)
require.main.path     : Node.js 애플리케이션의 진입점 파일이 있는 디렉토리(실행 터미널 위치와 무관)
require.main.filename : Node.js 애플리케이션의 진입점 파일 경로(실행 터미널 위치와 무관)
__dirname             : 현재 스크립트 파일이 위치한 디렉토리(실행 터미널 위치와 무관)
__filename            : 현재 스크립트 파일의 전체 경로(실행 터미널 위치와 무관)
module.filename       : __filename과 동일

예시

// ts-node 실행 환경
process.cwd()        : C:\\Users\\username\\project-root
process.env.INIT_CWD : C:\\Users\\username\\project-root
require.main.path    : C:\\Users\\username\\project-root\\src
require.main.filename: C:\\Users\\username\\project-root\\src\\app.ts
__dirname            : C:\\Users\\username\\project-root\\src\\current-dir
__filename           : C:\\Users\\username\\project-root\\src\\current-dir\\current-file.ts
module.filename      : C:\\Users\\username\\project-root\\src\\current-dir\\current-file.ts

// nodejs 빌드 환경
process.cwd()        : C:\\Users\\username\\project-root
process.env.INIT_CWD : C:\\Users\\username\\project-root
require.main.path    : C:\\Users\\username\\project-root\\dist
require.main.filename: C:\\Users\\username\\project-root\\dist\\app.js
__dirname            : C:\\Users\\username\\project-root\\dist\\current-dir
__filename           : C:\\Users\\username\\project-root\\dist\\current-dir\\current-file.js
module.filename      : C:\\Users\\username\\project-root\\dist\\current-dir\\current-file.js

해당 파일이 존재하는 디렉토리

__dirname

해당 파일의 경로

__filename

메인 스크립트 파일이 실행되는 디렉토리

require.main.path

메인 스크립트 파일 경로

require.main.filename

디렉토리의 상위 경로

import * as path from "path";
path.resolve("current/path", "..");