새로운 강의는 이제 https://memi.dev 에서 진행합니다.
memi가 Vue & Firebase로 직접 만든 새로운 사이트를 소개합니다.

바로가기


npm del

1 분 소요

파일 처리를 많이 하다보니 디렉토리를 몽땅 날려야하는 상황이 종종 있다.

특정 디렉토리를 지정해서 그 하부 디렉토리, 파일등은 전부 지우는 것이 생각보다 힘든데..

이유는 하부 디렉토리가 몇개인지 깊이가 어디까지인지 등 끝을 알 수 없기 때문이다.

끝을 알수 있는 경우 for, 알수 없는 경우 while,do등을 주로 애용하는데..

while로 코딩해도 쉽지는 않다..

재귀함수

그런 상황에 프로그래머가 배울 게 있다면 재귀함수의 개념일 것이다.

foo라는 함수안에서 또 foo를 호출하는 것이다.

예시

var fs = require("fs");
var path = require("path");

var rmdir = function(dir) {
	var list = fs.readdirSync(dir);
	for(var i = 0; i < list.length; i++) {
		var filename = path.join(dir, list[i]);
		var stat = fs.statSync(filename);
		
		if(filename == "." || filename == "..") {
			// pass these files
		} else if(stat.isDirectory()) {
			// rmdir recursively
			rmdir(filename); //자기자신을 호출
		} else {
			// rm fiilename
			fs.unlinkSync(filename);
		}
	}
	fs.rmdirSync(dir);
};

출처 https://gist.github.com/tkihira/2367067

npm del

잘 수정해서 가공하여 자신의 모듈로 만들어 쓰는 것도 좋지만..

원리를 파악했다면 npm을 검색해 본다..

누군가 공통된 주제의 니즈를 모듈로 만들어 놨을 테니까..

del 이라는 모듈이 검색되었다..

https://www.npmjs.com/package/del

설치

npm install --save del

역시나 원하는 리커시브 지우기 외에도 다양한 기능이 있다.

무시할 폴더, 특정 확장자 지우기등

하지만 뭔가를 지우는 건 정말 무서운 일이다.

그래서 dry run이라는 기능으로 사전 점검이 가능하다..

dryRun

const del = require('del');
 
del(['tmp/*.js'], {dryRun: true}).then(paths => {
    console.log('Files and folders that would be deleted:\n', paths.join('\n'));
});

지워야할 대상이 리스팅되며 실제 지워지지는 않는다.

결론

일반적으로 사용해야되는 기능은 npm module을 잘 찾는 것이 현명하지만..

라이브러리 의존도가 너무 높은 것도 프로그래머의 성장을 방해한다..

선 구현,파악 후 정리된 라이브러리를 사용하는 것이 좋다.

태그: , , ,

카테고리:

업데이트:

댓글남기기