서론
어디든 개발하다보면 File을 써야 할 상황이 온다. 그러면 아무 폴더에다가 저장하지 않고 ~/Documents/upload/image 와 같은 정리된 디렉토리 계층을 사용할 것이다. 문제는 여기서 발생한다. 정리된 디렉토리 계층을 사용하려면 디렉토리가 여러 개가 되어야 하는데 Node.js에서 지원하는 fs.mkdir은 여러 디렉토리를 한 번에 생성해주지 않는다. ~/Documents/upload/image 를 생성해서 사용하려면 ~/Documents는 원래 있는 거니 상관 없고, upload와 image 두 가지 디렉토리를 생성해줘야 한다. 그래서 패키지 mkdirp를 따로 추가하여 사용하고 있었는데 Node.js 10.12 버전부터는 recursive 옵션을 true로 주면 되네? ㅋㅋㅋㅋㅋ 아 이래서 문서를 잘 보고 버전업도 잘 해야 하는구나 싶다.
사용 방법 (recursive 옵션)
function mkdir( dirPath ) {
const isExists = fs.existsSync( dirPath );
if( !isExists ) {
fs.mkdirSync( dirPath, { recursive: true } );
}
}
mkdir( './test/mkdir' );
위의 코드는 간단하게 디렉토리가 존재하는지 확인하고, 없다면 생성하는 코드이다. node.js에서는 xxxxSync 라는 함수를 사용하면 callback으로 사용하지 않고 또는 promise로 변환하지 않아도 사용할 수 있어서 편하지만 비동기 방식이 아닌 동기 방식이라 코드가 블락돼서 응답이 멈출 수 있다. 또는 성능이 느려질 수 있다. 따라서 웬만하면 안 쓰는 게 좋지만 간단한 예제를 위해서 사용했다.
결론
원래 이 포스트은 mkdirp 패키지를 설치하고 사용 방법을 쓰려고 했으나 Node.js 10.12부터 recursive 옵션이 생겨 급 변경하여 fs.mkdir에 옵션을 넣는 방법만 소개하고 마치려고 한다. 여러분 안녕~~
'Development > Javascript' 카테고리의 다른 글
Angular HttpClient를 통해 plain text를 가져오는 방법 (0) | 2021.05.28 |
---|---|
[Typescript] RegExp의 함수를 사용할 때 주의할 점 (2) | 2020.05.06 |
[Typescript] 간단하게 리팩토링 한 내용 (0) | 2019.07.04 |
[mac] nvm으로 node.js 버전 바꾸기 (0) | 2019.06.29 |
[Javascript] for-of에서 index값 사용하고 싶을 때 (0) | 2019.06.26 |