Comments 4
Как найти и удалить неиспользуемый JavaScript
Последние лет 5 или больше даже не задумывался над такой проблеммой. Если удалишь что-то используемое - то Typescript тут же ругнется. Вы же используете статический анализатор типов для JavaScript - Typescript? А для финального бандла tree-shaking удалит весь не используемый код. Если конечно вы стандартные import/export юзаете. Вы же их юзаете?
Последние лет 5 или больше даже не задумывался над такой проблеммой.
Проблема замусоренного JavaScript кода ситуативная, нежели повсеместная. Чем более проект легаси, тем больше в нём мусорного кода. Особенно от этого страдают компании, чей профиль не связан с IT (ритейл, производство). Им программисты достаются по остаточному принципу и текучка специалистов достаточно высокая. Код быстро замусоривается.
Если удалишь что-то используемое - то Typescript тут же ругнется.
В том то и дело что сервис помогает быстро вернуть то, что удалил и маякует об это в консоли браузера. Преимущество в том, что восстановление зря удалённых кусков кода происходит машинально, без погружения в код. Просто увидел маяк, нашёл его в коде, раскоментировал. И так сотню раз.
Если конечно вы стандартные import/export юзаете. Вы же их юзаете?
Там используется стандартный хромиум браузер. Страницы открываются в нём и JavaScript код исполняется в нём. И браузер возвращает информацию, какие куски кода отработали, а какие нет.
Подход в статье я рассматривал, когда первый раз в хромиуме увидел анализ использования кода, лет N назад (рабочий вариант, но автоматизация этого процесса чревата неожиданной потерей функциональности и всё равно можно мусора отхватить используемого, отказался от этой идеи)
В итоге пришёл к тому, что нужен оптимизирующий компилятор JS-JS с контекстом сред(ы) исполнения, запретом eval (хотя и для него можно что-то придумать, если рассматривать ситуацию как очередной import) и запретом модификации JS апишек сред(ы) вне "компилируемого" кода (т.е. набор модулей с одной точкой входа как единый контекст компиляции)
Иначе большая часть кода это различный мусор
Известные мне тогда JS-JS компиляторы (один даже через llvm прогонял для оптимизаций) имели слишком жёсткие требования к коду и/или требовали долгой настройки среды компиляции до её использования и/или подключение к сервисам третьих лиц, что делало их неприменимыми для массового использования
Для разрабов компиляторов и пр. может быть интересной задачей, если наложить разумные ограничения на JS код
Аанализатор использования кода в хромиуме предназначен больше для отладки и перфоманс аналитики. А наш сервис поможет легко, просто, машинально, рутинно и последовательно вычищать неиспользуемый JavaScript. Просто тестируйте сайт, если что-то сломалось в консоль об этом появится маяк (строчка текста вида "QSU_462"). Находите этот маяк в коде проекта и раскомменируйте код рядом с ним. Потом продолжаете тестирование и так по кругу.
В итоге пришёл к тому, что нужен оптимизирующий компилятор
Такие инструменты, как правило имеют высокий порог входа и используются в каких-нибудь крупных корпорациях, где объёмы кода проекта настолько огромны, что такие средства - производственная необходимость.
Наш сервис может освоить и студент только изучающий JavaScript. И применять его можно рутино, без предварительной подготовки. А конечный эффект будет лучше, чем от компилятора. Так как удаление кода ещё и сокращает его объём, что ускоряет чтение кода.
Неиспользуемый JavasScript код. Поиск и удаление