[javascript] Lodash의 디렉터리 관리 함수들과 사용 예제

Lodash는 JavaScript 유틸리티 라이브러리로, 다양한 유틸리티 함수를 제공하여 개발자들이 더 효율적으로 코드를 작성할 수 있도록 도와줍니다. 이번에는 Lodash의 디렉터리 관리 함수들과 그 사용 예제에 대해 알아보겠습니다.

1. Lodash의 디렉터리 관리 함수

Lodash는 디렉터리 관리에 유용한 다양한 함수들을 제공합니다. 이 중에서 몇 가지 주요 함수들을 살펴보겠습니다.

1.1. _.differenceBy()

이 함수는 첫 번째 배열에서 두 번째 배열에 존재하지 않는 요소들을 반환합니다. 이때 배열 요소들이 객체로 구성된 경우, 특정 속성을 기준으로 차이를 계산할 수 있습니다.

사용 예제:

const array1 = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }];
const array2 = [{ 'x': 1 }];

_.differenceBy(array1, array2, 'x');
// 결과: [{ 'x': 2 }, { 'x': 3 }]

1.2. _.partition()

이 함수는 주어진 배열을 조건에 따라 두 개의 배열로 분할합니다. 조건을 만족하는 요소들은 첫 번째 배열에, 그렇지 않은 요소들은 두 번째 배열에 저장됩니다.

사용 예제:

const numbers = [1, 2, 3, 4, 5, 6];

const [even, odd] = _.partition(numbers, (num) => num % 2 === 0);

console.log(even);
// 결과: [2, 4, 6]

console.log(odd);
// 결과: [1, 3, 5]

2. Lodash 디렉터리 관리 함수 사용 예제

이제 Lodash의 디렉터리 관리 함수들을 사용하는 실제 예제를 알아보겠습니다.

2.1. 디렉터리 내 중복 파일 찾기

디렉터리 내에 중복된 파일을 찾아내는 함수를 작성해보겠습니다.

const fs = require('fs');
const _ = require('lodash');

function findDuplicateFiles(directory) {
  const files = fs.readdirSync(directory);
  const fileNameGroups = _.groupBy(files, (file) => fs.lstatSync(`${directory}/${file}`).size);

  const duplicateFiles = _.filter(fileNameGroups, (group) => group.length > 1);

  return _.flattenDeep(duplicateFiles);
}

const duplicateFiles = findDuplicateFiles('/path/to/directory');
console.log(duplicateFiles);

위 예제에서는 fs 모듈을 사용하여 디렉터리 내의 파일을 읽어오고, _.groupBy() 함수를 사용하여 파일 크기를 기준으로 파일들을 그룹화했습니다. 그 후, _.filter() 함수를 사용하여 그룹 중에서 길이가 1 이상인 그룹을 필터링하여 중복 파일을 찾았습니다.

2.2. 파일 확장자별로 디렉터리에 정리하기

특정 디렉터리 내에 있는 파일들을 확장자별로 디렉터리에 정리하는 함수를 작성해보겠습니다.

const fs = require('fs');
const path = require('path');
const _ = require('lodash');

function organizeFilesByExtension(directory) {
  const files = fs.readdirSync(directory);

  _.forEach(files, (file) => {
    const extension = path.extname(file);
    const targetDir = `${directory}/${extension}`;

    if (!fs.existsSync(targetDir)) {
      fs.mkdirSync(targetDir);
    }

    fs.renameSync(`${directory}/${file}`, `${targetDir}/${file}`);
  });
}

organizeFilesByExtension('/path/to/directory');

위 예제에서는 fs 모듈과 path 모듈을 사용하여 파일 경로를 다루고, _.forEach() 함수를 사용하여 디렉터리 내의 파일들을 반복하면서 확장자를 가져오고, 해당 확장자를 이름으로 하는 디렉터리를 생성한 후 파일을 해당 디렉터리로 이동시켰습니다.

3. 참고자료

이제 Lodash의 디렉터리 관리 함수들과 사용 예제에 대해 알아보았습니다. Lodash를 사용하여 디렉터리와 파일을 효율적으로 관리할 수 있으니, 프로젝트에서 활용해보시기 바랍니다.