Количество файлов в проекте растет по мере его развития. И если быть по-настоящему честным, их продвижение происходит в геометрической прогрессии быстрее, чем сам проект.
Кроме того, работая в составе большой команды, разработчики иногда забывают удалять файлы, которые больше не нужны.
Первое решение, которое приходит на ум, - это поиск каждого файла, где он использовался, чтобы определить, какие из них импортируются или используются в проекте.
Это кажется чрезвычайно утомительным.
Поэтому я решил создать простую утилиту на JS, которая покажет мне, какие файлы сейчас используются, а какие просто бесполезны.
Основная концепция метода заключалась в том, чтобы сначала создать пакетный файл, чтобы определить, какие файлы используются, а затем извлечь из него исходный текст.
Я использовал Webpack, чтобы определить, какие файлы используются в пакете.
Структура проекта:
Полный код можно найти здесь .
Используя Webpack, я создал исходные карты и сохранил их в папке dist.
Следующим шагом будет чтение каждого файла .map, расположенного в папке dist. После открытия файла .map вы увидите следующее:
Вы можете видеть, что ключевые источники содержат подробную информацию о файлах, использованных для создания этого пакета.
Мы должны сформировать массив путей к файлам, читая каждый файл .map. Исходный код
Теперь вызовем функцию findUsedFileFromSourceMap.
Выходные данные будут выглядеть примерно так:
После этого нам нужно преобразовать каждый путь в абсолютный путь. Это то, что мы можем сделать:
Каждый путь будет преобразован в абсолютный путь.
Теперь у меня есть все файлы, которые используются при создании пакета, но мне также нужны все файлы, которые есть в папке проекта.
Это не так сложно, все, что мне нужно сделать, это прочитать файлы моей директории рекурсивно и сохранить их в массиве.
Примечание: Если вам нужно исключить файлы/папки из списка всех файлов проекта. Пожалуйста, передайте массив путей в качестве второго аргумента в getAllProjectFiles
Теперь нам просто нужно вызвать эту функцию
Выходом функции getAllProjectFiles будет:
Теперь мы преобразуем эти пути в абсолютные. Для этого воспользуемся функцией path.resolve().
Теперь, когда у нас есть все необходимое, осталось только сравнить пути к файлам.
Неиспользуемые файлы:
Ура!
Вы можете скачать и играть с кодом.
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.