Поиск всех неиспользуемых файлов в проекте

RedDeveloper
17.04.2023 13:09
Поиск всех неиспользуемых файлов в проекте

Количество файлов в проекте растет по мере его развития. И если быть по-настоящему честным, их продвижение происходит в геометрической прогрессии быстрее, чем сам проект.

Кроме того, работая в составе большой команды, разработчики иногда забывают удалять файлы, которые больше не нужны.

Как мы можем решить эту проблему? Как обнаружить все неиспользуемые файлы?

Первое решение, которое приходит на ум, - это поиск каждого файла, где он использовался, чтобы определить, какие из них импортируются или используются в проекте.

Это кажется чрезвычайно утомительным.

Поэтому я решил создать простую утилиту на JS, которая покажет мне, какие файлы сейчас используются, а какие просто бесполезны.

Основная концепция метода заключалась в том, чтобы сначала создать пакетный файл, чтобы определить, какие файлы используются, а затем извлечь из него исходный текст.

Я использовал Webpack, чтобы определить, какие файлы используются в пакете.

Структура проекта:

Структура проекта

Полный код можно найти здесь .

Используя Webpack, я создал исходные карты и сохранил их в папке dist.

Используя Webpack я создал исходные карты и сохранил их в папке dist

Следующим шагом будет чтение каждого файла .map, расположенного в папке dist. После открытия файла .map вы увидите следующее:

Следующим шагом будет чтение каждого файла map расположенного в папке dist После

Вы можете видеть, что ключевые источники содержат подробную информацию о файлах, использованных для создания этого пакета.

Мы должны сформировать массив путей к файлам, читая каждый файл .map. Исходный код

Мы должны сформировать массив путей к файлам читая каждый файл map Исходный код

Теперь вызовем функцию findUsedFileFromSourceMap.

Теперь вызовем функцию findUsedFileFromSourceMap

Выходные данные будут выглядеть примерно так:

Выходные данные будут выглядеть примерно так

После этого нам нужно преобразовать каждый путь в абсолютный путь. Это то, что мы можем сделать:

После этого нам нужно преобразовать каждый путь в абсолютный путь Это то что мы можем

Каждый путь будет преобразован в абсолютный путь.

Теперь у меня есть все файлы, которые используются при создании пакета, но мне также нужны все файлы, которые есть в папке проекта.

Это не так сложно, все, что мне нужно сделать, это прочитать файлы моей директории рекурсивно и сохранить их в массиве.

Примечание: Если вам нужно исключить файлы/папки из списка всех файлов проекта. Пожалуйста, передайте массив путей в качестве второго аргумента в getAllProjectFiles
Это не так сложно все что мне нужно сделать это прочитать файлы моей директории

Теперь нам просто нужно вызвать эту функцию

Теперь нам просто нужно вызвать эту функцию

Выходом функции getAllProjectFiles будет:

Выходом функции getAllProjectFiles будет

Теперь мы преобразуем эти пути в абсолютные. Для этого воспользуемся функцией path.resolve().

Теперь, когда у нас есть все необходимое, осталось только сравнить пути к файлам.

Теперь когда у нас есть все необходимое осталось только сравнить пути к файлам

Неиспользуемые файлы:

Неиспользуемые файлы

Ура!

Вы можете скачать и играть с кодом.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.