학부 때 C를 사용할 때, 습관적으로 파일명으로 스네이크 케이스를 사용했다. 최근에서야 안 것인데 자바스크립트(node.js) 코드는 카멜 케이스와 파스칼 케이스를 사용하지만, 파일명으로는 대개 케밥 케이스를 사용한다. 이 참에 파일명을 전부 케밥 케이스로 바꾸려고 한다.
*혹시 헷갈리는 분을 위해 스네이크 케이스 vs 케밥 케이스
ex) 'solve problem fast.js'라는 파일명을 사용하고자 할 때.
스네이크 케이스(Snake case): 영어 소문자와 언더스코어('_') 로 이름을 붙이는 방식.
=>'solve_problem_fast.js'
케밥 케이스(Kebab case): 영어 소문자와 하이픈('-')으로 이름을 붙이는 방식.
=>'solve-problem-fast.js'
둘 다 파일명을 정하는 방식이다. 윈도우나 맥이나 파일명의 대소문자를 구분하지 않고 사용한다. 따라서 카멜케이스나 파스칼 케이스의 경우 사용하는 의미가 없기 때문에 파일명을 붙일 땐 스네이크 케이스나 케밥 케이스 중에 하나를 사용한다.
내 현재 상황
JS_Datastructure_Algorithm폴더 내에 여러 js파일들이 있다. 이 폴더 안에, 스네이크 케이스로 명명된 파일들을 전부 케밥 케이스로 바꿀 것이다. snake_to_kebab.js라는 파일을 하나 만들어서 코드를 작성할 것이다.
전반적인 컨셉은 '-'를 '_'로 바꿔주는 것이다. 단 node_modules의 안에 파일이름은 바꾸지 않아야 한다.
코드
const fs = require('fs');
const path = require('path');
// 대상 폴더 경로
// 코드를 퍼가서 사용하신다면 아래의 folderPath를 원하는 폴더 경로로 설정해주세요.
const folderPath = path.dirname(__filename);
console.log(`대상 폴더 경로: ${folderPath}`);
// 폴더 내의 파일 목록 가져오기
fs.readdir(folderPath, (err, files) => {
if (err) {
console.error(`해당 폴더를 읽을 수 없습니다`, err);
return;
}
// 파일명을 케밥 케이스로 변경한다.
files.forEach(file => {
const sourcePath = path.join(folderPath, file);
const targetPath = path.join(folderPath, convertToKebabCase(file));
// 파일명 변경
if (sourcePath !== targetPath) {
fs.rename(sourcePath, targetPath, err => {
if (err) {
console.log(`파일명 변경 실패: ${file}`, err);
} else {
console.log(`파일명 변경 완료: ${file} -> ${path.basename(targetPath)}`);
}
});
}
});
});
// 스네이크 케이스를 케밥 케이스로 변환하는 함수
function convertToKebabCase(snakeCase) {
return snakeCase.replace(/_/g, '-');
}
실행결과
node_modules와 package관련 파일빼고는 전부 정상적으로 변경됐다. 이런 파일은 애초에 rename을 하지 못하도록 OS에서 처리하기 때문에 건너 뛴다. 이걸로 파일명 변경완료!
'유용한 코드 모음' 카테고리의 다른 글
openAI api로 아웃페인팅을 (야매로) 싸게 이용하고 구현하기 (0) | 2024.02.19 |
---|