Структурная типизация в js - это огромная удача для всего мира, так как мы можем использовать стандартные апи даже тогда когда их поддержки нет в рантайме в помощью полифиллов. Я считаю неплохой практикой поднимать у себя локальную копию https://polyfill.io, но много кто бандлит все полифилы к себе. Но есть проблема: если ты забандлил что-то, то иногда стоит удалять это из бандла, так как это уже не надо.
И вот тут начинаются проблемы: полифилы обычно не помечаются в npm как deprecated, из-за чего всякие outdated не будут вижжать, что надо выпилить пакет. Самый простой пример https://www.npmjs.com/package/object-assign. Эта штука уже давно существует у нас во ВСЕХ рантаймах, но 25 лямов скачиваний в неделю - это 25 лямов.
Я не видел решений, которые позволяют нам контролировать зависимости в этой части, так что решил сделать это сам:
@latest
npx cleanup-deps
Пакет, который покажет какие пакеты можно спокойно выпилить. Пример для моего текущего проекта на скриншоте в комментариях.
Из того что в планах сделать в ближайшее время:
- Оформить как нормальный опенсорс проект. Пока для MVP это делать лень
- Добавить как можно больше пакетов в https://github.com/XaveScor/cleanup-deps/blob/70e18fb0765206bac028beaa30664aea81b04971/src/deps.ts
- Добавить работу не только с нодой, но и с browserslist
Так же надеюсь, что будут энтузиасты, которые помогут пополнить список бесполезными пакетами, чтобы сделать этот мир чуток лучше.