Node.js에서 __dirname을 사용하는 방법
소개
__dirname
은 현재 실행 중인 파일이 포함된 디렉토리의 절대 경로를 알려주는 환경 변수입니다.
이 기사에서는 Node.js 프로젝트에서 __dirname
을 구현하는 방법을 살펴봅니다.
전제 조건
이 자습서를 완료하려면 다음이 필요합니다.
- Node.js에 대한 일반적인 지식. Node.js에 대해 자세히 알아보려면 Node.js로 코딩하는 방법 시리즈를 확인하세요.
이 튜토리얼은 Node.js v17.2.0 및 npm
v8.2.0에서 검증되었습니다.
1단계 - 프로젝트 설정
이 자습서에서는 다음 샘플 디렉터리 구조를 사용하여 __dirname
이 작동하는 방식을 살펴봅니다.
dirname-example
├──index.js
├──public
├──src
│ ├──helpers.js
│ └──api
│ └──controller.js
├──cronjobs
│ └──hello.js
└──package.json
터미널에 dirname-example
디렉토리를 생성하여 시작할 수 있습니다.
- mkdir dirname-example
프로젝트 디렉터리로 이동합니다.
- cd dirname-example
Node.js 프로젝트로 초기화합니다.
- npm init --yes
이제 실험할 디렉터리와 파일을 만듭니다.
2단계 — __dirname 사용
__dirname
을 사용하여 파일이 있는 디렉토리를 확인할 수 있습니다.
src
디렉토리의 api
하위 디렉토리에서 controller.js
를 만들고 편집합니다.
console.log(__dirname) // "/Users/Sam/dirname-example/src/api"
console.log(process.cwd()) // "/Users/Sam/dirname-example"
그런 다음 스크립트를 실행합니다.
- node src/api/controller.js
cronjobs
디렉터리에서 hello.js
를 만들고 편집합니다.
console.log(__dirname) // "/Users/Sam/dirname-example/cronjobs"
console.log(process.cwd()) // "/Users/Sam/dirname-example"
그런 다음 스크립트를 실행합니다.
- node cronjobs/hello.js
__dirname
은 어떤 파일을 콘솔로 내보내느냐에 따라 다른 값을 가집니다. process.cwd()
메서드도 값을 반환하지만 대신 프로젝트 디렉터리를 반환합니다. __dirname
변수는 항상 파일이 있는 절대 경로를 반환합니다.
3단계 - 디렉터리 작업
이 섹션에서는 __dirname
을 사용하여 새 디렉토리를 만들고 가리키고 새 파일을 추가하는 방법을 살펴봅니다.
새 디렉토리 만들기
index.js
파일에 새 디렉터리를 만들려면 __dirname
을 path.join()
의 첫 번째 인수로 삽입하고 두 번째로 새 디렉토리:
const fs = require('fs');
const path = require('path');
const dirPath = path.join(__dirname, '/pictures');
fs.mkdirSync(dirPath);
이제 __dirname
을(를) 절대 경로로 포함하는 mdirSync()
메서드를 호출한 후 pictures
라는 새 디렉터리를 만들었습니다.
디렉토리 가리키기
또 다른 고유한 기능은 디렉토리를 가리키는 기능입니다. index.js
파일에서 변수를 선언하고 __dirname
값을 path.join()
의 첫 번째 인수로 전달합니다. 두 번째로 정적 파일을 포함하는 디렉토리:
express.static(path.join(__dirname, '/public'));
여기서는 정적 파일이 포함된 public
디렉토리를 가리키도록 __dirname
을 사용하도록 Node.js에 지시합니다.
디렉토리에 파일 추가
기존 디렉토리에 파일을 추가할 수도 있습니다. index.js
파일에서 변수를 선언하고 첫 번째 인수로 __dirname
을 포함하고 두 번째로 추가하려는 파일을 포함합니다.
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, '/pictures');
fs.openSync(filePath, 'hello.jpeg');
openSync()
메서드를 사용하면 파일이 디렉터리에 없으면 파일이 추가됩니다.
결론
Node.js는 디렉토리를 만들고 가리키는 방법을 제공합니다. 그리고 모듈식 환경 변수를 사용하여 기존 디렉터리에 파일을 추가합니다.
자세한 내용은 Express.js 프레임워크의 __dirname
을 확인하세요.