Как загрузить модули ES6 отдельно (по мере необходимости) ака. Дрожание деревьев?

Прямо сейчас я просматриваю свое приложение, меняя экземпляры этого шаблона:

import {Grid, Row, Col} from 'react-bootstrap'

в:

import {Grid, Row, Col} from '../react-bootstrap'

где react-bootstrap.js простой файл в корне моего проекта с выборочным импортом необходимых мне модулей ES6 из этого пакета NPM:

import Grid  from 'react-bootstrap/es/Grid'
import Col   from 'react-bootstrap/es/Col'
import Row   from 'react-bootstrap/es/Row'

export {Grid, Col, Row}

Сделав это для нескольких пакетов, я смог уменьшить размер файла пакета более чем на 50%.

Есть ли модуль или плагин WebPack, который может делать это автоматически для любого пакета?

Если бы это преобразование (то есть только включение в комплект того, что явно импортировано, вместо всей библиотеки) было применено рекурсивно ко всему дереву пакетов, я уверен, мы увидим существенную разницу в размере.


Редактировать: как указывает Swivel, это известно как встряхивание дерева и должно выполняться автоматически Webpack 3+ с UglifyJSPlugin, который включен в производственную конфигурацию из сценариев реагирования, которые я использую.

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

1 ответ

Я использовал для поиска этого и нашел эту статью. Это очень полезно. Я надеюсь, что это работает для вас.

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

Для записи, удаление мертвого кода - это не то же самое, что дрожание дерева. Потрясение дерева разрушает неиспользуемые зависимости между модулями. Устранение мертвого кода в одном модуле. Uglify.js знает только об одном модуле за раз, поэтому он не может сотрясать дерево: он просто устраняет мертвый код. Так что тот факт, что вы используете UglifyJSPlugin не имеет значения, трясется ли дерево в вашей среде сборки.

Другие вопросы по тегам