поле module использовал в package.json у модулей, если есть... Это уменьшило размер бандла (здесь и далее продакшн ios минификация) примерно на 300 байт.
Я удивился и добавил туда ещё процессинг esnext:main, что увеличило размер бандла ))) Озадачившись этим странным поведением, я полез разбираться... и вот, такая картина получается (это только то, что в node_modules лежит): http://vovkasm.skitch.vovkasm.org/bundle-size_2160060C.png
Это второй вариант (без esnext:main, там оказалось, что оно moment.js два раза пакует, уж не знаю почему).
Получается, что metro вообще чтоль дерево импортов не перетряхивает? Мало того, что весь RN впакован, в это я могу поверить, потому что с haste они не могут понять что кому надо и где используется, но обычные импорты тоже... вот на картинке есть react-native-firebase, у меня в приложении ровно три импорта для него в трех файлах:
import { analytics } from 'react-native-firebase'
import { messaging } from 'react-native-firebase'
import { messaging, notifications } from 'react-native-firebase'
А в бандле честно лежит database... очень странно, в общем... сейчас ещё проверю, не тайпскрипт ли там мешает этой оптимизации...
moment.js вообще загадочная либа) если снять схему зависимостей webpack, то окажется что момент в бандл тянет все локализации, даже если ниодну из них не подключать)
Обсуждают сегодня