새로운 강의는 이제 https://memi.dev 에서 진행합니다.
memi가 Vue & Firebase로 직접 만든 새로운 사이트를 소개합니다.
npm del
파일 처리를 많이 하다보니 디렉토리를 몽땅 날려야하는 상황이 종종 있다.
특정 디렉토리를 지정해서 그 하부 디렉토리, 파일등은 전부 지우는 것이 생각보다 힘든데..
이유는 하부 디렉토리가 몇개인지 깊이가 어디까지인지 등 끝을 알 수 없기 때문이다.
끝을 알수 있는 경우 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을 잘 찾는 것이 현명하지만..
라이브러리 의존도가 너무 높은 것도 프로그래머의 성장을 방해한다..
선 구현,파악 후 정리된 라이브러리를 사용하는 것이 좋다.
댓글남기기